{"id":17312873,"url":"https://github.com/9seconds/scd","last_synced_at":"2025-03-27T01:16:21.104Z","repository":{"id":57464215,"uuid":"76641805","full_name":"9seconds/scd","owner":"9seconds","description":"Make version bumping underoverengineered!","archived":false,"fork":false,"pushed_at":"2017-02-14T14:53:35.000Z","size":140,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-03T05:36:14.907Z","etag":null,"topics":["bump","bumpversion","command-line","release-management"],"latest_commit_sha":null,"homepage":"http://scd.readthedocs.io/","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/9seconds.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-16T09:44:05.000Z","updated_at":"2020-06-16T14:18:05.000Z","dependencies_parsed_at":"2022-09-17T14:52:38.036Z","dependency_job_id":null,"html_url":"https://github.com/9seconds/scd","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9seconds%2Fscd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9seconds%2Fscd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9seconds%2Fscd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9seconds%2Fscd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/9seconds","download_url":"https://codeload.github.com/9seconds/scd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245761303,"owners_count":20667895,"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":["bump","bumpversion","command-line","release-management"],"created_at":"2024-10-15T12:44:53.308Z","updated_at":"2025-03-27T01:16:21.086Z","avatar_url":"https://github.com/9seconds.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"And Now for Something Completely Different!\n===========================================\n\n|PyPI| |Build Status| |Code Coverage|\n\n.. contents::\n    :depth: 2\n    :backlinks: none\n\nscd (something competely different) is a small tool with one\nintention: make your version bumping underoverengineered.\nIt takes slightly different approach than `bumpversion\n\u003chttps://github.com/peritus/bumpversion\u003e`_: it does not make commits or\ntags and do not updates version by command. It takes configuration file\nand adjust your version regarding this file.\n\nIt may seems a little bit complex, but it works really-really well if\nyou have a complex setup, where you need to manage versions not only in\nliteral format, but in different, complex ways in absolutely different\nfiles. Also, it can eliminate a huge amount of copypasting in your\n``.bumpversion.cfg``. Also, it works with regular expressions therefore\nit can eliminate design restrictions of bumpversion.\n\nPlease check `official documentation \u003chttp://scd.readthedocs.io\u003e`_ for\ndetails. This README file is just a whirlwind tour.\n\n\nInstallation\n++++++++++++\n\nAs any Python package, you can install scd with pip or sources.\n\n.. code-block:: bash\n\n    pip install scd[yaml,colors]\n\nor\n\n.. code-block:: bash\n\n    git clone https://github.com/9seconds/scd\n    cd scd\n    python setup.py install\n\n\nConfiguration\n+++++++++++++\n\nHere is an example how can configuration file may looks like:\n\n.. code-block:: yaml\n\n   version:\n     number: 1.0.1\n     scheme: semver\n\n   search_patterns:\n     full: \"{{ semver }}\"\n     vfull: \"v{{ semver }}\"\n     major_minor_block: \"\\\\d+\\\\.\\\\d+(?=\\\\s\\\\#\\\\sBUMPVERSION)\"\n\n   replacement_patterns:\n     full: \"{{ full }}\"\n     major_minor: \"{{ major }}.{{ minor }}\"\n     major_minor_p: \"{{ major }}.{{ minor }}{% if patch %}.{{ patch }}{% endif %}\"\n\n   defaults:\n     search: full\n     replace: full\n\n   files:\n     setup.py:\n       - search_raw: \"(?\u003e=version\\\\s=\\\\s\\\\\\\"){{ full }}\"\n     docs/conf.py:\n       - default\n       - search: vfull\n         replace: major_minor_p\n       - search: major_minor_block\n         replace_raw: \"{{ next_major }}\"\n\nYes, YAML! But you can use JSON or TOML also.\n\nMustaches are `Jinja2 \u003chttp://jinja.pocoo.org/\u003e`_ templates (like in\n`Ansible \u003chttps://www.ansible.com/\u003e`_, for example). Also, as you can\nsee, it is possible to have a list of replacements per file.\n\nAnd yes, versioning is done by schemes.\n\nYou can find a `thorough explanations\n\u003chttp://scd.readthedocs.io/en/latest/configuration.html\u003e`_ in docs.\n\n\nUsage\n+++++\n\nWell, you would not belive, but\n\n.. code-block:: bash\n\n    scd\n\nor more verbose\n\n.. code-block:: bash\n\n    scd -v\n    \u003e\u003e\u003e Use /home/sergey/dev/pvt/scd/.scd.yaml as config file\n    \u003e\u003e\u003e Parsed config as YAML\n    \u003e\u003e\u003e Version is 0.1.0.dev34+342f2c2\n    \u003e\u003e\u003e Start to process /home/sergey/dev/pvt/scd/setup.py\n    \u003e\u003e\u003e Modify 'version=\"0.0.1\",' to 'version=\"0.1.0.dev34+342f2c2\",'\n    \u003e\u003e\u003e Start to process /home/sergey/dev/pvt/scd/docs/source/conf.py\n    \u003e\u003e\u003e Modify \"version = '1.0'\" to \"0.1'\"\n    \u003e\u003e\u003e Modify \"release = '1.0.0b1'\" to \"0.1.0'\"\n    \u003e\u003e\u003e Start to process /home/sergey/dev/pvt/scd/scd/__init__.py\n    \u003e\u003e\u003e Modify '__version__ = \"0.1.0\"' to '0.1.0.dev34\"'\n\n\nWhy scd?\n++++++++\n\nBecause every version releases look the same.\n\n.. image:: https://img.youtube.com/vi/FGK8IC-bGnU/0.jpg\n    :alt: John Cleese on Something Completely Different\n    :width: 560\n    :target: https://www.youtube.com/watch?v=FGK8IC-bGnU\n\n.. |PyPI| image:: https://img.shields.io/pypi/v/scd.svg\n    :target: https://pypi.python.org/pypi/scd\n\n.. |Build Status| image:: https://travis-ci.org/9seconds/scd.svg?branch=master\n    :target: https://travis-ci.org/9seconds/scd\n\n.. |Code Coverage| image:: https://codecov.io/gh/9seconds/scd/branch/master/graph/badge.svg\n    :target: https://codecov.io/gh/9seconds/scd\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F9seconds%2Fscd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F9seconds%2Fscd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F9seconds%2Fscd/lists"}