aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go80
1 files changed, 80 insertions, 0 deletions
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..511736a
--- /dev/null
+++ b/main.go
@@ -0,0 +1,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)))
+}