@@ 1,97 0,0 @@
-package main
-
-import (
- "errors"
- "fmt"
- "log"
- "os"
- "path/filepath"
-
- "git.sr.ht/~bitfehler/brant/cli"
- "github.com/alexflint/go-arg"
- _ "github.com/jackc/pgx/v5/stdlib"
-
- "git.sr.ht/~sircmpwn/core-go/config"
-)
-
-type Args struct {
- ServiceMeta *cli.Args `arg:"subcommand:meta.sr.ht" help:"run meta.sr.ht migration"`
- ServiceGit *cli.Args `arg:"subcommand:git.sr.ht" help:"run git.sr.ht migration"`
- ServiceHg *cli.Args `arg:"subcommand:hg.sr.ht" help:"run hg.sr.ht migration"`
- ServiceBuilds *cli.Args `arg:"subcommand:builds.sr.ht" help:"run builds.sr.ht migration"`
- ServiceTodo *cli.Args `arg:"subcommand:todo.sr.ht" help:"run todo.sr.ht migration"`
- ServiceLists *cli.Args `arg:"subcommand:lists.sr.ht" help:"run lists.sr.ht migration"`
- ServiceMan *cli.Args `arg:"subcommand:man.sr.ht" help:"run man.sr.ht migration"`
- ServiceHub *cli.Args `arg:"subcommand:hub.sr.ht" help:"run hub.sr.ht migration"`
- ServicePaste *cli.Args `arg:"subcommand:paste.sr.ht" help:"run paste.sr.ht migration"`
- ServicePages *cli.Args `arg:"subcommand:pages.sr.ht" help:"run pages.sr.ht migration"`
-}
-
-func (a Args) Epilogue() string {
- return "Use `<cmd> --help` for help with individual commands"
-}
-
-func main() {
- var a Args
- p := arg.MustParse(&a)
- if p.Subcommand() == nil {
- p.WriteHelp(os.Stderr)
- os.Exit(1)
- }
-
- service := p.SubcommandNames()[0]
- var brantArgs *cli.Args
- switch {
- case a.ServiceMeta != nil:
- brantArgs = a.ServiceMeta
- case a.ServiceGit != nil:
- brantArgs = a.ServiceGit
- case a.ServiceHg != nil:
- brantArgs = a.ServiceHg
- case a.ServiceBuilds != nil:
- brantArgs = a.ServiceBuilds
- case a.ServiceTodo != nil:
- brantArgs = a.ServiceTodo
- case a.ServiceLists != nil:
- brantArgs = a.ServiceLists
- case a.ServiceMan != nil:
- brantArgs = a.ServiceMan
- case a.ServiceHub != nil:
- brantArgs = a.ServiceHub
- case a.ServicePaste != nil:
- brantArgs = a.ServicePaste
- case a.ServicePages != nil:
- brantArgs = a.ServicePages
- default:
- panic(fmt.Errorf("unhandled service: %s", service))
- }
-
- cfg := config.LoadFiles()
-
- if brantArgs.DataSourceName == "" {
- dbstring, ok := cfg.Get(service, "connection-string")
- if !ok {
- log.Fatalf("No database configured for %s", service)
- }
- brantArgs.DataSourceName = dbstring
- }
-
- if brantArgs.Directory == "" {
- m, err := os.Stat("migrations")
- if err != nil && !errors.Is(err, os.ErrNotExist) {
- log.Fatalf("Error checking for migrations: %s", err.Error())
- }
- if err == nil && m.IsDir() {
- log.Println("sourcehut-migrate: ./migrations directory found, not defaulting to sr.ht::assets")
- } else {
- assetsDir := "/usr/share/sourcehut"
- if assets, ok := cfg.Get("sr.ht", "assets"); ok {
- assetsDir = assets
- }
- migrations := filepath.Join(assetsDir, "migrations", service)
- brantArgs.Directory = migrations
- }
- }
-
- cli.RunWithArgs(brantArgs)
-}