# dev_tools CLI tool to start and stop a local RCC test environment. It manages a Docker Compose service and toggles environment variable files between local and CI database configurations. ## Prerequisites - Rust toolchain (stable) - Docker with Compose plugin ## Configuration The tool reads from a dotenv-style file at `~/.config/rcc/dev`. The following variables are required: | Variable | Description | |---|---| | `DOCKER_SERVICE` | Name of the Docker container to check if it is running | | `DOCKER_DIR` | Path to the Docker Compose directory, relative to `$HOME` | | `_DIR` | Absolute path to the project directory (one per project, e.g. `FOO_DIR`) | Example `~/.config/rcc/dev`: ``` DOCKER_SERVICE=my-container DOCKER_DIR=repos/docker/local FOO_DIR=/home/user/repos/foo ``` ## Build & Install ```bash cargo build --release # or install directly into ~/.cargo/bin cargo install --path . ``` ## Usage ``` dev_tools ``` | Argument | Description | |---|---| | `project` | Project key (matches `_DIR` in the config, case-insensitive) | | `up` / `down` | Start or stop the environment | ### Examples ```bash # Start the environment for project "foo" dev_tools foo up # Stop it dev_tools foo down ``` ## What it does 1. Starts or stops the Docker Compose service defined by `DOCKER_SERVICE` / `DOCKER_DIR`. 2. `conf/global/connections.env`: `up` toggles it to the CI credentials and marks it `git update-index --assume-unchanged` to avoid accidental commits; `down` unmarks it and restores it to its committed state by reading the committed blob with `git cat-file` (rather than computing the reverse toggle or running `git checkout`, which would fire the repo's `post-checkout` hook), so it's guaranteed byte-for-byte identical to HEAD. 3. Toggles database connection entries in `/conf/local/.env`: `up` switches the connection to `ci`, `down` switches it to `staging`. ## Tests ```bash cargo test ```