]> git.giacomolli.uk - onechat/blobdiff - main.go
Order model and chat declarations
[onechat] / main.go
diff --git a/main.go b/main.go
index bdbcb722420b9dd8d8100c8ea1d7363a3160aaad..400538a39a3193be98a7f54d3060ce459a9bc970 100644 (file)
--- a/main.go
+++ b/main.go
@@ -1,3 +1,4 @@
+// Command onechat runs the agent daemon and its terminal client.
 package main
 
 import (
 package main
 
 import (
@@ -5,7 +6,6 @@ import (
        "fmt"
        "os"
        "os/signal"
        "fmt"
        "os"
        "os/signal"
-       "strings"
        "syscall"
 )
 
        "syscall"
 )
 
@@ -21,32 +21,5 @@ func run() error {
        ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
        defer cancel()
 
        ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
        defer cancel()
 
-       args := os.Args[1:]
-       switch {
-       case len(args) == 0:
-               _, err := fmt.Println("onechat")
-               if err != nil {
-                       return err
-               }
-       case len(args) == 1 && args[0] == "login":
-               err := chatgptLogin(ctx, os.Stdout)
-               if err != nil {
-                       return err
-               }
-       // A signal is the normal stop of the daemon and the client, so their
-       // result does not include ctx.Err().
-       case len(args) == 1 && args[0] == "daemon":
-               return daemon(ctx, os.Stdout)
-       case len(args) == 1 && args[0] == "chat":
-               return chat(ctx, os.Stdin, os.Stdout)
-       case len(args) > 0 && args[0] == "probe":
-               err := probe(ctx, args[1:], os.Stdout)
-               if err != nil {
-                       return err
-               }
-       default:
-               return fmt.Errorf("unknown command %q", strings.Join(args, " "))
-       }
-
-       return ctx.Err()
+       return parseCommand(ctx, os.Args[1:])
 }
 }