aboutsummaryrefslogtreecommitdiff
path: root/flag.go
diff options
context:
space:
mode:
authorAlex Ogier <[email protected]>2012-12-20 10:45:41 -0800
committerAlex Ogier <[email protected]>2012-12-20 10:45:41 -0800
commita7be1c8beca28c928f9bd874b97e32fb3b02baef (patch)
treec12c281ae78242733e933df99ce43bdb8e010ebc /flag.go
parentfc678a46fb7fcef2879c7361da75cd77ec172444 (diff)
parent6c61b06dffa80d2a272c8c2a79448954d9893c74 (diff)
Merge pull request #2 from alecthomas/master
Add ability to disable interspersed option support.
Diffstat (limited to 'flag.go')
-rw-r--r--flag.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/flag.go b/flag.go
index 0154001..743e011 100644
--- a/flag.go
+++ b/flag.go
@@ -271,6 +271,7 @@ type FlagSet struct {
exitOnError bool // does the program exit if there's an error?
errorHandling ErrorHandling
output io.Writer // nil means stderr; use out() accessor
+ interspersed bool // allow interspersed option/non-option args
}
// A Flag represents the state of a flag.
@@ -927,6 +928,11 @@ func (f *FlagSet) parseArgs(args []string) error {
s := args[0]
args = args[1:]
if len(s) == 0 || s[0] != '-' || len(s) == 1 {
+ if !f.interspersed {
+ f.args = append(f.args, s)
+ f.args = append(f.args, args...)
+ return nil
+ }
f.args = append(f.args, s)
continue
}
@@ -1030,6 +1036,11 @@ func Parse() {
commandLine.Parse(os.Args[1:])
}
+// Whether to support interspersed option/non-option arguments.
+func SetInterspersed(interspersed bool) {
+ commandLine.SetInterspersed(interspersed)
+}
+
// Parsed returns true if the command-line flags have been parsed.
func Parsed() bool {
return commandLine.Parsed()
@@ -1044,10 +1055,16 @@ func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet {
f := &FlagSet{
name: name,
errorHandling: errorHandling,
+ interspersed: true,
}
return f
}
+// Whether to support interspersed option/non-option arguments.
+func (f *FlagSet) SetInterspersed(interspersed bool) {
+ f.interspersed = interspersed
+}
+
// Init sets the name and error handling property for a flag set.
// By default, the zero FlagSet uses an empty name and the
// ContinueOnError error handling policy.