Help us shape the future of Go! Take the 2026 Go Developer Survey

eng

command module
v1.11.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 18, 2026 License: MIT Imports: 1 Imported by: 0

README

eng CLI

                                          __ __
                                         |  \  \
  ______  _______   ______        _______| ▓▓\▓▓
 /      \|       \ /      \      /       \ ▓▓  \
|  ▓▓▓▓▓▓\ ▓▓▓▓▓▓▓\  ▓▓▓▓▓▓\    |  ▓▓▓▓▓▓▓ ▓▓ ▓▓
| ▓▓    ▓▓ ▓▓  | ▓▓ ▓▓  | ▓▓    | ▓▓     | ▓▓ ▓▓
| ▓▓▓▓▓▓▓▓ ▓▓  | ▓▓ ▓▓__| ▓▓    | ▓▓_____| ▓▓ ▓▓
 \▓▓     \ ▓▓  | ▓▓\▓▓    ▓▓     \▓▓     \ ▓▓ ▓▓
  \▓▓▓▓▓▓▓\▓▓   \▓▓_\▓▓▓▓▓▓▓      \▓▓▓▓▓▓▓\▓▓\▓▓
                  |  \__| ▓▓
                   \▓▓    ▓▓
                    \▓▓▓▓▓▓

Go Go Report Card Codacy Badge GitHub Release

A modern, modular CLI tool for developer automation, dotfiles management, system utilities, and project codemods. Built in Go, designed for extensibility and productivity.

Features

  • Git Repository Management — Bulk operations across multiple git repositories with intelligent branch detection
  • Project Management — Organize and manage groups of related repositories as logical projects
  • Dotfiles Management — Manage dotfiles via a bare git repo, with sync/fetch/checkout helpers
  • Dotfiles Secrets — Backup and restore manifest-managed env files with Bitwarden Secrets Manager
  • System Utilities — macOS/Linux helpers (kill port, kill process, proxy, update, compaudit fix)
  • File Utilities — Find and delete files by extension, filename, or glob pattern
  • Codemod Automation — Project codemods (lint setup, prettier, copilot instructions)
  • Tailscale Helpers — Bring Tailscale service up/down
  • GitLab Integration — Manage MR rules and authentication via glab CLI
  • Config Management — Centralized config via Viper with automatic migration
  • Auto-Update — Version checking and Homebrew auto-update support

Installation

brew tap eng618/eng
brew install eng
Go Install
go install github.com/eng618/eng@latest
From Source
git clone https://github.com/eng618/eng.git
cd eng
task install  # or: go install .

Usage

eng [command] [flags]
Quick Start
# Configure your development folder
eng config git-dev-path ~/Development

# Sync all git repositories
eng git sync-all

# Install dotfiles from your repo
eng dotfiles install

# Backup or restore manifest-managed dotfiles secrets
eng dotfiles secrets backup
eng dotfiles secrets restore

# Optional: run SSH setup directly if you want to prepare keys first
eng system setup ssh

# Setup a new development machine
eng system setup

# Check version and updates
eng version
Private Dotfiles Quickstart

For private GitHub dotfiles repositories, eng dotfiles install now validates dotfiles config first, checks core prerequisites, and only then runs GitHub SSH setup when the configured repo URL uses SSH.

If cloning fails due to SSH auth, run:

eng system setup ssh
Dotfiles Secrets

eng dotfiles secrets turns the manifest-driven bws backup and restore flow into a first-class CLI feature.

By default it looks for the manifest at $HOME/bin/secrets/server.manifest using the configured dotfiles worktree, and restores files relative to that worktree. The Bitwarden Secrets Manager project UUID can come from --project-id, BWS_PROJECT_ID, or the manifest comment header.

# Backup managed env values into Bitwarden Secrets Manager
eng dotfiles secrets backup

# Restore env files from their tracked .example templates
eng dotfiles secrets restore

# Validate manifest/template/secret consistency
eng dotfiles secrets doctor

eng system setup dotfiles now runs eng dotfiles secrets restore automatically after install when:

  • the manifest exists at the configured dotfiles worktree (bin/secrets/server.manifest)
  • BWS_ACCESS_TOKEN is set

If those prerequisites are not met, the restore step is skipped safely.

Available Commands
Command Description
eng git Manage multiple git repositories (sync, fetch, pull, push, status)
eng project Manage project-based repository collections
eng dotfiles Manage dotfiles (install, sync, fetch, checkout, status)
eng system System utilities (setup, kill-port, kill-process, update, proxy)
eng files File utilities (find-and-delete, find-non-movie-folders)
eng codemod Project codemods (lint-setup, prettier, copilot)
eng tailscale Tailscale helpers (up, down) — alias: ts
eng gitlab GitLab integration (mr-rules, auth)
eng version Show version, check for updates
eng config Manage CLI configuration

For detailed command documentation, see docs/COMMANDS.md.

Global Flags
--config string   # Config file (default: $HOME/.eng.yaml)
-v, --verbose     # Verbose output
-h, --help        # Help for any command

Documentation

Support

Contributing

Contributions are welcome! Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes following the Go style guidelines
  4. Run validation: task validate (runs format, lint, and tests)
  5. Commit your changes using Conventional Commits
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request
Development Commands
task build      # Build the binary
task install    # Install to $GOPATH/bin
task lint       # Run golangci-lint
task test       # Run tests with coverage
task validate   # Run format + lint + test
task changelog  # Generate changelog
task release    # Create a release (goreleaser)

See Taskfile.yaml for all available tasks.

Authors

License

MIT License © 2023–2026 Eric N. Garcia

Documentation

Overview

Copyright © 2023 Eric N. Garcia <eng618@garciaericn.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Directories

Path Synopsis
cmd
codemod
Package codemod provides helpers for codemods and project automation.
Package codemod provides helpers for codemods and project automation.
config
Package config provides subcommands for managing the eng CLI configuration.
Package config provides subcommands for managing the eng CLI configuration.
dotfiles
Package dotfiles provides cobra commands for managing user dotfiles via a bare git repository.
Package dotfiles provides cobra commands for managing user dotfiles via a bare git repository.
git
Package git provides cobra commands for managing multiple git repositories in a development folder.
Package git provides cobra commands for managing multiple git repositories in a development folder.
parable_bloom
DEPRECATED: The 'eng parable-bloom' command is deprecated and will be removed.
DEPRECATED: The 'eng parable-bloom' command is deprecated and will be removed.
parable_bloom/generate
DEPRECATED: This package is deprecated.
DEPRECATED: This package is deprecated.
parable_bloom/render
DEPRECATED: This package is deprecated.
DEPRECATED: This package is deprecated.
parable_bloom/repair
DEPRECATED: This package is deprecated.
DEPRECATED: This package is deprecated.
parable_bloom/validate
DEPRECATED: This package is deprecated.
DEPRECATED: This package is deprecated.
project
Package project provides cobra commands for managing project-based repository collections.
Package project provides cobra commands for managing project-based repository collections.
ts
version
Package version implements the 'eng version' command, which displays the application's version information and checks for available updates.
Package version implements the 'eng version' command, which displays the application's version information and checks for available updates.
internal
utils/config
Package config is a helper package to facilitate getting and setting config values using Viper.
Package config is a helper package to facilitate getting and setting config values using Viper.
utils/log
Package log is a wrapper around colorizing the log output.
Package log is a wrapper around colorizing the log output.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL