{"id":17046470,"url":"https://github.com/reubano/ongeza","last_synced_at":"2025-04-12T15:30:50.720Z","repository":{"id":4904582,"uuid":"6060733","full_name":"reubano/ongeza","owner":"reubano","description":"An automated way to follow the Semantic Versioning Specification","archived":false,"fork":false,"pushed_at":"2022-12-27T14:55:24.000Z","size":408,"stargazers_count":38,"open_issues_count":7,"forks_count":9,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T10:04:53.309Z","etag":null,"topics":["cli","featured","semver","versioning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reubano.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-10-03T13:50:08.000Z","updated_at":"2024-11-23T20:43:32.000Z","dependencies_parsed_at":"2023-01-13T13:17:28.692Z","dependency_job_id":null,"html_url":"https://github.com/reubano/ongeza","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reubano%2Fongeza","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reubano%2Fongeza/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reubano%2Fongeza/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reubano%2Fongeza/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reubano","download_url":"https://codeload.github.com/reubano/ongeza/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248589308,"owners_count":21129588,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","featured","semver","versioning"],"created_at":"2024-10-14T09:46:22.631Z","updated_at":"2025-04-12T15:30:50.323Z","avatar_url":"https://github.com/reubano.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"ongeza: your project versioning personal assistant\n==================================================\n|travis| |versions| |pypi|\n\n.. image:: https://raw.githubusercontent.com/reubano/ongeza/master/ongeza.png\n    :alt: sample ongeza usage\n    :width: 800\n    :align: center\n\nIndex\n-----\n`Introduction`_ | `Requirements`_ | `Motivation`_ | `Usage`_ | `Installation`_ |\n`Project Structure`_ | `Design Principles`_ | `Limitations`_ | `Scripts`_ |\n`Contributing`_ | `License`_\n\nIntroduction\n------------\n\nongeza (Swahili for \"increase\") is a Python `command line application \u003c#usage\u003e`_ (CLI)\nthat makes following the `Semantic Versioning Specification`_ a breeze.\nIf called with no options, ``ongeza`` will print the repo's current git tag\nversion. With ongeza, you can\n\n- Quickly bump to a ``patch``, ``minor``, or ``major`` version\n- Stash uncommitted changes before bumping\n- Create a git tag with the new version number\n- Bump python, php, and javascript projects\n- and much more...\n\nRequirements\n------------\n\nongeza has been tested and is known to work on Python 2.7, 3.4, and 3.5;\nand PyPy 4.0\n\nMotivation\n----------\n\nI think we can all agree that `semver`_ is awesome sauce. But while\ncoding, who has time to constantly look up the current version and figure out\nthe new version? I created ongeza to relieve myself from this pain of having to\nworry about version numbers. For example, to bump to a ``minor`` version\ninside a python ``git`` repo, simply type:\n\n.. code-block:: bash\n\n    ongeza --type=minor\n\nOr via the short option style:\n\n.. code-block:: bash\n\n    ongeza -tn\n\nAs long as the repo contains a git tag with the current version, ongeza will\nautomagically:\n\n- calculate the new version number\n- figure out which file(s) to update with the new version number\n- make the appropriate updates and commit the changes\n- create a git tag with the new version number\n\nUsage\n-----\n\nongeza is intended to be used from the command line.\n\n.. code-block:: bash\n\n    ongeza [options] \u003cdir\u003e\n\nBasic Examples\n~~~~~~~~~~~~~~\n\n*show help*\n\n.. code-block:: bash\n\n    ongeza -h\n\n.. code-block:: bash\n\n    usage: ongeza [options] \u003cdir\u003e\n\n    description: ongeza makes following the Semantic Versioning Specification a breeze.\n    If called with no options, ongeza will print the current git repository's tag version.\n    If \u003cdir\u003e is not specified, the current dir is used.\n\n    positional arguments:\n      dir                   the project directory (default: /Users/reubano/Documents/Projects/ongeza).\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -t TYPE, --type TYPE  version bump type, must be one of:\n                              m or major: [x].0.0\n                              n or minor: x.[y].0\n                              p or patch: x.y.[z]\n      -s VERSION, --set VERSION\n                            set arbitrary version number\n      -S, --skip-commit     skip committing version bumped files\n      -T, --tag             create git tag at HEAD with the bumped version number\n      -p, --push            push to the remote origin\n      -a, --stash           stash uncommitted changes\n      -f FORMAT, --tag-format FORMAT\n                            git tag format\n      -F FORMAT, --tag-msg-format FORMAT\n                            git tag message format\n      -c FORMAT, --commit-msg-format FORMAT\n                            git commit message format\n      -g, --sign            make a GPG-signed tag (implies `--tag`)\n      -i FILE, --file FILE  the versioned file\n      -v, --version         Show version and exit.\n      -V, --verbose         increase output verbosity\n\n*view current version*\n\n.. code-block:: bash\n\n    ongeza\n\n*bump to a `minor` version*\n\n.. code-block:: bash\n\n    ongeza --type=minor\n\nor\n\n.. code-block:: bash\n\n    ongeza -tn\n\n*manually set a version*\n\n.. code-block:: bash\n\n    ongeza --set 1.0.2\n\nor\n\n.. code-block:: bash\n\n    ongeza -s 1.0.2\n\n*bump to a `major` version and add a git tag*\n\n.. code-block:: bash\n\n    ongeza --tag --type=major\n\nor\n\n.. code-block:: bash\n\n    ongeza -Ttm\n\n*stash uncommitted changes and bump to a `patch` version*\n\n.. code-block:: bash\n\n    ongeza --stash --type=patch\n\nor\n\n.. code-block:: bash\n\n    ongeza -atp\n\nAdvanced Examples\n~~~~~~~~~~~~~~~~~\n\n*bump to a `major` version and add a GPG signed git tag*\n\n.. code-block:: bash\n\n    ongeza --sign --type=major\n\nor\n\n.. code-block:: bash\n\n    ongeza -gtm\n\n*bump `weird.file` to a `minor` version and use custom formats*\n\n.. code-block:: bash\n\n    ongeza -tn --file='weird.file' --tag-format='{version}' --commit-msg-format='New version: {version}'\n\n*bump a remote directory to a `minor` version and use a custom tag message format*\n\n.. code-block:: bash\n\n    ongeza -tn --tag-msg-format='Release: {version}' /path/to/remote/dir\n\nInstallation\n------------\n\nAt the command line, install ongeza using either ``pip`` (*recommended*)\n\n.. code-block:: bash\n\n    pip install --user ongeza\n\nor (if you must) ``easy_install``\n\n.. code-block:: bash\n\n    easy_install ongeza\n\nProject structure\n-----------------\n\n.. code-block:: bash\n\n    ┌── CHANGES.rst\n    ├── CONTRIBUTING.rst\n    ├── INSTALLATION.rst\n    ├── LICENSE\n    ├── MANIFEST.in\n    ├── Makefile\n    ├── README.rst\n    ├── bin\n    │   └── ongeza\n    ├── ongeza\n    │   ├── __init__.py\n    │   ├── git_utils.py\n    │   ├── main.py\n    │   └── shell_utils.py\n    ├── dev-requirements.txt\n    ├── helpers\n    │   ├── check-stage\n    │   ├── clean\n    │   ├── docs\n    │   ├── pippy\n    │   ├── srcdist\n    │   └── wheel\n    ├── manage.py\n    ├── requirements.txt\n    ├── setup.cfg\n    ├── setup.py\n    ├── tests\n    │   ├── __init__.py\n    │   ├── standard.rc\n    │   ├── test.py\n    │   └── test_ongeza.py\n    └── tox.ini\n\nDesign Principles\n-----------------\n\n- KISS: Keep it simple, stupid\n- Do one thing (version bumping), and do it well\n- Support the most common file types used for project versioning, e.g.,\n  ``__init__.py``, ``package.json``, etc.\n\nLimitations\n-----------\n\n* no built-in support for pre-release or build numbers, e.g.,\n  - 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92\n  - 1.0.0+build.1, 1.3.7+build.11.e0f985a\n\nScripts\n-------\n\nongeza comes with a built in task manager ``manage.py``\n\nSetup\n~~~~~\n\n.. code-block:: bash\n\n    pip install -r dev-requirements.txt\n\nExamples\n~~~~~~~~\n\n*Run python linter and nose tests*\n\n.. code-block:: bash\n\n    manage lint\n    manage test\n\nContributing\n------------\n\nPlease mimic the coding style/conventions used in this repo.\nIf you add new classes or functions, please add the appropriate doc blocks with\nexamples. Also, make sure the python linter and nose tests pass.\n\nPlease see the `contributing doc`_ for more details.\n\nLicense\n-------\n\nongeza is distributed under the `MIT License`_.\n\n.. |travis| image:: https://img.shields.io/travis/reubano/ongeza/master.svg\n    :target: https://travis-ci.org/reubano/ongeza\n\n.. |versions| image:: https://img.shields.io/pypi/pyversions/ongeza.svg\n    :target: https://pypi.python.org/pypi/ongeza\n\n.. |pypi| image:: https://img.shields.io/pypi/v/ongeza.svg\n    :target: https://pypi.python.org/pypi/ongeza\n\n.. _MIT License: http://opensource.org/licenses/MIT\n.. _semver: http://semver.org/\n.. _Semantic Versioning Specification: http://semver.org/\n.. _virtualenv: http://www.virtualenv.org/en/latest/index.html\n.. _contributing doc: https://github.com/reubano/ongeza/blob/master/CONTRIBUTING.rst\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freubano%2Fongeza","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freubano%2Fongeza","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freubano%2Fongeza/lists"}