summaryrefslogtreecommitdiff
path: root/go/internal/command/commandargs/authorized_principals.go
diff options
context:
space:
mode:
authorPatrick Bajao <ebajao@gitlab.com>2019-08-08 15:29:33 +0800
committerPatrick Bajao <ebajao@gitlab.com>2019-08-09 09:17:35 +0800
commit1962b49971cf1602ed5ee20b33193e10022cf8cb (patch)
tree6a12b351838af281ae2ad34a4340231f2a030d49 /go/internal/command/commandargs/authorized_principals.go
parent4812f6478771a6d261eb4a5c3aa4b450333fbf00 (diff)
downloadgitlab-shell-1962b49971cf1602ed5ee20b33193e10022cf8cb.tar.gz
Implement AuthorizedPrincipals command181-authorized-principals-check-go
Build this command when `Executable` name is `gitlab-shell-authorized-principals-check`. Feature flag is the same name.
Diffstat (limited to 'go/internal/command/commandargs/authorized_principals.go')
-rw-r--r--go/internal/command/commandargs/authorized_principals.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/go/internal/command/commandargs/authorized_principals.go b/go/internal/command/commandargs/authorized_principals.go
new file mode 100644
index 0000000..746ae3f
--- /dev/null
+++ b/go/internal/command/commandargs/authorized_principals.go
@@ -0,0 +1,50 @@
+package commandargs
+
+import (
+ "errors"
+ "fmt"
+)
+
+type AuthorizedPrincipals struct {
+ Arguments []string
+ KeyId string
+ Principals []string
+}
+
+func (ap *AuthorizedPrincipals) Parse() error {
+ if err := ap.validate(); err != nil {
+ return err
+ }
+
+ ap.KeyId = ap.Arguments[0]
+ ap.Principals = ap.Arguments[1:]
+
+ return nil
+}
+
+func (ap *AuthorizedPrincipals) GetArguments() []string {
+ return ap.Arguments
+}
+
+func (ap *AuthorizedPrincipals) validate() error {
+ argsSize := len(ap.Arguments)
+
+ if argsSize < 2 {
+ return errors.New(fmt.Sprintf("# Insufficient arguments. %d. Usage\n#\tgitlab-shell-authorized-principals-check <key-id> <principal1> [<principal2>...]", argsSize))
+ }
+
+ keyId := ap.Arguments[0]
+ principals := ap.Arguments[1:]
+
+ if keyId == "" {
+ return errors.New("# No key_id provided")
+ }
+
+ for _, principal := range principals {
+ if principal == "" {
+ return errors.New("# An invalid principal was provided")
+ }
+ }
+
+ return nil
+}