@@ -51,48 +51,56 @@ Action:
5151Language:
5252 rust for rust codes
5353 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
5754`
5855
5956func main () {
6057 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+
6176 flags .Usage = func () {
62- fmt .Fprintf (os .Stderr , Usage )
77+ fmt .Fprint (os .Stderr , Usage )
6378 fmt .Fprintf (os .Stderr , "Flags:\n " )
6479 flags .PrintDefaults ()
6580 }
6681
6782 if len (os .Args ) < 4 {
68- fmt .Fprintf (os .Stderr , Usage )
83+ // call flags.Usage()
84+ flags .Usage ()
6985 os .Exit (1 )
7086 }
71-
7287 action := strings .ToLower (os .Args [1 ])
7388 language := uniast .NewLanguage (os .Args [2 ])
7489 if language == uniast .Unknown {
7590 fmt .Fprintf (os .Stderr , "unsupported language: %s\n " , os .Args [2 ])
7691 os .Exit (1 )
7792 }
78-
7993 uri := os .Args [3 ]
8094
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+ }
84100
85101 switch action {
86102 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." )
94103
95- flags .Parse (os .Args [4 :])
96104 if flagVerbose != nil && * flagVerbose {
97105 log .SetLogLevel (log .DebugLevel )
98106 opts .Verbose = true
@@ -123,21 +131,16 @@ func main() {
123131 os .Exit (1 )
124132 }
125133
126- var opts lang.WriteOptions
127- flags .StringVar (& opts .Compiler , "compiler" , "" , "destination compiler path." )
128-
129- flags .Parse (os .Args [4 :])
130-
131134 if flagVerbose != nil && * flagVerbose {
132135 log .SetLogLevel (log .DebugLevel )
133136 }
134137 if flagOutput != nil && * flagOutput != "" {
135- opts .OutputDir = * flagOutput
138+ wopts .OutputDir = * flagOutput
136139 } else {
137- opts .OutputDir = filepath .Base (repo .Name )
140+ wopts .OutputDir = filepath .Base (repo .Name )
138141 }
139142
140- if err := lang .Write (context .Background (), repo , opts ); err != nil {
143+ if err := lang .Write (context .Background (), repo , wopts ); err != nil {
141144 log .Error ("Failed to write: %v\n " , err )
142145 os .Exit (1 )
143146 }
0 commit comments