aboutsummaryrefslogtreecommitdiff
path: root/main.go
blob: 511736a457a044988b38be27d397e29517f1f595 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package main

import (
	"context"
	"flag"
	"os"

	"github.com/google/subcommands"
)

type FetchCmd struct{}

func (s *FetchCmd) Name() string { return "fetch" }

func (s *FetchCmd) Synopsis() string { return "fetch SSH keys for the given Github Users" }

func (s *FetchCmd) Usage() string {
	return `fetch [user 1] [user 2]`
}

func (s *FetchCmd) SetFlags(_ *flag.FlagSet) {}

func (s *FetchCmd) Execute(
	_ context.Context,
	f *flag.FlagSet, _ ...interface{},
) subcommands.ExitStatus {
	Fetch(f.Args()...)
	return subcommands.ExitSuccess
}

type SyncUsersCmd struct{}

func (s *SyncUsersCmd) Name() string { return "sync-users" }

func (s *SyncUsersCmd) Synopsis() string { return "Sync SSH keys for the given users." }

func (s *SyncUsersCmd) Usage() string {
	return `sync-user [user1] [user2]`
}

func (s *SyncUsersCmd) SetFlags(_ *flag.FlagSet) {}

func (s *SyncUsersCmd) Execute(
	_ context.Context,
	f *flag.FlagSet, _ ...interface{},
) subcommands.ExitStatus {
	SyncUsers(f.Args()...)
	return subcommands.ExitSuccess
}

type SyncGroupsCmd struct{}

func (s *SyncGroupsCmd) Name() string { return "sync-group" }

func (s *SyncGroupsCmd) Synopsis() string { return "Sync SSH keys for the given groups." }

func (s *SyncGroupsCmd) Usage() string { return `sync-group [group1] [group2]` }

func (s *SyncGroupsCmd) SetFlags(_ *flag.FlagSet) {}

func (s *SyncGroupsCmd) Execute(
	_ context.Context,
	f *flag.FlagSet, _ ...interface{},
) subcommands.ExitStatus {
	SyncGroups(f.Args()...)
	return subcommands.ExitSuccess
}

func main() {
	subcommands.Register(subcommands.HelpCommand(), "")
	subcommands.Register(subcommands.FlagsCommand(), "")
	subcommands.Register(subcommands.CommandsCommand(), "")
	subcommands.Register(&FetchCmd{}, "")
	subcommands.Register(&SyncUsersCmd{}, "")
	subcommands.Register(&SyncGroupsCmd{}, "")

	flag.Parse()
	ctx := context.Background()
	os.Exit(int(subcommands.Execute(ctx)))
}