From 293219d3d735f247dd01d40de5ee4f8bdbdc5493 Mon Sep 17 00:00:00 2001 From: Tarun Koyalwar Date: Mon, 20 May 2024 00:28:24 +0530 Subject: [PATCH 1/4] allow custom args --- .github/workflows/build-test.yml | 2 +- .github/workflows/lint-test.yml | 2 +- go.mod | 3 ++- go.sum | 3 +++ goflags.go | 16 ++++++++++++++-- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 1991ac2..554932f 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -12,7 +12,7 @@ jobs: name: Test Builds strategy: matrix: - go-version: [1.20.x] + go-version: [1.21.x] os: [ubuntu-latest, windows-latest, macOS-latest] runs-on: ${{ matrix.os }} diff --git a/.github/workflows/lint-test.yml b/.github/workflows/lint-test.yml index e75e50c..c5b9f6c 100644 --- a/.github/workflows/lint-test.yml +++ b/.github/workflows/lint-test.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: 1.20.x + go-version: 1.21.x - name: Run golangci-lint uses: golangci/golangci-lint-action@v3.3.0 with: diff --git a/go.mod b/go.mod index 76ff44c..e20d1ca 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/projectdiscovery/goflags -go 1.20 +go 1.21 require ( github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08 @@ -11,6 +11,7 @@ require ( ) require ( + github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/mattn/go-isatty v0.0.19 // indirect github.com/miekg/dns v1.1.56 // indirect github.com/projectdiscovery/blackrock v0.0.1 // indirect diff --git a/go.sum b/go.sum index b6dd9e4..db8462b 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08 h1:ox2F0PSMlrAAiAdk github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08/go.mod h1:pCxVEbcm3AMg7ejXyorUXi6HQCzOIBf7zEDVPtw0/U4= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= @@ -39,6 +41,7 @@ golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= diff --git a/goflags.go b/goflags.go index 9b40f6d..3432734 100644 --- a/goflags.go +++ b/goflags.go @@ -14,6 +14,7 @@ import ( "time" "github.com/cnf/structhash" + "github.com/google/shlex" fileutil "github.com/projectdiscovery/utils/file" folderutil "github.com/projectdiscovery/utils/folder" permissionutil "github.com/projectdiscovery/utils/permission" @@ -106,10 +107,14 @@ func (flagSet *FlagSet) MergeConfigFile(file string) error { } // Parse parses the flags provided to the library. -func (flagSet *FlagSet) Parse() error { +func (flagSet *FlagSet) Parse(args ...string) error { flagSet.CommandLine.SetOutput(os.Stdout) flagSet.CommandLine.Usage = flagSet.usageFunc - _ = flagSet.CommandLine.Parse(os.Args[1:]) + toParse := os.Args[1:] + if len(args) > 0 { + toParse = args + } + _ = flagSet.CommandLine.Parse(toParse) configFilePath, _ := flagSet.GetConfigFilePath() // migrate data from old config dir to new one @@ -812,3 +817,10 @@ func isZeroValue(f *flag.Flag, value string) bool { func normalizeGroupDescription(description string) string { return strings.ToUpper(description) } + +// GetArgsFromString allows splitting a string into arguments +// following the same rules as the shell. +func GetArgsFromString(str string) []string { + args, _ := shlex.Split(str) + return args +} From 49ef7f416bebc8e193e7405218e167d50e7b1fa4 Mon Sep 17 00:00:00 2001 From: Tarun Koyalwar Date: Mon, 20 May 2024 00:43:55 +0530 Subject: [PATCH 2/4] bump utils --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index e20d1ca..6b057f3 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( github.com/gorilla/css v1.0.0 // indirect github.com/microcosm-cc/bluemonday v1.0.25 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/projectdiscovery/utils v0.0.93 + github.com/projectdiscovery/utils v0.0.93-0.20240519190012-c4bf7513228c github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect golang.org/x/net v0.23.0 // indirect ) diff --git a/go.sum b/go.sum index db8462b..1c171b2 100644 --- a/go.sum +++ b/go.sum @@ -22,6 +22,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/projectdiscovery/blackrock v0.0.1 h1:lHQqhaaEFjgf5WkuItbpeCZv2DUIE45k0VbGJyft6LQ= github.com/projectdiscovery/blackrock v0.0.1/go.mod h1:ANUtjDfaVrqB453bzToU+YB4cUbvBRpLvEwoWIwlTss= +github.com/projectdiscovery/utils v0.0.93-0.20240519190012-c4bf7513228c h1:6avWNsKxtJ9gWVg0SuHHjfGJU4I/ra0jtcJ3651U7fI= +github.com/projectdiscovery/utils v0.0.93-0.20240519190012-c4bf7513228c/go.mod h1:2+mWzk5FeYdK9imo5eLk6oVeih0G0wsTff1pzBAh9tk= github.com/projectdiscovery/utils v0.0.93 h1:IMZFsmQFYZUf7rxpBoZj+53FsNDC/vHsXA+4B4GuGeg= github.com/projectdiscovery/utils v0.0.93/go.mod h1:2+mWzk5FeYdK9imo5eLk6oVeih0G0wsTff1pzBAh9tk= github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA= From 63f18a9552a7c631db33ace423bb04f4321dbced Mon Sep 17 00:00:00 2001 From: Tarun Koyalwar Date: Mon, 20 May 2024 00:44:12 +0530 Subject: [PATCH 3/4] go mod tidy --- go.mod | 2 +- go.sum | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6b057f3..e4ec98e 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.21 require ( github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08 + github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.9.0 golang.org/x/exp v0.0.0-20221205204356-47842c84f3db @@ -11,7 +12,6 @@ require ( ) require ( - github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/mattn/go-isatty v0.0.19 // indirect github.com/miekg/dns v1.1.56 // indirect github.com/projectdiscovery/blackrock v0.0.1 // indirect diff --git a/go.sum b/go.sum index 1c171b2..9c4eecf 100644 --- a/go.sum +++ b/go.sum @@ -24,8 +24,6 @@ github.com/projectdiscovery/blackrock v0.0.1 h1:lHQqhaaEFjgf5WkuItbpeCZv2DUIE45k github.com/projectdiscovery/blackrock v0.0.1/go.mod h1:ANUtjDfaVrqB453bzToU+YB4cUbvBRpLvEwoWIwlTss= github.com/projectdiscovery/utils v0.0.93-0.20240519190012-c4bf7513228c h1:6avWNsKxtJ9gWVg0SuHHjfGJU4I/ra0jtcJ3651U7fI= github.com/projectdiscovery/utils v0.0.93-0.20240519190012-c4bf7513228c/go.mod h1:2+mWzk5FeYdK9imo5eLk6oVeih0G0wsTff1pzBAh9tk= -github.com/projectdiscovery/utils v0.0.93 h1:IMZFsmQFYZUf7rxpBoZj+53FsNDC/vHsXA+4B4GuGeg= -github.com/projectdiscovery/utils v0.0.93/go.mod h1:2+mWzk5FeYdK9imo5eLk6oVeih0G0wsTff1pzBAh9tk= github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA= github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= From f48ad9349eb1496930432a6419cefd1a7c3db2a2 Mon Sep 17 00:00:00 2001 From: Tarun Koyalwar Date: Fri, 24 May 2024 20:41:05 +0530 Subject: [PATCH 4/4] bump utils --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e4ec98e..39b4ea4 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( github.com/gorilla/css v1.0.0 // indirect github.com/microcosm-cc/bluemonday v1.0.25 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/projectdiscovery/utils v0.0.93-0.20240519190012-c4bf7513228c + github.com/projectdiscovery/utils v0.1.0 github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect golang.org/x/net v0.23.0 // indirect ) diff --git a/go.sum b/go.sum index 9c4eecf..d9ecb9b 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/projectdiscovery/blackrock v0.0.1 h1:lHQqhaaEFjgf5WkuItbpeCZv2DUIE45k0VbGJyft6LQ= github.com/projectdiscovery/blackrock v0.0.1/go.mod h1:ANUtjDfaVrqB453bzToU+YB4cUbvBRpLvEwoWIwlTss= -github.com/projectdiscovery/utils v0.0.93-0.20240519190012-c4bf7513228c h1:6avWNsKxtJ9gWVg0SuHHjfGJU4I/ra0jtcJ3651U7fI= -github.com/projectdiscovery/utils v0.0.93-0.20240519190012-c4bf7513228c/go.mod h1:2+mWzk5FeYdK9imo5eLk6oVeih0G0wsTff1pzBAh9tk= +github.com/projectdiscovery/utils v0.1.0 h1:r7Z/s2CBktJ0bnSN410lzOhD8S/0IxmzmFxkQudYKps= +github.com/projectdiscovery/utils v0.1.0/go.mod h1:RaBdJLTKF5FKZ/RtMeccqFBtpsSjaggVw6/oPTpDD40= github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA= github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=