Code Monkey home page Code Monkey logo

badabump's Introduction

Hm...

Not sure what to write here...

badabump's People

Contributors

badabump-release-bot[bot] avatar dependabot[bot] avatar github-actions[bot] avatar playpauseandstop avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

badabump's Issues

Support release notes from cli args

When release PR created from latest pre-release commit, message of "No changes from latest pre-release" appended to release notes, but most of the times additional release notes should be provided to CHANGELOG and other mediums instead.

With that in mind need to allow badabump expect on release notes message in cli args.

Allow to create “final” release PR

When current version is a pre-release there should be an ability to create final release PR even no changes available.

For example,

  • Current release: 20.1.0b0
  • badabump should change version to 20.1.0
  • And add line of “No changes from last pre-release” into the changelog

Support pre-releases with multiple digits

TLDR: Seems like badabump doesn't properly handle version tags of pre-releases with multiple digits, such as v21.1.0a10

Got strange issues on running, python3 -m badabump.ci prepare_release "refs/tags/v21.1.0a10",

Traceback (most recent call last):
  File "/Users/playpauseandstop/.pyenv/versions/3.8.8/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/Users/playpauseandstop/.pyenv/versions/3.8.8/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/Users/playpauseandstop/.pyenv/versions/3.8.8/lib/python3.8/site-packages/badabump/ci/__main__.py", line 5, in <module>
    raise SystemExit(main())
  File "/Users/playpauseandstop/.pyenv/versions/3.8.8/lib/python3.8/site-packages/badabump/cli/ci_app.py", line 113, in main
    return cast(int, args.func(args, config=config))
  File "/Users/playpauseandstop/.pyenv/versions/3.8.8/lib/python3.8/site-packages/badabump/cli/ci_app.py", line 52, in prepare_release
    version = Version.from_tag(tag_ref, config=config)
  File "/Users/playpauseandstop/.pyenv/versions/3.8.8/lib/python3.8/site-packages/badabump/versions/version.py", line 30, in from_tag
    return cls.parse(
  File "/Users/playpauseandstop/.pyenv/versions/3.8.8/lib/python3.8/site-packages/badabump/versions/version.py", line 79, in parse
    pre_release=pre_release.PreRelease.from_parsed_dict(
  File "/Users/playpauseandstop/.pyenv/versions/3.8.8/lib/python3.8/site-packages/badabump/versions/pre_release.py", line 73, in from_parsed_dict
    pre_release_type=guess_pre_release_type(
  File "/Users/playpauseandstop/.pyenv/versions/3.8.8/lib/python3.8/site-packages/badabump/versions/pre_release.py", line 120, in guess_pre_release_type
    return {
KeyError: 'a1'

Need to figure out where the problem and fix it to support pre-releases with multiple digits.

Support monorepo with multiple projects

There is a situation when same project directory can have multiple projects as well as one repository can have multiple projects, need to find a way on how to support both of these cases.

Highlight breaking changes from Other section

If BREAKING CHANGES: only happened in Other section it is hard to visually find them within Release Notes.

To fix this, need to move those BREAKING CHANGES: under the new Breaking Changes section to make them easy to observe. But do not move out those lines from Other section if there are any other Breaking Changes into Features / Fixes / Refactoring sections.

Understand more footer issue references

As of now badabump understands only Issue: XXX footer issue references, but it should understands other issue references as,

  • Closes: XXX
  • Fixes: XXX
  • Ref: XXX
  • Relates: XXX

Ensure Python 3.11 compatibility

At a moment Python 3.11 build failed at CI with weird git error, while all other Python versions run clean.

Need to investigate deeply and fix this issue.

Next CalVer does not restart major part on year change

If previous version is 20.6.0 badabump will prepare 21.7.0 release instead of 21.1.0. Need to fix the logic in CalVer update and ensure that any previous release for schema YYYY.MAJOR.MINOR like:

  • 18.1.0
  • 19.3.0-rc1
  • 20.6.8

will result in 21.1.0 version if the year is changed.

Provide documentation

Need to provide documentation for badabump CLI tool, how it works, how to setup GitHub Actions workflows, success stories, and reasoning why this tool exists.

Increase test coverage for badabump

Need to provide tests to cover all badabump usage scenarios,

  • Running badabump for repository without tags
  • Running badabump for repository with tag
  • Running badabump-ci for parsing last commit
  • Running badabump-ci for parsing tag info

By default ignore related / fixes URLs on creating changes summary

At a moment if commit message looks like,

fix(users): Change password policy

Do not expect user to put special character in their
passwords.

Issue: PROJ-123
Fixes: https://sentry.io/organizations/organization/project/123/

It will result in next CHANGELOG entry,

## Fixes

- [PROJ-123, https://sentry.io/organizations/organization/project/123/] Change password policy

which is not very useful as GitHub do not auto-link URLs.

With that in mind need to disable adding URLs from footer blocks by default, and allow to enable previous behaviour by setting,

[tool.badabump]
changelog_ignore_footer_urls = false

in pyproject.toml file.

Join commit messages when possible

If git commits for changelog contain same commit messages, such as,

- chore: Sync common project files (#XYZ)
- feat: Shiny new feature
- chore: Sync common project files (#YZA)

need to join Sync common project files commit into one line,

- Sync common project files (#XYZ, #YZA)

And if the commits are completely same - leave only first one and do not duplicate lines in a changelog.

Related: playpauseandstop/aiohttp-middlewares#134


TODO:

  • Do not duplicate same commit subjects in ChangeLog (done via #196)
  • Merge commit subjects Same (#1) and Same (#2) into Same (#1, #2)

Include contributors in ChangeLog items

As GitHub release page now has fancy Contributors block, which automatically shown from release content it makes sense to include contributors into ChangeLog items and as result they will be included at GitHub release pages.

Refactor changes needs its own section

Right now only Features & Fixes grouped into, all other commits go into Other section, but it's good to have at least Refactor commits grouped, cause in many cases Refactor commits need to be highlighted in CHANGELOG files (and commits).

Revert commits should be placed under the separate section or ignored

All revert commits should be grouped and placed under the separate section of Reverts at the end of version changelog.

And by default all "chore: X.Y.Z Release" revert commits should be ignored from changelog at all.

On top of that repository can configure to omit such commits from CHANGELOG altogether.

Support passing exact next version and additional release notes

There are situations, when badabump bumps project to lower version than needed: for example when there is one commit of,

  • build: Update to Python 3.10

badabump will bump 21.2.3 version to 21.2.4, but in reality it is needed to be bump to 21.3.0.

Need to define a way to pass an exact next version on invoking badabump, so it will make all the CHANGELOG changes and stuff, but for requested version, not for auto-generated.


Another nice feature to have is expecting on additional release notes to be passed to badabump. Using example above it would be nice to have a way to pass Ensure Python 3.10 support. line, which should be included to CHANGELOG.

More precise version update

At a moment badabump replaces current_version to next_version in entire data source, which might result in updating external dependencies, which has same version as a project.

Need to tighten rules for version replacement to ensure only expected lines has been updated.

Escape backticks, when publishing releases

Currently, if release commit contains backticks, they are not escaped and as result inner content does not go to release notes.

Need to escape backticks, to ensure that all inner content will properly published in release notes.

Proper initial messages for pre-releases

When repository does not contain tags and pyproject.toml or package.json contains pre-release version, need to put "Initial pre-release" into changelog file, even no --pre flag is passed.

Right now badabump puts proper pre-release note into changelog file only when --pre flag is passed.

Relates: #15

Strip leading and trailing spaces in commit subjects

At a moment, if commit subject contains leading or trailing space, these spaces will be included in changelogs and release notes. This will lead prettier and some other pre-commit hooks to fail as they attempt to replace multiple spaces to single space.

To fix this need to strip leading and trailing spaces in commit subjects on reading commit messages from git repo.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.