{"id":16663839,"url":"https://github.com/jonathanj/cacofonix","last_synced_at":"2025-04-09T19:04:20.566Z","repository":{"id":54886965,"uuid":"236709943","full_name":"jonathanj/cacofonix","owner":"jonathanj","description":"Python tool to generate changelogs from structured data.","archived":false,"fork":false,"pushed_at":"2022-11-09T08:42:17.000Z","size":155,"stargazers_count":3,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-02T04:42:05.231Z","etag":null,"topics":["changelog-generator","markdown","python","restructured-text","yaml"],"latest_commit_sha":null,"homepage":null,"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/jonathanj.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","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":"2020-01-28T10:32:01.000Z","updated_at":"2024-04-17T17:39:14.000Z","dependencies_parsed_at":"2022-08-14T05:50:17.775Z","dependency_job_id":null,"html_url":"https://github.com/jonathanj/cacofonix","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanj%2Fcacofonix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanj%2Fcacofonix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanj%2Fcacofonix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanj%2Fcacofonix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonathanj","download_url":"https://codeload.github.com/jonathanj/cacofonix/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248095049,"owners_count":21046770,"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":["changelog-generator","markdown","python","restructured-text","yaml"],"created_at":"2024-10-12T10:42:17.541Z","updated_at":"2025-04-09T19:04:20.532Z","avatar_url":"https://github.com/jonathanj.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"=========\ncacofonix\n=========\n\n.. image:: docs/Cacofonix.png\n\nComposing and compiling the epics of conquest, self-reflection and defeat in\nyour software projects. Singing them is better left as an exercise for the\nreader.\n\nInstallation\n------------\n\nFor general use purposes:\n\n.. code:: bash\n\n   pip3 install git+https://github.com/jonathanj/cacofonix.git\n\n\nFor development purposes:\n\n.. code:: bash\n\n   # Clone the repo.\n   git clone git@github.com:jonathanj/cacofonix.git\n   cd cacofonix\n   # Install the package with -e to use a \"source\" install, this runs the\n   # package from source instead of installing it, avoiding the need to\n   # continually install it when developing.\n   pip3 install -e .\n\nAfter installing the package, a command-line script will installed that can be\nrun as ``cacofonix``. If the script cannot be found then it is likely not on\nyour shell search path.\n\n\nConfiguration\n-------------\n\nSee `config.example.yaml`_ for a commented example configuration.\n\n.. _config.example.yaml: https://github.com/jonathanj/cacofonix/blob/master/config.example.yaml\n\n\nUsage\n-----\n\nCacofonix has two modes of operation:\n\n1. Compose new change fragments, to store in the repo until a later time.\n2. Compile a changelog from the existing change fragments, and merge these with\n   an existing changelog.\n\nIn both of these modes the ``--config`` option (required) must be specified\nbefore the subcommand:\n\n.. code:: bash\n\n   cacofonix --config path/to/config.yaml compose …\n\n\nComposing new fragments\n^^^^^^^^^^^^^^^^^^^^^^^\n\nThe basic usage is to use ``cacofonix compose`` to do the following:\n\n* Compose a new change fragment;\n* Write it to the change fragment directory, as specified in the configuration;\n* Stage the file in git.\n\nConsult ``cacofonix compose --help`` for detailed command-line help.\n\n\nCompiling changelogs\n^^^^^^^^^^^^^^^^^^^^\n\nThe basic usage is to use ``cacofonix compile`` to do the following:\n\n* Find uncompiled change fragments;\n* Convert each fragment to suitable markup;\n* Compile them together to create a new changelog, for one version;\n* Merge the new changelog into an existing changelog;\n* Clean up and stage the removals in git.\n\nConsult ``cacofonix compile --help`` for detailed command-line help.\n\n\nAcknowledgements\n----------------\n\nThanks to Amber Brown for `towncrier`_, upon which Cacofonix is built, (using\nprivate APIs, sorry!)\n\n.. _towncrier: https://github.com/hawkowl/towncrier\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanj%2Fcacofonix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathanj%2Fcacofonix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanj%2Fcacofonix/lists"}