A developer utility.
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
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.
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.
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.