@@ -15,83 +15,49 @@ var cliPath string
1515var initialFqbn string
1616var initialBoardName string
1717var enableLogging bool
18+ var loggingBasePath string
1819
1920func main () {
20- flag .StringVar (& clangdPath , "clangd" , "clangd" ,
21- "Path to clangd executable" )
22- flag .StringVar (& cliPath , "cli" , "arduino-cli" ,
23- "Path to arduino-cli executable" )
24- flag .StringVar (& initialFqbn , "fqbn" , "arduino:avr:uno" ,
25- "Fully qualified board name to use initially (can be changed via JSON-RPC)" )
26- flag .StringVar (& initialBoardName , "board-name" , "" ,
27- "User-friendly board name to use initially (can be changed via JSON-RPC)" )
28- flag .BoolVar (& enableLogging , "log" , false ,
29- "Enable logging to files" )
21+ flag .StringVar (& clangdPath , "clangd" , "clangd" , "Path to clangd executable" )
22+ flag .StringVar (& cliPath , "cli" , "arduino-cli" , "Path to arduino-cli executable" )
23+ flag .StringVar (& initialFqbn , "fqbn" , "arduino:avr:uno" , "Fully qualified board name to use initially (can be changed via JSON-RPC)" )
24+ flag .StringVar (& initialBoardName , "board-name" , "" , "User-friendly board name to use initially (can be changed via JSON-RPC)" )
25+ flag .BoolVar (& enableLogging , "log" , false , "Enable logging to files" )
26+ flag .StringVar (& loggingBasePath , "logpath" , "." , "Location where to write logging files to when logging is enabled" )
3027 flag .Parse ()
3128
32- var stdinLog , stdoutLog , clangdinLog , clangdoutLog , clangderrLog io.Writer
29+ // var stdinLog, stdoutLog, clangdinLog, clangdoutLog, clangderrLog io.Writer
30+ var logStreams * handler.StreamLogger
3331 if enableLogging {
34- logFile , stdinLogFile , stdoutLogFile , clangdinLogFile , clangdoutLogFile , clangderrLogFile := createLogFiles ()
35- defer logFile .Close ()
36- defer stdinLogFile .Close ()
37- defer stdoutLogFile .Close ()
38- defer clangdinLogFile .Close ()
39- defer clangdoutLogFile .Close ()
40- defer clangderrLogFile .Close ()
41- log .SetOutput (logFile )
42- stdinLog , stdoutLog , clangdinLog , clangdoutLog , clangderrLog = stdinLogFile , stdoutLogFile ,
43- clangdinLogFile , clangdoutLogFile , clangderrLogFile
32+ var err error
33+ logStreams , err = handler .NewStreamLogger (loggingBasePath )
34+ if err != nil {
35+ log .Fatal (err )
36+ }
37+ defer logStreams .Close ()
38+
39+ log .SetOutput (logStreams .Default )
4440 } else {
41+ logStreams = handler .NewNoopLogger ()
4542 log .SetOutput (os .Stderr )
4643 }
4744
4845 handler .Setup (cliPath , enableLogging )
4946 initialBoard := handler.Board {Fqbn : initialFqbn , Name : initialBoardName }
50- inoHandler := handler .NewInoHandler (os .Stdin , os .Stdout , stdinLog , stdoutLog , startClangd ,
51- clangdinLog , clangdoutLog , clangderrLog , initialBoard )
47+ inoHandler := handler .NewInoHandler (os .Stdin , os .Stdout , logStreams , startClangd , initialBoard )
5248 defer inoHandler .StopClangd ()
5349 <- inoHandler .StdioConn .DisconnectNotify ()
5450}
5551
56- func createLogFiles () (logFile , stdinLog , stdoutLog , clangdinLog , clangdoutLog , clangderrLog * os.File ) {
57- var err error
58- logFile , err = os .OpenFile ("inols.log" , os .O_WRONLY | os .O_CREATE | os .O_APPEND , 0666 )
59- if err != nil {
60- panic (err )
61- }
62- stdinLog , err = os .OpenFile ("inols-stdin.log" , os .O_WRONLY | os .O_CREATE , 0666 )
63- if err != nil {
64- panic (err )
65- }
66- stdoutLog , err = os .OpenFile ("inols-stdout.log" , os .O_WRONLY | os .O_CREATE , 0666 )
67- if err != nil {
68- panic (err )
69- }
70- clangdinLog , err = os .OpenFile ("inols-clangd-in.log" , os .O_WRONLY | os .O_CREATE , 0666 )
71- if err != nil {
72- panic (err )
73- }
74- clangdoutLog , err = os .OpenFile ("inols-clangd-out.log" , os .O_WRONLY | os .O_CREATE , 0666 )
75- if err != nil {
76- panic (err )
77- }
78- clangderrLog , err = os .OpenFile ("inols-clangd-err.log" , os .O_WRONLY | os .O_CREATE , 0666 )
79- if err != nil {
80- panic (err )
81- }
82- return
83- }
84-
8552func startClangd () (clangdIn io.WriteCloser , clangdOut io.ReadCloser , clangdErr io.ReadCloser ) {
8653 if enableLogging {
8754 log .Println ("Starting clangd process:" , clangdPath )
8855 }
8956 clangdCmd := exec .Command (clangdPath )
9057 clangdIn , _ = clangdCmd .StdinPipe ()
9158 clangdOut , _ = clangdCmd .StdoutPipe ()
92- if enableLogging {
93- clangdErr , _ = clangdCmd .StderrPipe ()
94- }
59+ clangdErr , _ = clangdCmd .StderrPipe ()
60+
9561 err := clangdCmd .Start ()
9662 if err != nil {
9763 panic (err )
0 commit comments