gitlabhq/gitlab-shell

View on GitHub
internal/command/commandargs/authorized_principals.go

Summary

Maintainability
A
0 mins
Test Coverage
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
}