feat(core,cli): implement track command with go-git staging

This commit is contained in:
Micheal Wilkinson
2026-03-19 14:21:15 +00:00
parent 904c1be192
commit 2f45d28acb
2 changed files with 139 additions and 7 deletions

View File

@@ -88,7 +88,23 @@ func Run(args []string, stdout io.Writer, stderr io.Writer) int {
return 1
}
return 0
case "track", "pull", "push", "commit", "destroy", "cd", "open", "exec", "exec_all", "rc", "generate":
case "track":
if len(args) < 2 || strings.TrimSpace(args[1]) == "" {
_, _ = fmt.Fprintln(stderr, "error: track requires FILE")
return 1
}
castle := "dotfiles"
if len(args) > 2 && strings.TrimSpace(args[2]) != "" {
castle = args[2]
}
if err := app.Track(args[1], castle); err != nil {
_, _ = fmt.Fprintf(stderr, "error: %v\n", err)
return 1
}
return 0
case "pull", "push", "commit", "destroy", "cd", "open", "exec", "exec_all", "rc", "generate":
_, _ = fmt.Fprintf(stderr, "error: %s is not implemented in Go yet\n", command)
return 2
default:
@@ -116,10 +132,11 @@ func printHelp(w io.Writer) {
_, _ = fmt.Fprintln(w, " diff [CASTLE]")
_, _ = fmt.Fprintln(w, " link [CASTLE]")
_, _ = fmt.Fprintln(w, " unlink [CASTLE]")
_, _ = fmt.Fprintln(w, " track FILE [CASTLE]")
_, _ = fmt.Fprintln(w, " version | -v | --version")
_, _ = fmt.Fprintln(w, "")
_, _ = fmt.Fprintln(w, "Not implemented yet:")
_, _ = fmt.Fprintln(w, " track, pull, push, commit, destroy, cd, open, exec, exec_all, rc, generate")
_, _ = fmt.Fprintln(w, " pull, push, commit, destroy, cd, open, exec, exec_all, rc, generate")
_, _ = fmt.Fprintln(w, "")
_, _ = fmt.Fprintln(w, "Build: go build -o dist/homesick-go ./cmd/homesick")
}