Coder Social home page Coder Social logo

churchtools / changelogger Goto Github PK

View Code? Open in Web Editor NEW
32.0 32.0 9.0 32.09 MB

CLI Tool for creating consistent and committable changelog entries.

Home Page: https://churchtools.github.io/changelogger/

License: Apache License 2.0

PHP 99.02% Shell 0.98%
changelog changelogger churchtools cli hacktoberfest keepachangelog markdown

changelogger's People

Contributors

cwandrey avatar dependabot[bot] avatar djschilling avatar hettiger avatar obstschale avatar scottrudiger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

changelogger's Issues

Write release workflow

  • Build version app:build and commit PHAR
  • rename with current version number
  • Sign PHAR with gpg -ab builds/changelogger-<version>phar
  • upload PHAR and ASC to GitHub release

No Changelog Update for emtpy logs

~/Code/changelogger  81-no-changelog-update-for-emtpy-logs ✗                                              10m ✖ ⚑ ◒
▶ ./changelogger release v0.8.1
Changelog for v0.8.1 created
Clean unreleased changes: ✔

~/Code/changelogger  81-no-changelog-update-for-emtpy-logs ✗                                                11m ✖ ⚑
▶ ./changelogger release v0.8.2
No Changes -> No Changelog for v0.8.2 created

In both cases, no real Changelogs were present. The difference is:

  • v0.8.1 had empty changelog files
  • v0.8.2 had no log files at all

Expected behavior

If no real logs exists, no changelog release is created and Changelog.md will not be changed.

Enable navigating in changelog message

When writing the changelog message i cannot use the keyboard navigation.

The back key leads to this character: ^[[D.

On the mac i would like to use the back and forward keys and also the combination with alt to navigate through words.

Enable Localization

It should be possible to add localization files for different languages. The changelog will use translated strings.

See #4

Error in changelogger new

When calling ./bin/changelogger new i get the following git error:

error: Unbekannte Option: show-current'`

Show unreleased changes

I have the feeling that it could be benefitial to have the possibility to show the current status of unreleased chagens. Two options are in my mind.

1. Dry Run

Either we could add a --dry-run flag to the build command, which outputs the formatted changelog, but does not write it to file and also does not deletet the changes.

2. Show command

The other idea it to add a new command show to output the same result.

Clean Command

Add Clean Command to remove all unreleased changes.

Configuration file

A config file allows to declare defaults for a project.

  • Language used (if localization is possible)
  • Add custom fields

changelogger init

Add init Command to create a decent .changelogger.json config file and a CHANGELOG.md file if none exists yet.

Type No Changelog should not ask for Group

When selecting the Type of Change No changelog i have to answer in which category the changelog have to go. i think thats not necessary.

It then also askes for the changelog, but this should also not be necessary.

Rename Commands

Over the weekend I though about the current names of the commands. I have the feeling that the following namens are better suits.

  • add -> new
  • build -> release

@djschilling What do you think?

Show specific release

Feature Request

Enhance show Command such that a specific release note will be output.

changelogger show v0.8.0 -> show release v0.8.0 in CHANGELOG.md

Feature Change

changelogger show will output unreleased changes as Markdown and not table anymore, to keep both outputs in same format.

More Information on release

Executing the release command leads to this output:

> ./bin/changelogger release 3.58.0-RC4
Changelog for 3.58.0-RC4 created
Clean unreleased changes: ✔

It would bei nice to see how many changelog entries were added.

Empty Log Entries

It should be possible to add a new empty log entry. These entries will be ignored on build.

This makes it possible to always require a changelog entry in a Pull Request. A CI bot could for example check if a changelog exists. I.e. the author though about adding a changelog.

If no changelog file exists in a PR, this could mean either the author does not want a changelog or she forgot it.

Handling of legacy CHANGELOG.md files

I used this tool on a repo with an existing but old CHANGELOG.md file with no common schema.
This tool doesn't write to may legacy CHANGELOG.md on changelogger release but deletes the unreleased files.

Autolink authors

If an author is mentioned to give props and the context is known (GitHub, GitLab), the link to his/her profile should set.

Custom Field

It should be possibel to define a custom field in the config file (#4), which adds an additional category to a log entry.

Some projects are so large, that they are splittet into many modules and this allows to categorize changes in those modules.

The user should provide an array of possible options (e.g. module names) and the build command should group changes into those categories like so:

### Added

#### Module A

* added feature

#### Module B

* added feature B

Use JSON instead of YAML for log files

The log files currently use YAML but the config uses JSON. I see no benefit from using 2 formats here.

So the log files should just use JSON. For three reasons

  1. JSON is supported by PHP out of the box
  2. No need for the YAML dependency
  3. Ususally, the log files are not written manually, so the "more" verbose format is no big deal

Global installation fails

Problem

When i try to install the package globally, i get conflicts with packages of my laravel installation:

Log

composer global require churchtools/changelogger
Changed current directory to /Users/enux/.composer
Using version ^0.4.0 for churchtools/changelogger
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for churchtools/changelogger ^0.4.0 -> satisfiable by churchtools/changelogger[v0.4.0].
    - Conclusion: remove illuminate/container v6.0.1
    - Conclusion: don't install illuminate/container v6.0.1
    - churchtools/changelogger v0.4.0 requires laravel-zero/framework 5.8.* -> satisfiable by laravel-zero/framework[v5.8.0, v5.8.1, v5.8.2, v5.8.3, v5.8.4, v5.8.5].
    - laravel-zero/framework v5.8.0 requires illuminate/container 5.8.* -> satisfiable by illuminate/container[v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - laravel-zero/framework v5.8.1 requires illuminate/container 5.8.* -> satisfiable by illuminate/container[v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - laravel-zero/framework v5.8.2 requires illuminate/container 5.8.* -> satisfiable by illuminate/container[v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - laravel-zero/framework v5.8.3 requires illuminate/container 5.8.* -> satisfiable by illuminate/container[v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - laravel-zero/framework v5.8.4 requires illuminate/container 5.8.* -> satisfiable by illuminate/container[v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - laravel-zero/framework v5.8.5 requires illuminate/container 5.8.* -> satisfiable by illuminate/container[v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - Can only install one of: illuminate/container[v5.8.0, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.11, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.12, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.14, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.15, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.17, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.18, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.19, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.2, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.20, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.22, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.24, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.27, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.28, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.29, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.3, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.30, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.31, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.32, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.33, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.34, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.35, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.36, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.4, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.8, v6.0.1].
    - Can only install one of: illuminate/container[v5.8.9, v6.0.1].
    - Installation request for illuminate/container (locked at v6.0.1) -> satisfiable by illuminate/container[v6.0.1].


Installation failed, reverting ./composer.json to its original content.

Is there already a fix for this? Or any method i can avoid this error? Thank you :)

PHP 8 compatibility

Because of the php requirement in composer.json this tool cannot be used in PHP8 at the moment:

  "require": {
    "php": "^7.2.5",
    "ext-json": "*"
},

I cloned the repository, changed the php requirement to ^7.2.5|^8.0, did a composer update and ran the tests using composer test and all of them were successful. The ./changelogger script also seems to work fine, so I assume the composer.json is the only problem.

I could trick my project to install changelogger as a dependency, but because of the runtime checks the program refuses to run on PHP8.

Sadly I don't know how to properly build this project, so I'm not comfortable doing a pull request.

Config for Type of change

Currently the Type of change is hardcoded. The options are:

 Type of change:
  [0] New feature
  [1] Bug fix
  [2] Feature change
  [3] New deprecation
  [4] Feature removal
  [5] Security fix
  [6] Performance improvement
  [7] Other
  [8] No Changelog

I would like to change these in a config file.

Maybe the Option No Changelog should be added in every case or be just a flag in the config.

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.