A vibe coded tangled fork which supports pijul.
1package main
2
3import (
4 "context"
5 "log/slog"
6 "os"
7 "os/signal"
8 "syscall"
9
10 "github.com/carlmjohnson/versioninfo"
11 "github.com/urfave/cli/v3"
12 "tangled.org/core/knotmirror"
13 "tangled.org/core/log"
14)
15
16func main() {
17 if err := run(os.Args); err != nil {
18 slog.Error("error running knotmirror", "err", err)
19 os.Exit(-1)
20 }
21}
22
23func run(args []string) error {
24 ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
25 defer cancel()
26
27 logger := log.New("knotmirror")
28 slog.SetDefault(logger)
29 ctx = log.IntoContext(ctx, logger)
30
31 app := cli.Command{
32 Name: "knotmirror",
33 Usage: "knot mirroring service",
34 Version: versioninfo.Short(),
35 }
36 app.Flags = []cli.Flag{}
37 app.Commands = []*cli.Command{
38 {
39 Name: "serve",
40 Usage: "run the knotmirror daemon",
41 Action: runKnotMirror,
42 Flags: []cli.Flag{},
43 },
44 }
45 return app.Run(ctx, args)
46}
47
48func runKnotMirror(ctx context.Context, cmd *cli.Command) error {
49 // TODO: generate Config from arguments & pass down to Run()
50 return knotmirror.Run(ctx)
51}