All Projects → reubano → ongeza

reubano / ongeza

Licence: MIT license
An automated way to follow the Semantic Versioning Specification

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to ongeza

Jsemver
Java implementation of the SemVer Specification
Stars: ✭ 360 (+900%)
Mutual labels:  semver, versioning
Git Version Bumper
Bump your git tag to the next version, easily. 👊
Stars: ✭ 87 (+141.67%)
Mutual labels:  semver, versioning
React Native Version
🔢 Version your React Native or Expo app in a `npm version` fashion.
Stars: ✭ 408 (+1033.33%)
Mutual labels:  semver, versioning
terraform-module-versions
CLI tool that checks Terraform code for module updates. Single binary, no dependencies. linux, osx, windows. #golang #cli #terraform
Stars: ✭ 143 (+297.22%)
Mutual labels:  semver, versioning
Semver.c
Semantic version library written in ANSI C
Stars: ✭ 147 (+308.33%)
Mutual labels:  semver, versioning
perfekt
Release, changelog and version your packages with perfe(k)t 👌 ease!
Stars: ✭ 15 (-58.33%)
Mutual labels:  semver, versioning
Grabver
Gradle Automatic Build Versioning Plugin - An easy Gradle plugin that follows semver.org rules to automatically generate the Patch version, Build number and Code version, while Major, Minor and Pre-Release suffix remain under our control.
Stars: ✭ 39 (+8.33%)
Mutual labels:  semver, versioning
Shipjs
Take control of what is going to be your next release.
Stars: ✭ 668 (+1755.56%)
Mutual labels:  semver, versioning
Semver
Semantic versioning helper library for PHP
Stars: ✭ 144 (+300%)
Mutual labels:  semver, versioning
Reckon
Infer a project's version from your Git repository.
Stars: ✭ 124 (+244.44%)
Mutual labels:  semver, versioning
git-version-bumper
Bump your git tag to the next version, easily. 👊
Stars: ✭ 92 (+155.56%)
Mutual labels:  semver, versioning
Version
Represent and compare versions via semantic versioning (SemVer) in Swift
Stars: ✭ 160 (+344.44%)
Mutual labels:  semver, versioning
zerover
0️⃣ Minimalist versioning scheme for devs who can't be bothered.
Stars: ✭ 141 (+291.67%)
Mutual labels:  semver, versioning
Python Semver
Python package to work with Semantic Versioning (http://semver.org/)
Stars: ✭ 264 (+633.33%)
Mutual labels:  semver, versioning
Jgitver
jgit based library to calculate semver compatible version from git tree
Stars: ✭ 119 (+230.56%)
Mutual labels:  semver, versioning
Gitversion
From git log to SemVer in no time
Stars: ✭ 2,131 (+5819.44%)
Mutual labels:  semver, versioning
gradle-semantic-build-versioning
Gradle plugin to generate version-numbers and tags using semantic versioning
Stars: ✭ 19 (-47.22%)
Mutual labels:  semver, versioning
QuitStore
🖧 Quads in Git - Distributed Version Control for RDF Knowledge Bases
Stars: ✭ 87 (+141.67%)
Mutual labels:  versioning
minver
What are the minimum dependencies for your package?
Stars: ✭ 18 (-50%)
Mutual labels:  versioning
semver-explain
Explain semver requirements by converting them into less than, greater than, and/or equal to form.
Stars: ✭ 27 (-25%)
Mutual labels:  semver

ongeza: your project versioning personal assistant

travis versions pypi

sample ongeza usage

Index

Introduction | Requirements | Motivation | Usage | Installation | Project Structure | Design Principles | Limitations | Scripts | Contributing | License

Introduction

ongeza (Swahili for "increase") is a Python command line application (CLI) that makes following the Semantic Versioning Specification a breeze. If called with no options, ongeza will print the repo's current git tag version. With ongeza, you can

  • Quickly bump to a patch, minor, or major version
  • Stash uncommitted changes before bumping
  • Create a git tag with the new version number
  • Bump python, php, and javascript projects
  • and much more...

Requirements

ongeza has been tested and is known to work on Python 2.7, 3.4, and 3.5; and PyPy 4.0

Motivation

I think we can all agree that semver is awesome sauce. But while coding, who has time to constantly look up the current version and figure out the new version? I created ongeza to relieve myself from this pain of having to worry about version numbers. For example, to bump to a minor version inside a python git repo, simply type:

ongeza --type=minor

Or via the short option style:

ongeza -tn

As long as the repo contains a git tag with the current version, ongeza will automagically:

  • calculate the new version number
  • figure out which file(s) to update with the new version number
  • make the appropriate updates and commit the changes
  • create a git tag with the new version number

Usage

ongeza is intended to be used from the command line.

ongeza [options] <dir>

Basic Examples

show help

ongeza -h
usage: ongeza [options] <dir>

description: ongeza makes following the Semantic Versioning Specification a breeze.
If called with no options, ongeza will print the current git repository's tag version.
If <dir> is not specified, the current dir is used.

positional arguments:
  dir                   the project directory (default: /Users/reubano/Documents/Projects/ongeza).

optional arguments:
  -h, --help            show this help message and exit
  -t TYPE, --type TYPE  version bump type, must be one of:
                          m or major: [x].0.0
                          n or minor: x.[y].0
                          p or patch: x.y.[z]
  -s VERSION, --set VERSION
                        set arbitrary version number
  -S, --skip-commit     skip committing version bumped files
  -T, --tag             create git tag at HEAD with the bumped version number
  -p, --push            push to the remote origin
  -a, --stash           stash uncommitted changes
  -f FORMAT, --tag-format FORMAT
                        git tag format
  -F FORMAT, --tag-msg-format FORMAT
                        git tag message format
  -c FORMAT, --commit-msg-format FORMAT
                        git commit message format
  -g, --sign            make a GPG-signed tag (implies `--tag`)
  -i FILE, --file FILE  the versioned file
  -v, --version         Show version and exit.
  -V, --verbose         increase output verbosity

view current version

ongeza

bump to a `minor` version

ongeza --type=minor

or

ongeza -tn

manually set a version

ongeza --set 1.0.2

or

ongeza -s 1.0.2

bump to a `major` version and add a git tag

ongeza --tag --type=major

or

ongeza -Ttm

stash uncommitted changes and bump to a `patch` version

ongeza --stash --type=patch

or

ongeza -atp

Advanced Examples

bump to a `major` version and add a GPG signed git tag

ongeza --sign --type=major

or

ongeza -gtm

bump `weird.file` to a `minor` version and use custom formats

ongeza -tn --file='weird.file' --tag-format='{version}' --commit-msg-format='New version: {version}'

bump a remote directory to a `minor` version and use a custom tag message format

ongeza -tn --tag-msg-format='Release: {version}' /path/to/remote/dir

Installation

At the command line, install ongeza using either pip (recommended)

pip install --user ongeza

or (if you must) easy_install

easy_install ongeza

Project structure

┌── CHANGES.rst
├── CONTRIBUTING.rst
├── INSTALLATION.rst
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.rst
├── bin
│   └── ongeza
├── ongeza
│   ├── __init__.py
│   ├── git_utils.py
│   ├── main.py
│   └── shell_utils.py
├── dev-requirements.txt
├── helpers
│   ├── check-stage
│   ├── clean
│   ├── docs
│   ├── pippy
│   ├── srcdist
│   └── wheel
├── manage.py
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests
│   ├── __init__.py
│   ├── standard.rc
│   ├── test.py
│   └── test_ongeza.py
└── tox.ini

Design Principles

  • KISS: Keep it simple, stupid
  • Do one thing (version bumping), and do it well
  • Support the most common file types used for project versioning, e.g., __init__.py, package.json, etc.

Limitations

  • no built-in support for pre-release or build numbers, e.g., - 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92 - 1.0.0+build.1, 1.3.7+build.11.e0f985a

Scripts

ongeza comes with a built in task manager manage.py

Setup

pip install -r dev-requirements.txt

Examples

Run python linter and nose tests

manage lint
manage test

Contributing

Please mimic the coding style/conventions used in this repo. If you add new classes or functions, please add the appropriate doc blocks with examples. Also, make sure the python linter and nose tests pass.

Please see the contributing doc for more details.

License

ongeza is distributed under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].