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

Publish check ignores prerelease sdk #3560

Merged
merged 4 commits into from
Feb 18, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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;

bparrishMines marked this conversation as resolved.
Show resolved Hide resolved
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