Skip to content

maestro orchestrates your local dev environment

License

Notifications You must be signed in to change notification settings

eighty4/maestro

Repository files navigation

Go Reference CI

Maestro

A developer utility.

Installing

Prebuilt binaries are available here on GitHub

Linux and Mac users can run

curl -fsSL https://maestro.eighty4.tech/install.sh | sh

With Go 1.22.1 or later, Maestro can be installed from source:

go install github.com/eighty4/maestro@latest

Syncing with maestro git

Keep your workspace in sync with the maestro git command. This command performs a git pull --ff-only in each repository found nested within two subdirectories deep from the current working directory.

maestro git

A maestro.yaml file allows repositories to be configured, enabling a maestro git command to also clone repositories not already present in the workspace. Eventually this feature could be used to enable an export/import workflow with a dev machine's workspaces before formatting or replacing hardware. Configuring a maestro.yaml example is in the tests.

Workspace APIs

maestro/git provides the APIs for syncing a multi-repository workspace. git.NewWorkspace scans a directory for git repositories and provides access to the Workspace.Sync operation. Syncing delegates to git.Clone and git.Pull for each git.Repository configured with the workspace whether it's present or absent on within the workspace dir.

The maestro/composable module has wrappers for exec.Cmd to be used for managing local development processes and performing process healthchecks with HTTP GET and shell commands. Previous iterations could configure Gradle tasks, npm scripts and shell commands from a .maestro file. Re-visiting the project with the opportunity to use new Go tooling and language features (workspaces and generics), I rewrote process management but have yet to reimplement configuring and managing a local development environment.