]> git.giacomolli.uk - onechat/blob - main.go
Leave the turn state out of the usage records
[onechat] / main.go
1 package main
2
3 import (
4 "context"
5 "fmt"
6 "os"
7 "os/signal"
8 "strings"
9 "syscall"
10 )
11
12 func main() {
13 err := run()
14 if err != nil {
15 fmt.Fprintln(os.Stderr, "onechat:", err)
16 os.Exit(1)
17 }
18 }
19
20 func run() error {
21 ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
22 defer cancel()
23
24 args := os.Args[1:]
25 switch {
26 case len(args) == 0:
27 _, err := fmt.Println("onechat")
28 if err != nil {
29 return err
30 }
31 case len(args) == 1 && args[0] == "login":
32 err := login(ctx, os.Stdout)
33 if err != nil {
34 return err
35 }
36 case len(args) > 0 && args[0] == "probe":
37 err := probe(ctx, args[1:], os.Stdout)
38 if err != nil {
39 return err
40 }
41 default:
42 return fmt.Errorf("unknown command %q", strings.Join(args, " "))
43 }
44
45 return ctx.Err()
46 }