This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

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.

Release History

Release History

1.12.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.11.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.11.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.10.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.9.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.9.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.9.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.9.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.8.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.8.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.8.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.7.7

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
ongeza-1.12.0-py2.py3-none-any.whl (15.7 kB) Copy SHA256 Checksum SHA256 py2.py3 Wheel Jun 6, 2016
ongeza-1.12.0.tar.gz (18.3 kB) Copy SHA256 Checksum SHA256 Source Jun 6, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting