Sign in

    moon-bump

    An elegant, interactive version bumping and release tool for MoonBit packages.

    cli
    versioning
    release
    semver
    moonbit
    Download zip
    Author
    Version
    0.1.5
    License
    MIT
    Last updated
    19 days ago
    Downloads
    19

    moon-bump is a blazing fast, highly aesthetic, and interactive version bumping tool built entirely in MoonBit. It is deeply inspired by bumpp, bringing the same delightful CLI experience to the MoonBit ecosystem.

    #โœจ Features

    • โšก๏ธ Pure MoonBit: Written entirely in MoonBit.
    • ๐ŸŽจ Guided Releases: Interactive release selection and confirmation when no release is specified.
    • ๐Ÿš€ Smart Git Integration: Automatically displays recent commits since the last release with beautiful color-coding.
    • ๐Ÿ“ฆ MoonBit Ready: Precisely edits top-level versions in moon.mod and supports lifecycle scripts.
    • ๐Ÿ› ๏ธ Fully Automated: Handles updating versions, committing, tagging, and pushing all in one go.

    #๐Ÿ“ฆ Installation

    The recommended installation method is the MoonBit package manager:

    moon install unmbt/moon-bump/cmd/moon-bump moon-bump -V

    moon install places the executable in ~/.moon/bin. Make sure that directory is included in your PATH.

    #Pre-compiled Binary

    If you prefer not to build from source, use the installation script for your system to download the latest GitHub Release.

    #Linux & macOS

    curl -fsSL https://raw.githubusercontent.com/unmbt/moon-bump/master/scripts/install.sh | bash

    #Windows (PowerShell)

    irm https://raw.githubusercontent.com/unmbt/moon-bump/master/scripts/install.ps1 | iex

    Note: The pre-compiled binary scripts install to ~/.unmbt and add that directory to your PATH. You may need to restart your terminal for the changes to take effect.

    #๐Ÿš€ Usage

    Navigate to your MoonBit project directory and simply run:

    moon-bump

    You will be greeted with an interactive prompt to choose the next version bump:

    ? Current version 0.0.1 ยป > patch 0.0.2 minor 0.1.0 major 1.0.0 next 0.0.2 conventional 0.0.2 pre-patch 0.0.2-beta.1 pre-minor 0.1.0-beta.1 pre-major 1.0.0-beta.1 as-is 0.0.1 custom ...

    #CLI Options

    You can also bypass the interactive prompt or customize the behavior using CLI flags:

    # Bump to a specific version directly moon-bump 1.2.3 # Bump patch version directly moon-bump patch # Customize commit message and tag moon-bump --commit "chore(release): v%s" --tag "v%s" # Skip pushing to git remote moon-bump --no-push # Execute a command after bumping moon-bump --execute "moon publish"

    #Full Options List

    OptionDescriptionDefault
    [release], --releaseprompt, next, conventional, a SemVer bump type, or an exact SemVerprompt
    [files...]Files to update; moon.mod is edited structurally, other files use boundary-aware replacementmoon.mod
    --preidPrerelease identifierbeta
    --commit, -cCommit message template; a value is requiredrelease: v%s
    --no-commitDisable the release commit, tag, and push while keeping file updates and lifecycle scriptsfalse
    --tag, -tAnnotated tag template; a value is requiredv%s
    --no-tagDisable taggingfalse
    --signSign the commit and tagfalse
    --push, -p / --no-pushPush the commit, then the release tagtrue
    --update / --no-updateRun moon update after file changesfalse
    --all, -aStage all changed filesfalse
    --git-check / --no-git-checkRequire a clean working treetrue
    --verify / --no-verifyRun or skip Git verification hookstrue
    --yes, -ySkip confirmationfalse
    --cwdWorking directory for files, Git, and commands.
    --recursive, -rFind all moon.mod files recursivelyfalse
    --ignore-scriptsIgnore preversion, version, and postversion scriptsfalse
    --execute, -xShell command after file updates and before the version script-
    --current-versionOverride the version used for calculation and text replacement-
    --print-commits / --no-print-commitsDisplay commits since the latest tagtrue
    --quiet, -qSuppress progress outputfalse
    --config, --configFilePathExplicit JSON configuration pathbump.config.json

    If a commit or tag template contains %s, every occurrence is replaced. Otherwise, the version is appended to the template.

    Selecting as-is, or otherwise resolving to the current version with no file edits, is a successful no-op. Lifecycle scripts, file writes, commits, tags, and pushes are skipped.

    #Configuration

    Configuration priority is defaults < bump.config.json < CLI. A missing default file is allowed; an explicitly requested missing or invalid file is an error. Supported JSON fields are release, preid, commit, tag, sign, push, update, all, noGitCheck, confirm, noVerify, files, cwd, ignoreScripts, recursive, printCommits, quiet, currentVersion, and execute.

    { "release": "conventional", "update": true, "commit": "release: v%s", "tag": "v%s", "files": ["moon.mod", "README.md"] }

    Lifecycle scripts are read from options(scripts) in the primary moon.mod. The execution order is preversion -> file updates -> moon update -> execute -> version -> commit -> annotated tag -> postversion -> push commit -> push release tag. Remote pushes always happen last, and only the tag created for the current release is pushed.

    #๐Ÿ“„ License

    MIT License ยฉ 2026

    Powered by MoonBit

    Site sourceReport issuePackagesBuild queueSkillsStatistics

    ยฉ 2026 mooncakes.io