Skip to content
This repository has been archived by the owner on Feb 22, 2023. It is now read-only.

Commit

Permalink
Publish check ignores prerelease sdk (#3560)
Browse files Browse the repository at this point in the history
  • Loading branch information
bparrishMines authored Feb 18, 2021
1 parent 361567b commit f784207
Showing 1 changed file with 40 additions and 7 deletions.
47 changes: 40 additions & 7 deletions script/tool/lib/src/publish_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// found in the LICENSE file.

import 'dart:async';
import 'dart:io' as io;

import 'package:colorize/colorize.dart';
import 'package:file/file.dart';
Expand Down Expand Up @@ -63,6 +64,44 @@ class PublishCheckCommand extends PluginCommand {
}
}

Future<bool> hasValidPublishCheckRun(Directory package) async {
final io.Process process = await io.Process.start(
'flutter',
<String>['pub', 'publish', '--', '--dry-run'],
workingDirectory: package.path,
);

final StringBuffer outputBuffer = StringBuffer();

final Completer<void> stdOutCompleter = Completer<void>();
process.stdout.listen(
(List<int> event) {
io.stdout.add(event);
outputBuffer.write(String.fromCharCodes(event));
},
onDone: () => stdOutCompleter.complete(),
);

final Completer<void> stdInCompleter = Completer<void>();
process.stderr.listen(
(List<int> event) {
io.stderr.add(event);
outputBuffer.write(String.fromCharCodes(event));
},
onDone: () => stdInCompleter.complete(),
);

if (await process.exitCode == 0) return true;

await stdOutCompleter.future;
await stdInCompleter.future;

final String output = outputBuffer.toString();
return output.contains('Package has 1 warning.') &&
output.contains(
'Packages with an SDK constraint on a pre-release of the Dart SDK should themselves be published as a pre-release version.');
}

Future<bool> passesPublishCheck(Directory package) async {
final String packageName = package.basename;
print('Checking that $packageName can be published.');
Expand All @@ -75,13 +114,7 @@ class PublishCheckCommand extends PluginCommand {
return true;
}

final int exitCode = await processRunner.runAndStream(
'flutter',
<String>['pub', 'publish', '--', '--dry-run'],
workingDir: package,
);

if (exitCode == 0) {
if (await hasValidPublishCheckRun(package)) {
print("Package $packageName is able to be published.");
return true;
} else {
Expand Down

0 comments on commit f784207

Please sign in to comment.