{"id":15679366,"url":"https://github.com/fornever/changelogautomation","last_synced_at":"2026-02-07T02:02:47.803Z","repository":{"id":51288126,"uuid":"356623869","full_name":"ForNeVeR/ChangelogAutomation","owner":"ForNeVeR","description":"A handy tool to automate changelog processing in CI.","archived":false,"fork":false,"pushed_at":"2025-10-06T21:52:30.000Z","size":145,"stargazers_count":15,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-06T23:31:43.240Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","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/ForNeVeR.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-04-10T15:35:39.000Z","updated_at":"2025-10-06T21:52:32.000Z","dependencies_parsed_at":"2024-03-23T20:23:32.973Z","dependency_job_id":"1a8a16af-f0db-494e-9517-ceff388280a9","html_url":"https://github.com/ForNeVeR/ChangelogAutomation","commit_stats":{"total_commits":64,"total_committers":1,"mean_commits":64.0,"dds":0.0,"last_synced_commit":"e9d1cb944514e76a1912da16df29980780bb742b"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ForNeVeR/ChangelogAutomation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FChangelogAutomation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FChangelogAutomation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FChangelogAutomation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FChangelogAutomation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ForNeVeR","download_url":"https://codeload.github.com/ForNeVeR/ChangelogAutomation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FChangelogAutomation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017981,"owners_count":26086212,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-10-03T16:29:42.377Z","updated_at":"2026-02-07T02:02:47.797Z","avatar_url":"https://github.com/ForNeVeR.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nSPDX-FileCopyrightText: 2021-2026 Friedrich von Never \u003cfriedrich@fornever.me\u003e\n\nSPDX-License-Identifier: MIT\n--\u003e\n\nChangelogAutomation [![Status Terrid][status-terrid]][andivionian-status-classifier]\n===================\n\nWhen preparing a software release, a common task is to parse [the changelog file][keep-a-changelog], and extract the latest changes section from it. For certain purposes, Markdown format is acceptable, but in some cases a text format is also useful.\n\nChangelogAutomation is a tool for this exact purpose. It will extract the first second-level section from a Markdown file either in a text or in a Markdown format, and will print it to a file or to its stdout.\n\n\"Second-level section\" is a section preceded by a level 2 header; any of these:\n\n```markdown\n## Level 2 header\n…some section content…\n\nAlso level 2 header\n-------------------\n…some section content…\n```\n\nPrerequisites\n-------------\nIf you use the standalone tool (see below),\nthen ChangelogAutomation will require the .NET 9 dependencies\n(but not the .NET 9 runtime itself) to be available on the user machine to run.\nSee more information [in the documentation][docs.dotnet.install].\n\nUsage\n-----\n\n### GitHub Actions\n\nThere's a separate repository with GitHub Action integration of this tool. Check out [the documentation][github-actions].\n\n### Console Tool [![NuGet Package][nuget.badge.tool]][nuget.package.tool]\n\nChangelogAutomation is available for installation in two variants:\n- as a .NET tool:\n  ```console\n  $ dotnet tool install --global ChangelogAutomation.Tool\n  ```\n- as a standalone native tool for several operating systems on the [GitHub releases page][releases].\n\nThen you can run the tool using:\n```console\n$ ChangelogAutomation \u003cpath-to-input-file\u003e [options…]\n```\n\nThis invocation will extract the first second-level section of the file and write it to the output\n(either the standard output or an optional output file).\n\nThe available *options* are:\n\n- `(-o|--output-file-path) \u003coutput-file-path\u003e` (if not specified, then will print to stdout)\n- `(-t|--content-type) (Markdown|PlainText)`: output content type\n\n### MSBuild [![NuGet Package][nuget.badge.msbuild]][nuget.package.msbuild]\n\nThere's an MSBuild task package available. The package will automatically integrate with `dotnet pack`, and extract the latest changelog entry into the `\u003creleaseNotes\u003e` element in the `.nuspec` file.\n\nJust add a package reference to `ChangelogAutomation.MSBuild` package, and the task will automatically be enabled. It will set the `PackageReleaseNotes` property to the latest version section contents (this is a standard property, will then be used by NuGet integration automatically).\n\nThere are MSBuild properties to tune its behavior:\n\n- `DisableChangelogAutomationTask`: set this to `true` to disable the automatic task invocation (if you want to register it with the custom parameters).\n- `ChangelogFilePath`: point it to the `CHANGELOG.md` file. By default, will be set to `../CHANGELOG.md` (resolved relatively to the project file location).\n- `ReleaseNotesOutputType`: either `Markdown` or `PlainText`. If not set, defaults to `PlainText`.\n\nDocumentation\n-------------\n\n- [Changelog][changelog]\n- [Contributor Guide][docs.contributing]\n- [Maintainership][maintainership]\n\nLicense\n-------\nThe project is distributed under the terms of [the MIT license][docs.license].\n\nThe license indication in the project's sources is compliant with the [REUSE specification v3.3][reuse.spec].\n\n[andivionian-status-classifier]: https://andivionian.fornever.me/v1/#status-terrid-\n[changelog]: ./CHANGELOG.md\n[docs.contributing]: CONTRIBUTING.md\n[docs.dotnet.install]: https://learn.microsoft.com/en-us/dotnet/core/install/\n[docs.license]: ./LICENSE.md\n[dotnet-sdk]: https://dotnet.microsoft.com/\n[github-actions]: https://github.com/marketplace/actions/changelogautomation-action\n[keep-a-changelog]: http://keepachangelog.com/\n[maintainership]: ./MAINTAINERSHIP.md\n[nuget.badge.msbuild]: https://img.shields.io/nuget/v/ChangelogAutomation.MSBuild\n[nuget.badge.tool]: https://img.shields.io/nuget/v/ChangelogAutomation.Tool\n[nuget.package.msbuild]: https://www.nuget.org/packages/ChangelogAutomation.MSBuild/\n[nuget.package.tool]: https://www.nuget.org/packages/ChangelogAutomation.Tool/\n[releases]: https://github.com/ForNeVeR/ChangelogAutomation/releases\n[reuse.spec]: https://reuse.software/spec-3.3/\n[status-terrid]: https://img.shields.io/badge/status-terrid-green.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffornever%2Fchangelogautomation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffornever%2Fchangelogautomation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffornever%2Fchangelogautomation/lists"}