11package gencfg
22
33import (
4- "fmt"
4+ "os"
5+ "strings"
56
67 "github.com/goplus/llcppg/cmd/internal/base"
8+ "github.com/goplus/llcppg/cmd/llcppcfg/gen"
79)
810
911var Cmd = & base.Command {
@@ -16,5 +18,45 @@ func init() {
1618}
1719
1820func runCmd (cmd * base.Command , args []string ) {
19- fmt .Printf ("todo generate llcpp.cfg" )
21+ var dependencies string
22+ var cpp , help , tab bool
23+ cmd .Flag .BoolVar (& cpp , "cpp" , false , "if it is C++ lib" )
24+ cmd .Flag .BoolVar (& help , "help" , false , "print help message" )
25+ cmd .Flag .BoolVar (& tab , "tab" , true , "generate .cfg config file with tab indent" )
26+ extsString := ""
27+ cmd .Flag .StringVar (& extsString , "exts" , ".h" , "extra include file extensions for example -exts=\" .h .hpp .hh\" " )
28+ excludes := ""
29+ cmd .Flag .StringVar (& excludes , "excludes" , "" , "exclude all header files in subdir of include expamle -excludes=\" internal impl\" " )
30+ cmd .Flag .StringVar (& dependencies , "deps" , "" , "deps for autofilling dependencies" )
31+ if err := cmd .Flag .Parse (args ); err != nil {
32+ return
33+ }
34+ name := ""
35+ if len (cmd .Flag .Args ()) > 0 {
36+ name = cmd .Flag .Arg (0 )
37+ }
38+
39+ exts := strings .Fields (extsString )
40+ deps := strings .Fields (dependencies )
41+
42+ excludeSubdirs := []string {}
43+ if len (excludes ) > 0 {
44+ excludeSubdirs = strings .Fields (excludes )
45+ }
46+ var flagMode gen.FlagMode
47+ if cpp {
48+ flagMode |= gen .WithCpp
49+ }
50+ if tab {
51+ flagMode |= gen .WithTab
52+ }
53+ buf , err := gen .Do (gen .NewConfig (name , flagMode , exts , deps , excludeSubdirs ))
54+ if err != nil {
55+ panic (err )
56+ }
57+ outFile := "./llcppg.cfg"
58+ err = os .WriteFile (outFile , buf , 0600 )
59+ if err != nil {
60+ panic (err )
61+ }
2062}
0 commit comments