When it encounters a file it knows about, it will tell you whether it's possible to move this file to an appropriate location, and how to do it.
-Currently, a subset of the [arch wiki page on XDG_BASE_DIR](https://wiki.archlinux.org/title/XDG_Base_Directory) is implemented as configurations.
+The configurations are from the [arch wiki page on XDG_BASE_DIR](https://wiki.archlinux.org/title/XDG_Base_Directory), [antidot](https://github.com/doron-cohen/antidot) (thanks to Scr0nch for writing a conversion tool), and contributed by other users.
## Running
+### Cloning Manually
+
Clone the repository somewhere, then run the _./xdg-ninja.sh_ script.
This will run every test in the default configuration.
+### Installing with Homebrew
+
+To install xdg-ninja with [Homebrew](https://brew.sh), run `brew install xdg-ninja` to install the script and all of its dependencies, then run the `xdg-ninja` command.
+
## Dependencies
- your favorite POSIX-compliant shell ([bash](https://repology.org/project/bash/packages), [zsh](https://repology.org/project/zsh/packages), [dash](https://repology.org/project/dash-shell/packages), ...)
### Optional
-- [glow](https://repology.org/project/glow/packages) for rendering markdown in the terminal ([bat](https://repology.org/project/bat-cat/packages) can be used as a fallback, but glows output is clearer and therefore recommended)
-- [cabal](https://repology.org/project/cabal/packages) for compiling the helper program for creating configurations
+- [glow](https://repology.org/project/glow/packages) for rendering Markdown in the terminal ([bat](https://repology.org/project/bat-cat/packages), [pygmentize](https://repology.org/project/pygments/versions) or [highlight](https://repology.org/project/highlight/packages) can be used as fallback, but glow's output is clearer and therefore glow is recommended)
## Configuration
For each file/directory, you specify if it can be (re)moved.
-If this is the case, you also specify instructions on how to accomplish this in markdown.
+If this is the case, you also specify instructions on how to accomplish this in Markdown.
Files in this directory can have any name, but using the name of the program is encouraged.
### Automatically Generating Configuration
-You need _haskell_ and _cabal_ installed. (To be clear, this is just for a tool that will help you automatically generate the config files, you still only need your shell to run the tests)
+You can download the _xdgnj_ executable from the releases page. Alternatively you can build it from scratch using _cabal_, _stack_, or the provided docker image in _build/_. (To be clear, this is just a tool that will help you automatically generate the config files, you still only need your shell to run the tests)
-Run the following command:
+Available commands:
```sh
-cabal build
+xdgnj add # Adds a new configuration
+xdgnj prev programs/FILE.json # Preview the configuration for a program
+xdgnj run # Mostly the same as running the shell script
```
-You should now have a binary which you can run. You'll find it in somewhere in _dist-newstyle/build_, for example in _dist-newstyle/build/x86_64-linux/ghc-9.0.2/add-program-0.1.0.0/x/add-program/build/add-program/add-program_.
+#### Building from scratch
-Execute this binary in this directory. It will guide you through the process.
+You can use `cabal build`, `stack build`, or the provided dockerfile in _build/_.
### Manually
We're going to use _git_ as an example.
-It puts the file _.gitconfig_ into _$HOME.
+It puts the file _.gitconfig_ into _$HOME_.
Luckily, the XDG spec is supported by git, so we can simply move the file to _XDG_CONFIG_HOME/git/config_.
Saving this as _git.json_ in the _programs/_ directory will result in the script picking it up and checking the file.
-If you've created a configuration for a file that isn't in the offical repository yet, make sure to create a pull request so that other people can benefit from it as well.
+If you've created a configuration for a file that isn't in the official repository yet, make sure to create a pull request so that other people can benefit from it as well.