Skip to content

Commit

Permalink
feat(changelog_cmd): add semver v2 proposal for generating changelog
Browse files Browse the repository at this point in the history
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
  • Loading branch information
vincenzopalazzo committed Jul 13, 2022
1 parent a82cd24 commit d85ad89
Show file tree
Hide file tree
Showing 3 changed files with 224 additions and 2 deletions.
8 changes: 6 additions & 2 deletions packages/changelog-cmd/lib/fetcher/github_fetcher.dart
Expand Up @@ -55,11 +55,15 @@ class GithubFetcher extends GenericFetcher {
)));

var rawLastTags = QueryGetLastTag.fromJson(lastTag).repository;
var lastRelease = cleanListOfTags(rawLastTags).first;
if (lastRelease == null) {
var releases = cleanListOfTags(rawLastTags);
if (releases.isEmpty) {
return commits;
}

var lastRelease = releases.first;
if (lastRelease == null) {
return commits;
}
var listCommits = await _client!.query(
query: GQLOptionsQueryGetLastCommits(
variables: VariablesQueryGetLastCommits(
Expand Down
59 changes: 59 additions & 0 deletions packages/changelog-cmd/lib/method/semver_v2_msg.dart
@@ -0,0 +1,59 @@
/// Header Msg is the method generator to generate the changelog
/// from the message header like this example here
/// https://github.com/invertase/melos/blob/main/packages/melos/CHANGELOG.md
///
/// Where a message header contains the content of the changelog
/// an example `FIX: don't use Enum.name (#PR) commit_hash`
///
/// The filter keywords are:
/// - `fix: message` to document a fix;
/// - `feat: message ` to document a feature;
/// - `docs: message ` to document a new doc addition.
///
/// author: https://github.com/vincenzopalazzo
import 'package:changelog_cmd/method/method_generation.dart';
import 'package:changelog_lib/changelog_lib.dart';

class SemVerV2Generator extends MethodGenerator {
@override
void apply(
{required ChangelogGenerator generator,
String? exactMatchHeader,
RegExp? regexHeader,
bool strictly = false}) {
generator.addFilterRule(
rule: FilterRule(headerExactMatch: "fix:", nameSection: "Fixed"));
generator.addFilterRule(
rule:
FilterRule(headerExactMatch: "feat:", nameSection: "Added"));
generator.addFilterRule(
rule: FilterRule(headerExactMatch: "doc:", nameSection: "Docs"));

generator.addFilterRule(
rule: FilterRule(headerExactMatch: "deprecate:", nameSection: "Deprecated"));

generator.addFilterRule(
rule: FilterRule(headerExactMatch: "remove:", nameSection: "Removed"));

generator.addFilterRule(
rule: FilterRule(
headerExactMatch: "fix(${generator.packageName}):",
nameSection: "Fixed"));
generator.addFilterRule(
rule: FilterRule(
headerExactMatch: "feat(${generator.packageName}):",
nameSection: "Added"));
generator.addFilterRule(
rule: FilterRule(
headerExactMatch: "doc(${generator.packageName}):",
nameSection: "Docs"));
generator.addFilterRule(
rule: FilterRule(
headerExactMatch: "deprecate(${generator.packageName}):",
nameSection: "Deprecated"));
generator.addFilterRule(
rule: FilterRule(
headerExactMatch: "remove(${generator.packageName}):",
nameSection: "Removed"));
}
}

0 comments on commit d85ad89

Please sign in to comment.