Skip to content

Ino

  • Goddess that rescued Odysseus from drowning, before he stranded on the Island of the Phaeacians, Scheria.
  • Tool to create version names, tags and numbers

Why another one?

The web world knows a lot of tools to determine a version. Many of them use semantic versioning, which has benefits for libraries. Other ideas exist: dates, autoincrementing numbers, commit hashes, etc. What Ino solves is that it is one step above a bash script and much more lightweight than a whole javascript monolith that tries to solve everything.

Ino determines multiple versions simultaneously:

  • Semantic versioning
  • Autoincrement
  • Commit date
  • Commit hash

Commands

Release

Run ino (or ino auto) to automatically bump the package version based on the latest conventional commit, build and push the Docker image if a Dockerfile exists in the project root, then commit and push the release. Breaking changes (! or BREAKING CHANGE:) bump major; feat and perf bump minor; other messages default to patch.

Choose a bump explicitly with ino patch, ino minor, or ino major. Each command performs the same release flow. When a Dockerfile is present, it must declare the image name with a LABEL remote="owner/image"; Docker Buildx and authentication to that image's registry are then required. A git remote/current branch ready for git push is always required.

Output all versions

Run ino new to print the package semver, commit-count autoincrement, latest commit date, and full commit hash.

Dockerfile guidance

Run ino skill to print Markdown guidance for creating a root Dockerfile, including how to determine the image name for its required LABEL remote.

Run commands with injected version environment variables

Run ino exec <command...> to execute a command with all determined versions injected into its environment. Both the INO_* and VERSION_* forms are set: INO_VERSION/VERSION, INO_SEMVER/VERSION_SEMVER, INO_AUTOINCREMENT/VERSION_AUTOINCREMENT, INO_COMMIT_DATE/ VERSION_COMMIT_DATE, and INO_COMMIT_HASH/VERSION_COMMIT_HASH.

Example:

ino exec npm run build