]> Sergey Matveev's repositories - btrtrc.git/blob - storage/sqlite/sqlite-storage-cli/main.go
5f315743d70a8e51b3fb87649464d92c0f3952e6
[btrtrc.git] / storage / sqlite / sqlite-storage-cli / main.go
1 package main
2
3 import (
4         "fmt"
5         "log"
6         "os"
7
8         "crawshaw.io/sqlite"
9         "github.com/alexflint/go-arg"
10         sqliteStorage "github.com/anacrolix/torrent/storage/sqlite"
11 )
12
13 type InitCommand struct {
14         Path string `arg:"positional"`
15 }
16
17 func main() {
18         err := mainErr()
19         if err != nil {
20                 log.Printf("error in main: %v", err)
21                 os.Exit(1)
22         }
23 }
24
25 func mainErr() error {
26         var args struct {
27                 Init *InitCommand `arg:"subcommand"`
28         }
29         p := arg.MustParse(&args)
30         switch {
31         case args.Init != nil:
32                 conn, err := sqlite.OpenConn(args.Init.Path, 0)
33                 if err != nil {
34                         return fmt.Errorf("opening sqlite conn: %w", err)
35                 }
36                 defer conn.Close()
37                 return sqliteStorage.InitSchema(conn, 1<<14, true)
38         default:
39                 p.Fail("expected subcommand")
40                 panic("unreachable")
41         }
42 }