Contents:
The project is evolving slowly, mostly because DevBuddy covers my current needs.
I would love to help people implement their languages/environments/tools/dev-flow.
DevBuddy is an open-source implementation of an amazing internal tool developed at Shopify called "Dev".
The first goal of this tools is to automate the setup tasks required to work on a project.
With DevBuddy, pushing a change on a project you never touched look like this:
bud clone devbuddy/devbuddy
bud up
git commit
bud test
git push
DevBuddy is more useful for Python, Go and Node projects. More languages will be natively supported. DevBuddy is still useful for languages without native support thanks to the custom task.
See the project config documentation.
Python:
- Python environment (pyenv + virtualenv)
- Pip (requirements file)
- Pipenv (support for Pipfile)
Go:
- Go environment (with GOPATH)
- Go modules
- Dep (support for Go Dep)
Node:
- Node environment
- Dependencies with NPM
- Dependencies with Yarn planned
Ruby: planned
Rust: planned
Others:
- Homebrew
- Apt
- Custom (conditional shell command)
- Docker Compose (manage a docker-compose setup): planned
- Notification when important files (eg:
requirements.txt
) are updated locally (eg: bygit pull
) - A
help
command to guide a new developer based ondev.yml
- A
upgrade
command to auto-upgrade DevBuddy
- Github
- Gitlab
- Bitbucket (with Git)
- Bash
- Zsh
Install the Homebrew tap:
$ brew install devbuddy/devbuddy/devbuddy
Install the latest release:
$ brew install devbuddy
Install from the master branch:
$ brew install --HEAD devbuddy
Note: use this if your your PATH includes the GOBIN path.
Latest release:
$ go install github.com/devbuddy/devbuddy/cmd/bud@latest
Specify a version, like v0.11.1
:
$ go install github.com/devbuddy/devbuddy/cmd/bud@v0.11.1
Latest:
$ VERSION=$(curl -Ls -o /dev/null -w %{url_effective} "https://github.com/devbuddy/devbuddy/releases/latest" | grep -oE "[^/]+$")
$ VERSION="v0.12.0"
Linux Intel:
$ curl -L https://github.com/devbuddy/devbuddy/releases/download/${VERSION}/bud-linux-amd64 > /tmp/bud
Linux ARM:
$ curl -L https://github.com/devbuddy/devbuddy/releases/download/${VERSION}/bud-linux-arm64 > /tmp/bud
macOS Intel:
$ curl -L https://github.com/devbuddy/devbuddy/releases/download/${VERSION}/bud-darwin-amd64 > /tmp/bud
macOS Apple Silicon:
$ curl -L https://github.com/devbuddy/devbuddy/releases/download/${VERSION}/bud-darwin-arm64 > /tmp/bud
$ sudo install /tmp/bud /usr/local/bin/bud
β
Install the shell integration (in ~/.bash_profile
, or ~/.zshrc
):
eval "$(bud --shell-init --with-completion)"
A safer version:
type bud > /dev/null 2> /dev/null && eval "$(bud --shell-init --with-completion)"
If you usual work with repos from the same organization (like your personal one), you can set it as a default:
export BUD_DEFAULT_ORG="google"
Then you can use it directly to create, clone and jump to those repos:
$ bud clone pytruth
Rather than:
$ bud clone google/pytruth
β
Add a dev.yml
file in your project:
up:
- go: 1.9.2
- golang_dep
- python: 3.6.4rc1
- pip:
- requirements.txt
commands:
test:
desc: Run the tests
run: script/test
lint:
desc: Lint the project
run: script/lint
open:
staging: https://staging.myapp.com
doc: https://godoc.org/github.com/org/myapp
See DevBuddy own dev.yml
$ bud
Usage:
bud [flags]
bud [command]
Available Commands:
cd Jump to a local project
clone Clone a project from github.com
create Create a new project
help Help about any command
inspect Inspect the project and its tasks
open Open a link about your project
up Ensure the project is up and running
upgrade [experimental] Upgrade DevBuddy to the latest available release.
Flags:
-h, --help help for bud
--shell-init Shell initialization
--version version for bud
--with-completion Enable completion during initialization
Use "bud [command] --help" for more information about a command.
Authors:
- Pior Bastida (pior@pbastida.net)
- Mathieu Leduc-Hamel (mathieu.leduchamel@shopify.com)
- Emmanuel Milou manumilou@mykolab.com
- John Duff @jduff