Support use-flutter option in groundskeeper workflow (#444)
diff --git a/.github/workflows/groundskeeper.yml b/.github/workflows/groundskeeper.yml
index 20aac3c..d6856ff 100644
--- a/.github/workflows/groundskeeper.yml
+++ b/.github/workflows/groundskeeper.yml
@@ -5,10 +5,15 @@
workflow_call:
inputs:
sdk:
- description: 'Dart SDK version'
+ description: 'Dart SDK version or Flutter channel'
required: false
type: string
default: 'dev'
+ use-flutter:
+ description: 'Whether to use Flutter for this package'
+ required: false
+ type: boolean
+ default: false
directory:
description: 'The directory to tidy'
required: false
@@ -63,19 +68,30 @@
with:
client-id: ${{ vars.ECOSYSTEM_BOT_CLIENT_ID }}
private-key: ${{ secrets.ECOSYSTEM_BOT_PRIVATE_KEY }}
+ permission-contents: write
+ permission-pull-requests: write
- name: Checkout caller repo
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
with:
token: ${{ steps.generate-token.outputs.token }}
+ persist-credentials: false
- name: Checkout ecosystem (for tidy script)
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
with:
repository: dart-lang/ecosystem
path: .github/ecosystem-helper
+ persist-credentials: false
+
+ - uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2
+ if: ${{ inputs.use-flutter }}
+ with:
+ channel: ${{ inputs.sdk == 'dev' && 'master' || inputs.sdk }}
+ cache: true
- uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
+ if: ${{ !inputs.use-flutter }}
with:
sdk: ${{ inputs.sdk }}
@@ -85,10 +101,15 @@
- name: Run Tidy Script
working-directory: ${{ inputs.directory }}
+ env:
+ RUN_FORMAT: ${{ inputs.run-format }}
+ RUN_FIX: ${{ inputs.run-fix }}
+ USE_FLUTTER: ${{ inputs.use-flutter }}
run: |
dart $GITHUB_WORKSPACE/.github/ecosystem-helper/pkgs/firehose/bin/groundskeeper.dart \
- --format=${{ inputs.run-format }} \
- --fix=${{ inputs.run-fix }}
+ --format="$RUN_FORMAT" \
+ --fix="$RUN_FIX" \
+ --use-flutter="$USE_FLUTTER"
- name: Check for changes
id: check_changes
@@ -103,9 +124,12 @@
- name: Update changelog
if: ${{ inputs.update-changelog && steps.check_changes.outputs.changed == 'true' }}
working-directory: .github/ecosystem-helper/pkgs/repo_manage
+ env:
+ DIRECTORY: ${{ inputs.directory }}
+ CHANGELOG_MESSAGE: ${{ inputs.changelog-message }}
run: |
dart pub get
- dart run bin/report.dart changelog --changelog "../../../../${{ inputs.directory }}/CHANGELOG.md" "${{ inputs.changelog-message }}"
+ dart run bin/report.dart changelog --changelog "../../../../$DIRECTORY/CHANGELOG.md" "$CHANGELOG_MESSAGE"
- name: Clean up helper
run: rm -rf .github/ecosystem-helper
diff --git a/pkgs/firehose/CHANGELOG.md b/pkgs/firehose/CHANGELOG.md
index 4f05be3..509cfe5 100644
--- a/pkgs/firehose/CHANGELOG.md
+++ b/pkgs/firehose/CHANGELOG.md
@@ -1,5 +1,6 @@
## 0.13.2-wip
+- Support `use-flutter` option in `groundskeeper` workflow to allow tidying Flutter packages.
- Log full `dart_apitool` failure output to the workflow log instead of dumping
multi-line stack traces into the PR health comment Markdown table.
- Document Zizmor compatibility and ignore syntax for `post_summaries.yaml`.
diff --git a/pkgs/firehose/bin/groundskeeper.dart b/pkgs/firehose/bin/groundskeeper.dart
index cf902f5..9ae3cae 100644
--- a/pkgs/firehose/bin/groundskeeper.dart
+++ b/pkgs/firehose/bin/groundskeeper.dart
@@ -4,13 +4,17 @@
import 'dart:io';
import 'package:args/args.dart';
-import 'package:firehose/firehose.dart';
import 'package:path/path.dart' as path;
void main(List<String> args) async {
final parser = ArgParser()
..addOption('format', defaultsTo: 'true', allowed: ['true', 'false'])
- ..addOption('fix', defaultsTo: 'true', allowed: ['true', 'false']);
+ ..addOption('fix', defaultsTo: 'true', allowed: ['true', 'false'])
+ ..addOption(
+ 'use-flutter',
+ defaultsTo: 'false',
+ allowed: ['true', 'false'],
+ );
final argResults = parser.parse(args);
@@ -18,10 +22,12 @@
final pkgPath = targetDirectory.path;
final runFormat = argResults['format'] != 'false';
final runFix = argResults['fix'] != 'false';
+ final useFlutter = argResults['use-flutter'] == 'true';
print('Target Directory: ${targetDirectory.absolute.path}');
print('Run format: $runFormat');
print('Run fix: $runFix');
+ print('Use Flutter: $useFlutter');
final pubspecFile = File(path.join(targetDirectory.path, 'pubspec.yaml'));
final isPackage = pubspecFile.existsSync();
@@ -33,15 +39,10 @@
}
if (isPackage) {
- final repo = Repository(targetDirectory);
- final pkg = Package(targetDirectory, repo);
+ final tool = useFlutter ? 'flutter' : 'dart';
- // Detect if it is a Flutter package
- final isFlutter = pkg.pubspec.dependencies.containsKey('flutter') ||
- pkg.pubspec.devDependencies.containsKey('flutter');
- final tool = isFlutter ? 'flutter' : 'dart';
-
- print('Tidying package in $pkgPath (${isFlutter ? 'Flutter' : 'Dart'})...');
+ print(
+ 'Tidying package in $pkgPath (${useFlutter ? 'Flutter' : 'Dart'})...');
print(' Running $tool pub get...');
final pubGetResult =