homesick

Main Validation PR Validation Tag Build Artifacts Coverage

Your home directory is your castle. Don't leave your dotfiles behind.

This repository now contains a Go implementation of Homesick. A dotfiles repository is called a castle and should contain a home/ directory with files to link into your $HOME.

Build

Build with just:

just go-build

Or directly with Go:

go build -o dist/gosick ./cmd/homesick

Commands

Implemented commands:

  • clone URI [CASTLE_NAME]
  • list
  • show_path [CASTLE]
  • status [CASTLE]
  • diff [CASTLE]
  • link [CASTLE]
  • unlink [CASTLE]
  • track FILE [CASTLE]
  • pull [--all|CASTLE]
  • push [CASTLE]
  • commit -m MESSAGE [CASTLE]
  • destroy [CASTLE]
  • cd [CASTLE]
  • open [CASTLE]
  • generate PATH
  • rc [--force] [CASTLE]
  • version

Global options:

  • --pretend simulates command execution without running shell/git commands.
  • --dry-run is an alias for --pretend.
  • --quiet suppresses status output.

rc behavior

  • Runs executable scripts in <castle>/.homesick.d/ in lexicographic order.
  • Executes scripts with the castle root as the current working directory.
  • Forwards script stdout/stderr to command output.
  • If <castle>/.homesickrc exists, --force is required before legacy Ruby compatibility hooks are run.
  • If <castle>/.homesickrc exists and <castle>/.homesick.d/parity.rb does not, generates parity.rb before execution.
  • Never overwrites an existing parity.rb wrapper.

exec behavior

  • exec CASTLE COMMAND... runs the shell command inside the target castle root.
  • exec_all COMMAND... runs the same shell command inside each cloned castle root in sorted order.

Outstanding Feature Checklist

Command parity:

  • pull
  • push
  • commit
  • destroy
  • cd
  • open
  • exec
  • exec_all
  • generate

Historical flag/behavior parity:

  • pull --all
  • rc --force
  • Global pretend/quiet modes (--pretend, --dry-run, --quiet)

Behavior Suite

The repository includes a Docker-based behavior suite that validates filesystem and git outcomes for the implemented commands.

Run behavior suite:

just behavior

Verbose behavior suite output:

just behavior-verbose

Testing

Run all Go tests:

just go-test

License

See LICENSE.

Description
No description provided
Readme MIT 1 MiB
Languages
Go 86.3%
Shell 12.8%
Just 0.5%
Dockerfile 0.4%