aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-01-26 05:13:25 +0000
committerFuwn <[email protected]>2026-01-26 05:13:25 +0000
commit567e5b51d32450999935bcf3af143248888e12e9 (patch)
tree41bb8b2a8fcae168bcb7044adb84f08dc89aaec0 /cmd
downloadmugi-567e5b51d32450999935bcf3af143248888e12e9.tar.xz
mugi-567e5b51d32450999935bcf3af143248888e12e9.zip
feat: Initial commit
Diffstat (limited to 'cmd')
-rw-r--r--cmd/mugi/main.go50
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)
+}