a tool for managing consistent setup for your development environment.
This project uses poetry
and direnv
# install direnv (macos) - https://formulae.brew.sh/formula/direnv#default
# other OSs - https://direnv.net/docs/installation.html
brew install direnv
# if bash rc exists, add the shell hook
echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
# if zsh rc exists, add the shell hook
echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc
# clone the repo
git clone https://github.com/nsheaps/devsetup.git
direnv allow ./devsetup
cd devsetup # activates direnv
# install poetry
poetry install
# run things
cd ~/src/devsetup
devsetup <command> # alias to poetry run python ./src/main.py <command>
npx mega-linter-runner --flavor cupcake
includes all linters that run in CI.
poetry run black .
- autofixes what it can (--check
to just check)
poetry run ruff . --fix
- autofixes what it can
Uses $HOME/.config/devsetup/
for any needed configuration files.
command | description |
---|---|
devsetup set-tap <tap> |
sets the tap to use for installing software. This is the tap that will be used when running devsetup install <formula> . |
devsetup get-tap |
prints the current tap. eg nsheaps/devsetup |
devsetup install <formula> devsetup i <formula> |
installs a formula from this tap, an alias for brew install $(devsetup get-tap)/<formula> . This is to avoid trying to pin this tap (deprecated) when installing your locked versions of software |
devsetup upgrade-all |
updates the local clone of this tap (devsetup update ), then upgrades all software installed from it (list, filter by $(devsetup get-tap)/.* , run brew upgrade <formula..> ), also updates devsetup from it's origin tap. |
devsetup upgrade devsetup devsetup u devsetup |
Updates devsetup from it's origin tap. |
devsetup upgrade <formula> devsetup u <formula> |
alias for brew upgrade $(devsetup get-tap)/<formula> , always upgrades devsetup even if from another tap. |
devsetup update |
Alias for $(cd $(brew --repository $(devsetup get-tap)) && git pull) . This is to avoid updating other taps. Note: doesn't change a branch if checked out to a non-default branch. |
devsetup outdated |
Alias for brew outdated $(devsetup get-tap)/.* |
devsetup list |
Lists all kegs/packages installed from the tapped homebrew tap |
devsetup info <formula> |
Gets the info for a formula |
devsetup search <str> |
Searches for a formula |
devsetup add <formula> devsetup add <owner>/<tap>/<formula> |
makes a clone of the upstream formula in this tap to lock it's definition, checks that the current working directory or provided dir matches the result of get tap, or makes it in the brew tap and creates a PR, and goes back to the default branch. Overwrites any formula that already exists. |
devsetup alias <formula> <alias> devsetup remove <owner>/<tap>/<formula> <alias> |
creates a new formula that has the upstream formula as a direct dependency **Note:**versioning ls less controllable here and updates only propagate when the created formula changes. |
devsetup doctor |
checks for common issues with the machine and produces a diagnostic report for the owner to help diagnose Note: The functionality of this command is provided by you |
devsetup -h |
prints the help message |
devsetup version |
prints the version of the devsetup command |
devsetup tap-info [--prefix] |
alias for brew tap-info $(devsetup get-tap) . --prefix just returns the location of the tap (alias for $(brew --repository $(devsetup get-tap) ) |
devsetup configure <topic> [--reconfigure] |
Alias for brew update && brew install $(devsetup get-tap)/devsetup-configure-<topic> . If --reconfigure is passed, then the formula is removed first, which removes any configuration it set up prior. |
Use this as a way to gather information about a user's machine to diagnose issues. The default functionality runs brew config && brew doctor
These are examples but some setup scripts come out of the box for you to customize and use. These boil down into additional devsetup formulas (like devsetup-configure-git
), which then runs the script with the arguments passed through, but doesn't clutter $PATH
.
When running the configuration script installed by the formula, it should check to see if conflicting configurations exist and warn accordingly.
Passing --preserve
will make it non-interactive and assume that the configuration is correct and the formula will adopt it as it's own if possible. The configuration may not complete non-interactively if the configuration is not considered complete.
When upgraded, the formula should only configure new or additional things, and warn if it is going to change something that already exists (such as the default ssh key). This is an alias to installing with the --preserve
flag.
When removed, the uninstall scripts should remove any configuration they had set up interactively. Passing --preserve
will make it non-interactive and not remove any configuration.
Passing --force
will remove the configuration without warning.
If you want any of these configurations to happen automatically on devsetup install
, add the formula as a depdendency to the devsetup
formula.
topic | description |
---|---|
git |
sets up git with a global user and email. Also globally sets pull.rebase to false (merge when diverge) |
github-token |
sets up a GITHUB_TOKEN and adds it to your ~/.profile |
github-ssh |
sets up github to prefer ssh via git config --global url.ssh://git@github.com/.insteadOf https://github.com/ , and then runs gh ssh-key add $(devsetup-configure-ssh --keyfile) .Note: depends on gh and nsheaps/devsetup/devsetup-configure-ssh |
ssh |
sets up ssh with a key and config. Also provides a --keyfile [keytype] to return the location of the requested keyfile |
gpg |
sets up gpg with a key and config |
aws |
sets up aws with a profile and config |