Skip to content

Commit ea06d9b

Browse files
committed
gogensig:assign cfg path
1 parent 13bd6c9 commit ea06d9b

File tree

6 files changed

+69
-40
lines changed

6 files changed

+69
-40
lines changed

_xtool/llcppsigfetch/llcppsigfetch.go

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"fmt"
2121
"io"
2222
"os"
23-
"strconv"
2423
"strings"
2524

2625
"github.com/goplus/llcppg/_xtool/llcppsigfetch/parse"
@@ -33,7 +32,7 @@ import (
3332
)
3433

3534
func main() {
36-
ags, remainArgs := args.ParseArgs(os.Args[1:], map[string]bool{
35+
ags, remainArgs := args.ParseArgs(os.Args[1:], args.LLCPPG_CFG, map[string]bool{
3736
"--extract": true,
3837
})
3938

@@ -66,11 +65,11 @@ func main() {
6665
os.Exit(1)
6766
}
6867
case strings.HasPrefix(arg, "-out="):
69-
out = parseBoolArg(arg, "out", false)
68+
out = args.BoolArg(arg, false)
7069
case strings.HasPrefix(arg, "-temp="):
71-
isTemp = parseBoolArg(arg, "temp", false)
70+
isTemp = args.BoolArg(arg, false)
7271
case strings.HasPrefix(arg, "-cpp="):
73-
isCpp = parseBoolArg(arg, "cpp", true)
72+
isCpp = args.BoolArg(arg, true)
7473
default:
7574
otherArgs = append(otherArgs, arg)
7675
}
@@ -223,17 +222,3 @@ func outputInfo(context *parse.Context, outputToFile bool) {
223222
defer info.Delete()
224223
outputResult(str, outputToFile)
225224
}
226-
227-
func parseBoolArg(arg, name string, defaultValue bool) bool {
228-
parts := strings.SplitN(arg, "=", 2)
229-
if len(parts) != 2 {
230-
fmt.Fprintf(os.Stderr, "Warning: Invalid -%s= argument, defaulting to %v\n", name, defaultValue)
231-
return defaultValue
232-
}
233-
value, err := strconv.ParseBool(parts[1])
234-
if err != nil {
235-
fmt.Fprintf(os.Stderr, "Warning: Invalid -%s= value '%s', defaulting to %v\n", name, parts[1], defaultValue)
236-
return defaultValue
237-
}
238-
return value
239-
}

_xtool/llcppsymg/_cmptest/args_test/args.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func TestParseArgs() {
5151
fmt.Printf("Test case: %s\n", tc.name)
5252
fmt.Printf("Input: %v\n", tc.input)
5353

54-
result, filteredArgs := args.ParseArgs(tc.input, swflags)
54+
result, filteredArgs := args.ParseArgs(tc.input, args.LLCPPG_CFG, swflags)
5555

5656
fmt.Printf("Help: %v\n", result.Help)
5757
fmt.Printf("Verbose: %v\n", result.Verbose)

_xtool/llcppsymg/args/args.go

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
package args
22

3-
import "strings"
3+
import (
4+
"strconv"
5+
"strings"
6+
)
7+
8+
const LLCPPG_CFG = "llcppg.cfg"
9+
const LLCPPG_SYMB = "llcppg.symb.json"
10+
const LLCPPG_SIGFETCH = "llcppg.sigfetch.json"
11+
const LLCPPG_PUB = "llcppg.pub"
412

513
type Args struct {
614
Help bool
@@ -9,7 +17,7 @@ type Args struct {
917
CfgFile string
1018
}
1119

12-
func ParseArgs(args []string, swflags map[string]bool) (*Args, []string) {
20+
func ParseArgs(args []string, defaultCfgFile string, swflags map[string]bool) (*Args, []string) {
1321
result := &Args{}
1422
filteredArgs := []string{}
1523
for i := 0; i < len(args); i++ {
@@ -45,7 +53,27 @@ func ParseArgs(args []string, swflags map[string]bool) (*Args, []string) {
4553
}
4654
}
4755
if result.CfgFile == "" {
48-
result.CfgFile = "llcppg.cfg"
56+
result.CfgFile = defaultCfgFile
4957
}
5058
return result, filteredArgs
5159
}
60+
61+
func BoolArg(arg string, defaultValue bool) bool {
62+
parts := strings.SplitN(arg, "=", 2)
63+
if len(parts) != 2 {
64+
return defaultValue
65+
}
66+
value, err := strconv.ParseBool(parts[1])
67+
if err != nil {
68+
return defaultValue
69+
}
70+
return value
71+
}
72+
73+
func StringArg(arg string, defaultValue string) string {
74+
parts := strings.SplitN(arg, "=", 2)
75+
if len(parts) != 2 {
76+
return defaultValue
77+
}
78+
return parts[1]
79+
}

_xtool/llcppsymg/llcppsymg.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import (
3131
func main() {
3232
symbFile := "llcppg.symb.json"
3333

34-
ags, _ := args.ParseArgs(os.Args[1:], nil)
34+
ags, _ := args.ParseArgs(os.Args[1:], args.LLCPPG_CFG, nil)
3535

3636
var data []byte
3737
var err error

cmd/gogensig/gogensig.go

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@
1717
package main
1818

1919
import (
20+
"fmt"
2021
"io"
2122
"os"
2223
"path/filepath"
24+
"strings"
2325

26+
"github.com/goplus/llcppg/_xtool/llcppsymg/args"
2427
"github.com/goplus/llcppg/cmd/gogensig/config"
2528
"github.com/goplus/llcppg/cmd/gogensig/convert"
2629
"github.com/goplus/llcppg/cmd/gogensig/convert/basic"
@@ -36,25 +39,38 @@ func runGoCmds(wd, pkg string) {
3639
}
3740

3841
func main() {
39-
var data []byte
40-
var err error
41-
if len(os.Args) <= 1 {
42-
os.Exit(1)
42+
ags, remainArgs := args.ParseArgs(os.Args[1:], args.LLCPPG_SIGFETCH, nil)
43+
44+
if ags.Help {
45+
fmt.Fprintln(os.Stderr, "Usage: gogensig [sigfetch-file]")
46+
return
4347
}
4448

45-
sigfetchFile := "llcppg.sigfetch.json"
46-
if len(os.Args) > 1 {
47-
sigfetchFile = os.Args[1]
49+
if ags.Verbose {
50+
convert.SetDebug(convert.DbgFlagAll)
4851
}
4952

50-
if sigfetchFile == "-" {
53+
var data []byte
54+
var err error
55+
if ags.UseStdin {
5156
data, err = io.ReadAll(os.Stdin)
5257
} else {
53-
data, err = os.ReadFile(sigfetchFile)
58+
data, err = os.ReadFile(ags.CfgFile)
5459
}
5560
check(err)
5661

57-
conf, err := config.GetCppgCfgFromPath("./llcppg.cfg")
62+
var cfg string
63+
for i := 0; i < len(remainArgs); i++ {
64+
arg := remainArgs[i]
65+
if strings.HasPrefix(arg, "-cfg=") {
66+
cfg = args.StringArg(arg, args.LLCPPG_CFG)
67+
}
68+
}
69+
if cfg == "" {
70+
cfg = args.LLCPPG_CFG
71+
}
72+
73+
conf, err := config.GetCppgCfgFromPath(cfg)
5874
check(err)
5975

6076
wd, err := os.Getwd()
@@ -65,8 +81,8 @@ func main() {
6581
p, _, err := basic.ConvertProcesser(&basic.Config{
6682
AstConvertConfig: convert.AstConvertConfig{
6783
PkgName: conf.Name,
84+
CfgFile: filepath.Join(wd, cfg),
6885
SymbFile: filepath.Join(wd, "llcppg.symb.json"),
69-
CfgFile: filepath.Join(wd, "llcppg.cfg"),
7086
PubFile: filepath.Join(wd, "llcppg.pub"),
7187
},
7288
})

llcppg.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,18 @@ func llcppsigfetch(conf []byte, out *io.PipeWriter) {
5656
out.Close()
5757
}
5858

59-
func gogensig(in io.Reader) error {
60-
cmd := command("gogensig", "-")
59+
func gogensig(in io.Reader, cfg string) error {
60+
cmd := command("gogensig", "-", "-cfg="+cfg)
6161
cmd.Stdin = in
6262
cmd.Stdout = os.Stdout
6363
cmd.Stderr = os.Stderr
6464
return cmd.Run()
6565
}
6666

6767
func main() {
68-
ags, _ := args.ParseArgs(os.Args[1:], nil)
68+
ags, _ := args.ParseArgs(os.Args[1:], args.LLCPPG_CFG, nil)
6969
if ags.Help {
70-
fmt.Fprintln(os.Stderr, "Usage: llcppg [config-file]")
70+
fmt.Fprintln(os.Stderr, "Usage: llcppg [config-file] [-v]")
7171
return
7272
}
7373
verbose = ags.Verbose
@@ -90,7 +90,7 @@ func main() {
9090
r, w := io.Pipe()
9191
go llcppsigfetch(b, w)
9292

93-
err = gogensig(r)
93+
err = gogensig(r, ags.CfgFile)
9494
check(err)
9595
}
9696

0 commit comments

Comments
 (0)