@muverse/cli
v0.2.11
Published
Version Engine for Repo Semantic Evolution (CLI)
Maintainers
Readme
@muverse/cli - Command-Line Interface
Command-line interface for μVERSE (Version Engine for Repo Semantic Evolution). This CLI provides all the power of μVERSE's semantic versioning engine through an easy-to-use command-line tool, perfect for local development and custom CI/CD systems.
Installation
Global Installation
npm install -g @muverse/cliLocal Installation
npm install --save-dev @muverse/cliUsing npx (no installation)
px @muverse/cliUsage
Basic Usage
Navigate to your project root and run:
muverseThis will:
- Detect your project type (Gradle, etc.)
- Analyze commits since the last version
- Calculate version bumps based on Conventional Commits
- Update version files
- Generate changelogs
- Create git commits and tags
- Push changes to remote
Dry Run
Preview what would happen without making changes:
muverse --dry-runSpecify Project Root
muverse /path/to/projectSpecify Adapter
If auto-detection fails or you want to be explicit:
muverse --adapter gradleCommand Reference
muverse [REPOSITORYROOT]
Calculate and apply semantic version changes.
Arguments:
REPOSITORYROOT- Path to the repository root (default:.)
Flags:
| Flag | Description | Default |
| ------ | ------------- | --------- |
| --dry-run | Run without writing or pushing changes | false |
| --adapter <value> | Language adapter (e.g., gradle). Auto-detected if not provided | - |
| --push-tags | Push tags to origin | true |
| --no-push-tags | Don't push tags to origin | - |
| --prerelease-mode | Generate pre-release versions instead of final versions | false |
| --prerelease-id <value> | Pre-release identifier (e.g., alpha, beta, rc) | alpha |
| --bump-unchanged | In prerelease mode, bump modules even when no changes are detected | false |
| --add-build-metadata | Add build metadata with short SHA to all versions | false |
| --timestamp-versions | Use timestamp-based prerelease identifiers (requires prerelease-mode) | false |
| --append-snapshot | Add -SNAPSHOT suffix to all versions if supported by adapter | false |
| --push-changes | Commit and push version changes and changelogs to remote | true |
| --no-push-changes | Don't commit and push changes | - |
| --generate-changelog | Generate or update changelog files for changed modules | true |
| --no-generate-changelog | Don't generate changelogs | - |
| --output-file <value> | Write calculated versions to a file in JSON format | - |
📖 Detailed Pre-release Documentation: See @muverse/core PRERELEASE.md for comprehensive examples and use cases.
Examples
Release Version
Apply semantic versions based on commits:
muversePre-release Versions
Generate beta pre-release versions:
muverse --prerelease-mode --prerelease-id betaTimestamp Versions
Generate timestamp-based pre-release versions for CI builds:
muverse --prerelease-mode --prerelease-id alpha --timestamp-versions --add-build-metadataThis generates versions like: 1.2.3-alpha.20251208.1530+abc1234
Gradle SNAPSHOT Versions
Generate Gradle SNAPSHOT versions:
muverse --append-snapshotDevelopment Workflow
Bump all modules (even unchanged) for development:
muverse --prerelease-mode --bump-unchangedLocal Testing
Test without committing or pushing:
muverse --dry-run --no-push-changes --no-push-tagsManual Git Operations
Calculate versions without automatic git operations:
muverse --no-push-changes --no-push-tagsThen manually review, commit, and push.
Configuration
μVERSE CLI uses the same configuration system as the core library. Configuration files are automatically detected in your repository root.
Supported Configuration Files
package.json(in a"muverse"property).muverserc(JSON or YAML).muverserc.json.muverserc.yaml/.muverserc.yml.muverserc.js(JavaScript)muverse.config.js(JavaScript)
Configuration Example
.muverserc.json:
{
"defaultBump": "patch",
"commitTypes": {
"feat": "minor",
"fix": "patch",
"perf": "patch",
"refactor": "patch",
"docs": "ignore",
"test": "ignore",
"chore": "ignore"
},
"dependencyRules": {
"onMajorOfDependency": "minor",
"onMinorOfDependency": "patch",
"onPatchOfDependency": "none"
}
}For more configuration examples, see the core package documentation.
Gradle Project Support
The CLI supports Gradle projects with:
- Multi-module projects via
settings.gradle(.kts) - Version management through root
gradle.propertiesfile - Dependency detection via custom Gradle init script
- Both DSLs: Groovy and Kotlin
Example Project Structure
myproject/
├── settings.gradle.kts
├── build.gradle.kts
├── gradle.properties # All module versions defined here
├── core/
│ └── build.gradle.kts
└── api/
└── build.gradle.ktsExample gradle.properties
# Root module version
version=1.0.0
# Submodule versions
core.version=2.1.0
api.version=1.5.0Commit Message Format
μVERSE uses Conventional Commits to determine version bumps:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]Examples:
feat(api): add new endpoint→ minor bumpfix(core): resolve memory leak→ patch bumpfeat!: breaking API change→ major bump
Breaking Changes
Breaking changes trigger major version bumps:
Using
!after the type:feat!: remove deprecated APIUsing
BREAKING CHANGE:in the footer:feat: update API BREAKING CHANGE: The old API is removed
CI/CD Integration
GitHub Actions
- name: Install μVERSE CLI
run: npm install -g @muverse/cli
- name: Version modules
run: muverse --adapter gradleGitLab CI
version:
script:
- npm install -g @muverse/cli
- muverse --adapter gradleJenkins
stage('Version') {
steps {
sh 'npm install -g @muverse/cli'
sh 'muverse --adapter gradle'
}
}Local Development
Add to your package.json:
{
"scripts": {
"version": "muverse --dry-run",
"version:release": "muverse"
}
}Then run:
npm run version # Dry run
npm run version:release # Actual releaseTroubleshooting
Command Not Found
If muverse is not found after global installation:
- Check npm global bin path:
npm bin -g - Ensure it's in your PATH
- Try using npx:
npx @muverse/cli
Permission Denied on Push
If you get permission errors when pushing:
- Ensure you have proper git credentials configured
- Check if you have write access to the repository
- Use
--no-push-changes --no-push-tagsto skip git operations
No Version Bump Detected
If versions aren't bumping:
- Check commit messages follow Conventional Commits format
- Verify you have commits since the last version
- Check configuration if certain commit types are ignored
- Use
--dry-runto see what μVERSE detects
Adapter Not Detected
If auto-detection fails:
- Verify your project has the expected build files
- Explicitly specify the adapter:
--adapter gradle - Check if your project structure is supported
Development
Building from Source
# From monorepo root
npm install
npm run build
# Or from CLI package
cd packages/cli
npm install
npm run buildRunning Locally
# After building
node dist/index.js --dry-runPublishing
npm publish --workspace packages/cli --access publicRelated Packages
- @muverse/core - Core library for custom integrations
- @muverse/action - GitHub Actions integration
License
MIT License - see LICENSE for details.
