Skip to content

Commit da11c7b

Browse files
committed
chore: added release script
1 parent 9762a39 commit da11c7b

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

release-notes-template

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{% if version.tag -%}
2+
## [{{ version.tag }}]({{repository_url}}/releases/tag/{{ version.tag }})
3+
{% else -%}
4+
{% set from = commits | last -%}
5+
{% set to = version.id-%}
6+
{% set from_shorthand = from.id | truncate(length=7, end="") -%}
7+
{% set to_shorthand = to | truncate(length=7, end="") -%}
8+
## Unreleased ({{ from_shorthand ~ ".." ~ to_shorthand }})
9+
{% endif -%}
10+
11+
{% for type, typed_commits in commits | sort(attribute="type")| group_by(attribute="type")-%}
12+
#### {{ type | upper_first }}
13+
{% for scope, scoped_commits in typed_commits | group_by(attribute="scope") -%}
14+
15+
{% for commit in scoped_commits | sort(attribute="scope") -%}
16+
{% set shorthand = commit.id | truncate(length=7, end="") -%}
17+
- **({{ scope }})** {{ commit.summary }} - ([{{ shorthand }}]({{ repository_url }}/commit/{{ commit.id }}))
18+
{{ commit.body }}
19+
{% endfor -%}
20+
21+
{% endfor -%}
22+
23+
{%- for commit in typed_commits | unscoped -%}
24+
{% if commit.author -%}
25+
{% set author = commit.author -%}
26+
{% else -%}
27+
{% set author = commit.signature -%}
28+
{% endif -%}
29+
30+
{% set shorthand = commit.id | truncate(length=7, end="") -%}
31+
- {{ commit.summary }} - ([{{ shorthand }}]({{ repository_url }}/commit/{{ commit.id }}))
32+
{{ commit.body }}
33+
{% endfor -%}
34+
35+
{% endfor -%}

release.nu

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
def get-ecsact-deps [] {
2+
(buildozer -output_json 'print name version' //MODULE.bazel:%bazel_dep
3+
| from json
4+
| get records
5+
| each {|record| {name: $record.fields.0.text, version: $record.fields.1.text?} }
6+
| filter {|dep| $dep.name | str starts-with "ecsact_"}
7+
)
8+
}
9+
10+
def main [version: string] {
11+
let start_dir = $env.PWD;
12+
let before_update_deps = get-ecsact-deps;
13+
let changelog_template = [$start_dir, "release-notes-template"] | path join;
14+
15+
$before_update_deps | each {|dep| bzlmod add $dep.name; };
16+
17+
let release_notes = (get-ecsact-deps | each {|dep|
18+
let before_version = $before_update_deps | where name == $dep.name | get version | get 0;
19+
let after_version = $dep | get version;
20+
let dep_repo_remote = $"https://github.com/ecsact-dev/($dep.name)";
21+
let cached_repo_dir = $".cache/repos/($dep.name)";
22+
mut dep_release_notes = "";
23+
24+
if $after_version != $before_version {
25+
rm -rf $cached_repo_dir;
26+
git clone --quiet $dep_repo_remote $cached_repo_dir;
27+
cd $cached_repo_dir;
28+
let changelog = cog changelog $"($before_version)..($after_version)" -o ecsact-dev --repository $dep.name --remote "github.com" -t $changelog_template;
29+
rm -rf $cached_repo_dir;
30+
cd $start_dir;
31+
$dep_release_notes += $"# ($dep.name) ($before_version) -> ($after_version)\n\n";
32+
$dep_release_notes += $changelog;
33+
}
34+
35+
$dep_release_notes
36+
});
37+
38+
let release_notes = $release_notes | reduce {|$section, $full| $full + $section} -f "";
39+
40+
print $release_notes;
41+
42+
gh release create $version -n $release_notes --latest -t $version --verify-tag --latest;
43+
}

0 commit comments

Comments
 (0)