Skip to content

Commit 3163b3b

Browse files
authored
make publish tags link to the release page with populated fields (#98)
V1 of #97 Updates the markdown table so that "publish tag" tags are links to a release page with all the information pre-populated.
1 parent 57b9202 commit 3163b3b

File tree

5 files changed

+42
-8
lines changed

5 files changed

+42
-8
lines changed

pkgs/firehose/CHANGELOG.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.3.15
2+
3+
- Make publish tags link to the new release page for that tag, with
4+
pre-populated fields.
5+
16
## 0.3.14
27

38
- Require Dart `2.19.0`.
@@ -20,7 +25,7 @@
2025

2126
## 0.3.11
2227

23-
- Add additional console logging when we encounter GitHub API errors.
28+
- Add additional console logging when we encounter GitHub API errors.
2429

2530
## 0.3.10
2631

pkgs/firehose/lib/firehose.dart

+13-6
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class Firehose {
4747
var results = await _validate(github);
4848

4949
var markdownTable = '''
50-
| Package | Version | Status | Publish tag |
50+
| Package | Version | Status | Publish tag (post-merge) |
5151
| :--- | ---: | :--- | ---: |
5252
${results.describeAsMarkdown}
5353
@@ -166,8 +166,8 @@ Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automati
166166
github.notice(message: message);
167167
results.addResult(Result.fail(package, message));
168168
} else {
169-
var result = Result.success(package,
170-
'**ready to publish** (merge and tag to publish)', repoTag);
169+
var result = Result.success(package, '**ready to publish**', repoTag,
170+
repo.calculateReleaseUri(package, github));
171171
print(result);
172172
results.addResult(result);
173173
}
@@ -299,6 +299,10 @@ class VerificationResults {
299299
return results.map((r) {
300300
var sev = r.severity == Severity.error ? '(error) ' : '';
301301
var tag = r.gitTag == null ? '' : '`${r.gitTag}`';
302+
var publishReleaseUri = r.publishReleaseUri;
303+
if (publishReleaseUri != null) {
304+
tag = '[$tag]($publishReleaseUri)';
305+
}
302306

303307
return '| package:${r.package.name} | ${r.package.version} | '
304308
'$sev${r.message} | $tag |';
@@ -311,17 +315,20 @@ class Result {
311315
final Package package;
312316
final String message;
313317
final String? gitTag;
318+
final Uri? publishReleaseUri;
314319

315-
Result(this.severity, this.package, this.message, [this.gitTag]);
320+
Result(this.severity, this.package, this.message,
321+
[this.gitTag, this.publishReleaseUri]);
316322

317323
factory Result.fail(Package package, String message) =>
318324
Result(Severity.error, package, message);
319325

320326
factory Result.info(Package package, String message) =>
321327
Result(Severity.info, package, message);
322328

323-
factory Result.success(Package package, String message, [String? gitTag]) =>
324-
Result(Severity.success, package, message, gitTag);
329+
factory Result.success(Package package, String message,
330+
[String? gitTag, Uri? publishReleaseUri]) =>
331+
Result(Severity.success, package, message, gitTag, publishReleaseUri);
325332

326333
@override
327334
String toString() {

pkgs/firehose/lib/src/repo.dart

+9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:firehose/src/changelog.dart';
88
import 'package:path/path.dart' as path;
99
import 'package:yaml/yaml.dart' as yaml;
1010

11+
import 'github.dart';
1112
import 'pubspec.dart';
1213

1314
class Repository {
@@ -65,6 +66,14 @@ class Repository {
6566
return '${package.name}-v${package.pubspec.version}';
6667
}
6768
}
69+
70+
Uri calculateReleaseUri(Package package, Github github) {
71+
final tag = calculateRepoTag(package);
72+
final title = 'package:${package.name} v${package.pubspec.version}';
73+
final body = package.changelog.describeLatestChanges;
74+
return Uri.https('github.com', '/${github.repoSlug}/releases/new',
75+
{'tag': tag, 'title': title, 'body': body});
76+
}
6877
}
6978

7079
class Package {

pkgs/firehose/pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: firehose
22
description: A tool to automate publishing of Pub packages from GitHub actions.
3-
version: 0.3.14
3+
version: 0.3.15
44
repository: https://github.com/dart-lang/ecosystem/tree/main/pkgs/firehose
55

66
environment:

pkgs/firehose/test/repo_test.dart

+13
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5+
import 'package:firehose/src/github.dart';
56
import 'package:firehose/src/repo.dart';
67
import 'package:test/test.dart';
78

@@ -22,5 +23,17 @@ void main() {
2223
var result = packages.locatePackages();
2324
expect(result, isNotEmpty);
2425
});
26+
27+
test('github release link', () {
28+
final github = Github();
29+
final package = packages.locatePackages().single;
30+
final releaseUri = packages.calculateReleaseUri(package, github);
31+
expect(releaseUri.path, '/${github.repoSlug}/releases/new');
32+
final queryParams = releaseUri.queryParameters;
33+
expect(queryParams['tag'], packages.calculateRepoTag(package));
34+
expect(queryParams['title'],
35+
allOf(contains(package.name), contains(package.version)));
36+
expect(queryParams['body'], package.changelog.describeLatestChanges);
37+
});
2538
});
2639
}

0 commit comments

Comments
 (0)