fix: handle flags order validatio better
continuous-integration/drone/push Build is failing Details

Closes coop-cloud/organising#214.
This commit is contained in:
decentral1se 2021-11-02 14:08:54 +01:00
parent 3b77607f36
commit 0486091768
No known key found for this signature in database
GPG Key ID: 5E2EF5A63E3718CC
2 changed files with 20 additions and 1 deletions

View File

@ -2,6 +2,7 @@ package internal
import (
"errors"
"strings"
"coopcloud.tech/abra/pkg/app"
"coopcloud.tech/abra/pkg/catalogue"
@ -111,3 +112,17 @@ func ValidateDomain(c *cli.Context) (string, error) {
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
}

View File

@ -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
developer machine.
Example:
abra server add --local
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
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>]",
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")
internal.ShowSubcommandHelpAndError(c, err)
}