# homesick [![Main Validation](https://git.hrafn.xyz/aether/gosick/actions/workflows/push-validation.yml?branch=main&event=push)](https://git.hrafn.xyz/aether/gosick/actions/workflows/push-validation.yml) [![PR Validation](https://git.hrafn.xyz/aether/gosick/actions/workflows/pr-validation.yml?branch=main&event=pull_request)](https://git.hrafn.xyz/aether/gosick/actions/workflows/pr-validation.yml) [![Tag Build Artifacts](https://git.hrafn.xyz/aether/gosick/actions/workflows/tag-build-artifacts.yml?event=push)](https://git.hrafn.xyz/aether/gosick/actions/workflows/tag-build-artifacts.yml) [![Coverage](https://s3.hrafn.xyz/aether-workflow-report-artefacts/gosick/branch/main/coverage-badge.svg)](https://s3.hrafn.xyz/aether-workflow-report-artefacts/gosick/branch/main/coverage.html) 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: ```bash just go-build ``` Or directly with Go: ```bash 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 [CASTLE]` - `rc [CASTLE]` - `version` ### rc behavior - Runs executable scripts in `/.homesick.d/` in lexicographic order. - Executes scripts with the castle root as the current working directory. - Forwards script stdout/stderr to command output. - If `/.homesickrc` exists and `/.homesick.d/parity.rb` does not, generates `parity.rb` before execution. - Never overwrites an existing `parity.rb` wrapper. Not yet implemented: - `push` - `commit` - `destroy` - `cd` - `open` - `exec` - `exec_all` - `generate` ## Outstanding Feature Checklist Command parity: - [x] `pull` - [ ] `push` - [ ] `commit` - [ ] `destroy` - [ ] `cd` - [ ] `open` - [ ] `exec` - [ ] `exec_all` - [ ] `generate` Historical flag/behavior parity: - [ ] `pull --all` - [ ] `rc --force` - [ ] Evaluate whether global `pretend`/`quiet` modes should be restored ## Behavior Suite The repository includes a Docker-based behavior suite that validates filesystem and git outcomes for the implemented commands. Run behavior suite: ```bash just behavior ``` Verbose behavior suite output: ```bash just behavior-verbose ``` ## Testing Run all Go tests: ```bash just go-test ``` ## License See `LICENSE`.