# 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]` - `push [CASTLE]` - `commit -m MESSAGE [CASTLE]` - `destroy [CASTLE]` - `cd [CASTLE]` - `open [CASTLE]` - `generate PATH` - `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: - `exec` - `exec_all` ## Outstanding Feature Checklist Command parity: - [x] `pull` - [x] `push` - [x] `commit` - [x] `destroy` - [x] `cd` - [x] `open` - [ ] `exec` - [ ] `exec_all` - [x] `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`.