1package commandargs
2
3import (
4	"errors"
5	"fmt"
6)
7
8type AuthorizedKeys struct {
9	Arguments    []string
10	ExpectedUser string
11	ActualUser   string
12	Key          string
13}
14
15func (ak *AuthorizedKeys) Parse() error {
16	if err := ak.validate(); err != nil {
17		return err
18	}
19
20	ak.ExpectedUser = ak.Arguments[0]
21	ak.ActualUser = ak.Arguments[1]
22	ak.Key = ak.Arguments[2]
23
24	return nil
25}
26
27func (ak *AuthorizedKeys) GetArguments() []string {
28	return ak.Arguments
29}
30
31func (ak *AuthorizedKeys) validate() error {
32	argsSize := len(ak.Arguments)
33
34	if argsSize != 3 {
35		return errors.New(fmt.Sprintf("# Insufficient arguments. %d. Usage\n#\tgitlab-shell-authorized-keys-check <expected-username> <actual-username> <key>", argsSize))
36	}
37
38	expectedUsername := ak.Arguments[0]
39	actualUsername := ak.Arguments[1]
40	key := ak.Arguments[2]
41
42	if expectedUsername == "" || actualUsername == "" {
43		return errors.New("# No username provided")
44	}
45
46	if key == "" {
47		return errors.New("# No key provided")
48	}
49
50	return nil
51}
52