-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
54 lines (45 loc) · 1.04 KB
/
Copy pathmain.go
File metadata and controls
54 lines (45 loc) · 1.04 KB
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
package main
import (
"flag"
"fmt"
"log"
"os"
"os/signal"
"syscall"
"time"
"github.com/uucz/llmview/internal/server"
)
var version = "dev"
func main() {
port := flag.Int("port", 4700, "port to listen on")
dbPath := flag.String("db", "", "SQLite database path (default: ~/.llmview/llmview.db)")
budget := flag.Float64("budget", 0, "max session cost in USD (0 = unlimited)")
showVersion := flag.Bool("version", false, "show version")
flag.Parse()
if *showVersion {
fmt.Printf("llmview %s\n", version)
os.Exit(0)
}
sessionID := fmt.Sprintf("s_%d", time.Now().UnixMilli())
srv, err := server.New(server.Config{
Port: *port,
DBPath: *dbPath,
SessionID: sessionID,
Budget: *budget,
})
if err != nil {
log.Fatalf("failed to start: %v", err)
}
// Graceful shutdown
go func() {
sig := make(chan os.Signal, 1)
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
<-sig
log.Println("shutting down...")
srv.Close()
os.Exit(0)
}()
if err := srv.Start(); err != nil {
log.Fatalf("server error: %v", err)
}
}