diff options
| author | Fuwn <[email protected]> | 2026-01-26 05:13:25 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-01-26 05:13:25 +0000 |
| commit | 567e5b51d32450999935bcf3af143248888e12e9 (patch) | |
| tree | 41bb8b2a8fcae168bcb7044adb84f08dc89aaec0 /cmd | |
| download | mugi-567e5b51d32450999935bcf3af143248888e12e9.tar.xz mugi-567e5b51d32450999935bcf3af143248888e12e9.zip | |
feat: Initial commit
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/mugi/main.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/cmd/mugi/main.go b/cmd/mugi/main.go new file mode 100644 index 0000000..6caed07 --- /dev/null +++ b/cmd/mugi/main.go @@ -0,0 +1,50 @@ +package main + +import ( + "fmt" + "os" + + "github.com/ebisu/mugi/internal/cli" + "github.com/ebisu/mugi/internal/config" + "github.com/ebisu/mugi/internal/ui" +) + +const version = "0.1.0" + +func main() { + if err := run(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func run() error { + cmd, err := cli.Parse(os.Args[1:]) + if err != nil { + return err + } + + if cmd.Help { + fmt.Println(cli.Usage()) + + return nil + } + + if cmd.Version { + fmt.Printf("mugi %s\n", version) + + return nil + } + + cfg, err := config.Load(cmd.ConfigPath) + if err != nil { + return fmt.Errorf("config: %w", err) + } + + tasks := ui.BuildTasks(cfg, cmd.Repo, cmd.Remotes) + if len(tasks) == 0 { + return fmt.Errorf("no matching repositories or remotes found") + } + + return ui.Run(cmd.Operation, tasks, cmd.Verbose) +} |