@@ -15,83 +15,49 @@ var cliPath string
15
15
var initialFqbn string
16
16
var initialBoardName string
17
17
var enableLogging bool
18
+ var loggingBasePath string
18
19
19
20
func 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" )
30
27
flag .Parse ()
31
28
32
- var stdinLog , stdoutLog , clangdinLog , clangdoutLog , clangderrLog io.Writer
29
+ // var stdinLog, stdoutLog, clangdinLog, clangdoutLog, clangderrLog io.Writer
30
+ var logStreams * handler.StreamLogger
33
31
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 )
44
40
} else {
41
+ logStreams = handler .NewNoopLogger ()
45
42
log .SetOutput (os .Stderr )
46
43
}
47
44
48
45
handler .Setup (cliPath , enableLogging )
49
46
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 )
52
48
defer inoHandler .StopClangd ()
53
49
<- inoHandler .StdioConn .DisconnectNotify ()
54
50
}
55
51
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
-
85
52
func startClangd () (clangdIn io.WriteCloser , clangdOut io.ReadCloser , clangdErr io.ReadCloser ) {
86
53
if enableLogging {
87
54
log .Println ("Starting clangd process:" , clangdPath )
88
55
}
89
56
clangdCmd := exec .Command (clangdPath )
90
57
clangdIn , _ = clangdCmd .StdinPipe ()
91
58
clangdOut , _ = clangdCmd .StdoutPipe ()
92
- if enableLogging {
93
- clangdErr , _ = clangdCmd .StderrPipe ()
94
- }
59
+ clangdErr , _ = clangdCmd .StderrPipe ()
60
+
95
61
err := clangdCmd .Start ()
96
62
if err != nil {
97
63
panic (err )
0 commit comments