churchtools / changelogger Goto Github PK
View Code? Open in Web Editor NEWCLI Tool for creating consistent and committable changelog entries.
Home Page: https://churchtools.github.io/changelogger/
License: Apache License 2.0
CLI Tool for creating consistent and committable changelog entries.
Home Page: https://churchtools.github.io/changelogger/
License: Apache License 2.0
app:build
and commit PHARgpg -ab builds/changelogger-<version>phar
~/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:
If no real logs exists, no changelog release is created and Changelog.md will not be changed.
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.
It should be possible to add localization files for different languages. The changelog will use translated strings.
See #4
When calling ./bin/changelogger new
i get the following git error:
error: Unbekannte Option:
show-current'`
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.
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.
The other idea it to add a new command show
to output the same result.
Add Clean
Command to remove all unreleased changes.
A config file allows to declare defaults for a project.
Add init
Command to create a decent .changelogger.json
config file and a CHANGELOG.md
file if none exists yet.
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.
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?
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
changelogger show
will output unreleased changes as Markdown and not table anymore, to keep both outputs in same format.
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.
The testing section still needs some love ❤️
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.
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.
If an author is mentioned to give props and the context is known (GitHub, GitLab), the link to his/her profile should set.
The sample changelog on keepachangelog.com addes links for each version, which show the difference between two versions. GitHub and GitLab have a fix URI structure for that.
This feature should be activated with a configuration settings declaring, which git hosting service is used.
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
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
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 :)
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.