| Crates.io | zackstrap |
| lib.rs | zackstrap |
| version | 1.2.1 |
| created_at | 2025-08-15 00:44:42.965402+00 |
| updated_at | 2025-12-01 06:18:06.396472+00 |
| description | A CLI tool to bootstrap project configuration files |
| homepage | |
| repository | https://github.com/zackkitzmiller/zackstrap |
| max_upload_size | |
| id | 1796007 |
| size | 347,355 |
A powerful Rust CLI tool to bootstrap project configuration files. Quickly generate common project configuration files like .editorconfig, .prettierrc, and Ruby-specific configurations.
git clone https://github.com/zackkitzmiller/zackstrap.git
cd zackstrap
cargo build --release
cargo install --path .
cargo install zackstrap
Generate basic configuration files (.editorconfig, .prettierrc):
zackstrap basic
Generate Ruby-specific configuration files:
zackstrap ruby
This will create:
- .editorconfig
- .prettierrc
- .ruby-version (set to 3.3.0)
- .node-version (set to 24)
- .rubocop.yml (comprehensive configuration)
- package.json (with prettier-plugin-ruby)
Generate Python-specific configuration files:
zackstrap python
This will create:
- .editorconfig
- .prettierrc
- .python-version (set to 3.12)
- pyproject.toml (with black, flake8, mypy)
- .flake8 configuration
- requirements-dev.txt
- justfile with Python development tasks
Generate Node.js-specific configuration files:
zackstrap node
This will create:
- .editorconfig
- .prettierrc
- .nvmrc (set to Node.js 20)
- .eslintrc.js (ESLint configuration)
- package.json (with development dependencies)
- justfile with Node.js development tasks
Generate Go-specific configuration files:
zackstrap go
This will create:
- .editorconfig
- .prettierrc
- go.mod (Go module file)
- .golangci.yml (golangci-lint configuration)
- .gitignore additions for Go
- justfile with Go development tasks
Generate Rust-specific configuration files:
zackstrap rust
This will create:
- .editorconfig
- .prettierrc
- rustfmt.toml (Rust formatting configuration)
- .clippy.toml (Clippy linting configuration)
- .cargo/config.toml (Cargo configuration)
- justfile with Rust development tasks
Use the --force flag to overwrite existing files:
zackstrap basic --force
zackstrap ruby --force
Specify a different target directory:
zackstrap basic --target /path/to/project
zackstrap ruby --target /path/to/project
See what configuration files are available:
zackstrap list
Automatically detect project type and generate appropriate configs:
zackstrap auto
Guided setup with user prompts:
zackstrap interactive
Use different configuration templates:
# Basic projects with different styles
zackstrap basic --template google
zackstrap basic --template airbnb
# Ruby projects with framework-specific configs
zackstrap ruby --template rails
zackstrap ruby --template sinatra
zackstrap ruby --template gem
# Python projects with framework-specific configs
zackstrap python --template django
zackstrap python --template flask
# Node.js projects with framework-specific configs
zackstrap node --template express
zackstrap node --template react
# Go projects with project type configs
zackstrap go --template web
zackstrap go --template cli
# Rust projects with project type configs
zackstrap rust --template web
zackstrap rust --template cli
Preview what would be created without actually creating files:
# Note: --dry-run must come BEFORE the subcommand
zackstrap --dry-run basic
zackstrap --dry-run ruby --template rails
zackstrap --dry-run auto
.editorconfig - Multi-language editor configuration.prettierrc - Prettier formatting rulesjustfile - Project automation and development tasks.ruby-version - Ruby 3.3.0.node-version - Node.js 24.rubocop.yml - Comprehensive Ruby lintingpackage.json - With prettier-plugin-rubyjustfile - Ruby-specific automation tasks.python-version - Python 3.12pyproject.toml - Project configuration with black, flake8, mypy.flake8 - Flake8 linting configurationrequirements-dev.txt - Development dependenciesjustfile - Python-specific automation tasks.nvmrc - Node.js 20.eslintrc.js - ESLint configurationpackage.json - With development dependenciesjustfile - Node.js-specific automation tasksgo.mod - Go module file.golangci.yml - golangci-lint configuration.gitignore - Go-specific ignore patternsjustfile - Go-specific automation tasksrustfmt.toml - Rust formatting configuration.clippy.toml - Clippy linting configuration.cargo/config.toml - Cargo configurationjustfile - Rust-specific automation tasksGenerate git hooks for your project to ensure code quality and consistency:
# Generate git hooks for Ruby project
zackstrap --hooks ruby
# Generate git hooks for Python Django project
zackstrap --hooks python --template django
# Generate git hooks for Node.js React project
zackstrap --hooks node --template react
# Generate git hooks for Go web project
zackstrap --hooks go --template web
# Generate git hooks for Rust CLI project
zackstrap --hooks rust --template cli
Each language gets tailored git hooks:
Ruby Projects:
Python Projects:
Node.js Projects:
Go Projects:
Rust Projects:
Git hooks require:
git init)Templates available:
Templates available:
Templates available:
Templates available:
Templates available:
Templates available:
The project uses GitHub Actions for continuous integration and deployment, organized into separate stages for better efficiency and maintainability.
ci.yml: Main CI/CD pipeline that triggers the lint workflowlint.yml: Dedicated workflow for code quality checks (formatting, linting)test.yml: Dedicated workflow for testing and coverage across multiple platformsrelease.yml: Release automation workflowThe CI pipeline uses a trigger-based approach where:
ci.yml triggers lint.ymllint.yml triggers test.yml only on successLint and Format (Stage 1)
rustfmtclippyTest and Coverage (Stage 2)
cargo-tarpaulinUse the justfile commands for local development:
# Run individual CI stages
just ci-lint-format # Linting and formatting checks
just ci-test # Tests and coverage
just ci-local # Full local CI pipeline
# Quick development checks
just quick-check # Quick compilation check
just quick-fmt # Format code
just quick-lint # Run clippy
just pre-commit # Pre-commit checks
# Development tools
just install-tools # Install required development tools
just check-tools # Check which tools are installed
just check-deps # Check for outdated dependencies
just check-deps-json # Check dependencies and save to JSON file
just check-deps-table # Check dependencies in table format
All workflows can be triggered manually from the GitHub Actions tab:
The CI pipeline automatically checks for outdated dependencies and:
Dependency check outputs:
cargo build
cargo test
cargo run -- basic
cargo run -- ruby
zackstrap/
โโโ src/
โ โโโ main.rs # CLI entry point
โ โโโ lib.rs # Library exports
โ โโโ config.rs # Configuration structures
โ โโโ error.rs # Error handling
โ โโโ generators.rs # File generation logic
โโโ tests/
โ โโโ integration_tests.rs
โโโ Cargo.toml
โโโ README.md
MIT License - see LICENSE file for details.
Zack Kitzmiller - GitHub