forked from toolshed/abra
fix: handle flags order validatio better
Closes coop-cloud/organising#214.
This commit is contained in:
parent
3b77607f36
commit
0486091768
@ -2,6 +2,7 @@ package internal
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"coopcloud.tech/abra/pkg/app"
|
"coopcloud.tech/abra/pkg/app"
|
||||||
"coopcloud.tech/abra/pkg/catalogue"
|
"coopcloud.tech/abra/pkg/catalogue"
|
||||||
@ -111,3 +112,17 @@ func ValidateDomain(c *cli.Context) (string, error) {
|
|||||||
|
|
||||||
return domainName, nil
|
return domainName, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValidateSubCmdFlags ensures flag order conforms to correct order
|
||||||
|
func ValidateSubCmdFlags(c *cli.Context) bool {
|
||||||
|
for argIdx, arg := range c.Args().Slice() {
|
||||||
|
if !strings.HasPrefix(arg, "--") {
|
||||||
|
for _, flag := range c.Args().Slice()[argIdx:] {
|
||||||
|
if strings.HasPrefix(flag, "--") {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
@ -360,6 +360,10 @@ intended as the target server. This is useful when you want to have your entire
|
|||||||
Co-op Cloud config located on the server itself, and not on your local
|
Co-op Cloud config located on the server itself, and not on your local
|
||||||
developer machine.
|
developer machine.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
abra server add --local
|
||||||
|
|
||||||
Otherwise, you may specify a remote server. The <domain> argument must be a
|
Otherwise, you may specify a remote server. The <domain> argument must be a
|
||||||
publicy accessible domain name which points to your server. You should have SSH
|
publicy accessible domain name which points to your server. You should have SSH
|
||||||
access to this server, Abra will assume port 22 and will use your current
|
access to this server, Abra will assume port 22 and will use your current
|
||||||
@ -394,7 +398,7 @@ You may omit flags to avoid performing this provisioning logic.
|
|||||||
},
|
},
|
||||||
ArgsUsage: "<domain> [<user>] [<port>]",
|
ArgsUsage: "<domain> [<user>] [<port>]",
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
if c.Args().Len() > 0 && local {
|
if c.Args().Len() > 0 && local || !internal.ValidateSubCmdFlags(c) {
|
||||||
err := errors.New("cannot use '<domain>' and '--local' together")
|
err := errors.New("cannot use '<domain>' and '--local' together")
|
||||||
internal.ShowSubcommandHelpAndError(c, err)
|
internal.ShowSubcommandHelpAndError(c, err)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user