@@ -51,48 +51,56 @@ Action:
51
51
Language:
52
52
rust for rust codes
53
53
go for golang codes
54
- URI:
55
- for action parse: the directory path of the repo
56
- for action write: the file path of the UniAST for writer
57
54
`
58
55
59
56
func main () {
60
57
flags := flag .NewFlagSet ("abcoder" , flag .ExitOnError )
58
+
59
+ flagHelp := flags .Bool ("h" , false , "Show help message." )
60
+
61
+ flagVerbose := flags .Bool ("verbose" , false , "Verbose mode." )
62
+
63
+ flagOutput := flags .String ("o" , "" , "Output path." )
64
+
65
+ var opts lang.ParseOptions
66
+ flags .BoolVar (& opts .LoadExternalSymbol , "load-external-symbol" , false , "load external symbols into results" )
67
+ flags .BoolVar (& opts .NoNeedComment , "no-need-comment" , false , "do not need comment (only works for Go now)" )
68
+ flags .BoolVar (& opts .NeedTest , "need-test" , false , "need parse test files (only works for Go now)" )
69
+ flags .Var ((* StringArray )(& opts .Excludes ), "exclude" , "exclude files or directories, support multiple values" )
70
+ flags .StringVar (& opts .RepoID , "repo-id" , "" , "specify the repo id" )
71
+ flagLsp := flags .String ("lsp" , "" , "Specify the language server path." )
72
+
73
+ var wopts lang.WriteOptions
74
+ flags .StringVar (& wopts .Compiler , "compiler" , "" , "destination compiler path." )
75
+
61
76
flags .Usage = func () {
62
- fmt .Fprintf (os .Stderr , Usage )
77
+ fmt .Fprint (os .Stderr , Usage )
63
78
fmt .Fprintf (os .Stderr , "Flags:\n " )
64
79
flags .PrintDefaults ()
65
80
}
66
81
67
82
if len (os .Args ) < 4 {
68
- fmt .Fprintf (os .Stderr , Usage )
83
+ // call flags.Usage()
84
+ flags .Usage ()
69
85
os .Exit (1 )
70
86
}
71
-
72
87
action := strings .ToLower (os .Args [1 ])
73
88
language := uniast .NewLanguage (os .Args [2 ])
74
89
if language == uniast .Unknown {
75
90
fmt .Fprintf (os .Stderr , "unsupported language: %s\n " , os .Args [2 ])
76
91
os .Exit (1 )
77
92
}
78
-
79
93
uri := os .Args [3 ]
80
94
81
- flagVerbose := flags .Bool ("verbose" , false , "Verbose mode." )
82
-
83
- flagOutput := flags .String ("o" , "" , "Output path." )
95
+ flags .Parse (os .Args [4 :])
96
+ if flagHelp != nil && * flagHelp {
97
+ flags .Usage ()
98
+ os .Exit (0 )
99
+ }
84
100
85
101
switch action {
86
102
case "parse" :
87
- var opts lang.ParseOptions
88
-
89
- flags .BoolVar (& opts .LoadExternalSymbol , "load-external-symbol" , false , "load external symbols into results" )
90
- flags .BoolVar (& opts .NoNeedComment , "no-need-comment" , false , "do not need comment (only works for Go now)" )
91
- flags .BoolVar (& opts .NeedTest , "need-test" , false , "need parse test files (only works for Go now)" )
92
- flags .Var ((* StringArray )(& opts .Excludes ), "exclude" , "exclude files or directories, support multiple values" )
93
- flagLsp := flags .String ("lsp" , "" , "Specify the language server path." )
94
103
95
- flags .Parse (os .Args [4 :])
96
104
if flagVerbose != nil && * flagVerbose {
97
105
log .SetLogLevel (log .DebugLevel )
98
106
opts .Verbose = true
@@ -123,21 +131,16 @@ func main() {
123
131
os .Exit (1 )
124
132
}
125
133
126
- var opts lang.WriteOptions
127
- flags .StringVar (& opts .Compiler , "compiler" , "" , "destination compiler path." )
128
-
129
- flags .Parse (os .Args [4 :])
130
-
131
134
if flagVerbose != nil && * flagVerbose {
132
135
log .SetLogLevel (log .DebugLevel )
133
136
}
134
137
if flagOutput != nil && * flagOutput != "" {
135
- opts .OutputDir = * flagOutput
138
+ wopts .OutputDir = * flagOutput
136
139
} else {
137
- opts .OutputDir = filepath .Base (repo .Name )
140
+ wopts .OutputDir = filepath .Base (repo .Name )
138
141
}
139
142
140
- if err := lang .Write (context .Background (), repo , opts ); err != nil {
143
+ if err := lang .Write (context .Background (), repo , wopts ); err != nil {
141
144
log .Error ("Failed to write: %v\n " , err )
142
145
os .Exit (1 )
143
146
}
0 commit comments