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)))
}
|