Project

ddenv

0.0
The project is in a healthy, maintained state
Creates and maintains an environment for local development, including Ruby and Node versions.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 2.15
 Project Readme

ddenv

ddenv (Denis’ Developer Environment) is a tool for maintaining a local environment for development.

Caution

This is pre-release software.

Requirements

First, ensure you have Homebrew installed, and are using a supported shell (zsh, bash, or fish).

Then, run brew install denisdefreyne/tap/ddenv.

Quick start

Create a ddenv.yaml file which contains the list of dependencies to manage. For example:1

up:
  - homebrew: overmind
  - ruby
  - bundle
  - node: 20.12.2
  - npm

Then, run ddenv:

% ddenv
Installing Homebrew package ‘overmind’       skipped
Installing Homebrew package ‘ruby-install’   skipped
Installing Ruby 3.3.6                        skipped
Adding Shadowenv to shell                    skipped
Creating Shadowenv dir                       done
Adding Shadowenv dir to .gitignore           done
Adding Ruby 3.3.6 to Shadowenv               done
Installing Ruby gem bundler                  done
Installing bundle                            done
Installing Homebrew package ‘node-build’     checking...
Installing Node 20.12.2                      pending
Adding Node 20.12.2 to Shadowenv             pending
Installing npm packages                      pending

Now your local developer environment is ready to be used.

Goals

  • homebrew: PACKAGENAME installs the Homebrew package with the given name.

    e.g. - homebrew: overmind

  • ruby installs Ruby (with the version specified in the .ruby-version file).

    e.g. - ruby

  • bundle runs bundle install.

    e.g. - bundle

  • node: VERSION installs the give Node.js version.

    e.g. - node: 22.11.0

  • npm installs packages from package.json using npm.

    e.g. - npm

  • postgresql: MAJOR_VERSION installs PostgreSQL (through Homebrew), starts it, and sets up environment variables with PostgreSQL connection details (POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_HOST, and POSTGRES_PORT).

    e.g. - postgresql: 17

Footnotes

  1. This example relies on a .ruby-version file being present, e.g. with the file contents 3.3.6. ↩