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