Unverified Commit 5bd8579b authored by Greg Spencer's avatar Greg Spencer Committed by GitHub

Use flutter pub get instead of dart pub get in create_api_docs.dart (#133493)

parent e8df4349
...@@ -77,7 +77,7 @@ Future<void> main(List<String> arguments) async { ...@@ -77,7 +77,7 @@ Future<void> main(List<String> arguments) async {
configurator.generateConfiguration(); configurator.generateConfiguration();
final PlatformDocGenerator platformGenerator = PlatformDocGenerator(outputDir: publishRoot, filesystem: filesystem); final PlatformDocGenerator platformGenerator = PlatformDocGenerator(outputDir: publishRoot, filesystem: filesystem);
platformGenerator.generatePlatformDocs(); await platformGenerator.generatePlatformDocs();
final DartdocGenerator dartdocGenerator = DartdocGenerator( final DartdocGenerator dartdocGenerator = DartdocGenerator(
publishRoot: publishRoot, publishRoot: publishRoot,
...@@ -465,7 +465,7 @@ class DartdocGenerator { ...@@ -465,7 +465,7 @@ class DartdocGenerator {
// Verify which version of snippets and dartdoc we're using. // Verify which version of snippets and dartdoc we're using.
final ProcessResult snippetsResult = Process.runSync( final ProcessResult snippetsResult = Process.runSync(
FlutterInformation.instance.getDartBinaryPath().path, FlutterInformation.instance.getFlutterBinaryPath().path,
<String>[ <String>[
'pub', 'pub',
'global', 'global',
...@@ -779,16 +779,16 @@ class PlatformDocGenerator { ...@@ -779,16 +779,16 @@ class PlatformDocGenerator {
/// This downloads an archive of platform docs for the engine from the artifact /// This downloads an archive of platform docs for the engine from the artifact
/// store and extracts them to the location used for Dartdoc. /// store and extracts them to the location used for Dartdoc.
void generatePlatformDocs() { Future<void> generatePlatformDocs() async {
final String realm = engineRealm.isNotEmpty ? '$engineRealm/' : ''; final String realm = engineRealm.isNotEmpty ? '$engineRealm/' : '';
final String javadocUrl = final String javadocUrl =
'https://storage.googleapis.com/${realm}flutter_infra_release/flutter/$engineRevision/android-javadoc.zip'; 'https://storage.googleapis.com/${realm}flutter_infra_release/flutter/$engineRevision/android-javadoc.zip';
_extractDocs(javadocUrl, 'javadoc', 'io/flutter/view/FlutterView.html', outputDir); await _extractDocs(javadocUrl, 'javadoc', 'io/flutter/view/FlutterView.html', outputDir);
final String objcdocUrl = final String objcdocUrl =
'https://storage.googleapis.com/${realm}flutter_infra_release/flutter/$engineRevision/ios-objcdoc.zip'; 'https://storage.googleapis.com/${realm}flutter_infra_release/flutter/$engineRevision/ios-objcdoc.zip';
_extractDocs(objcdocUrl, 'objcdoc', 'Classes/FlutterViewController.html', outputDir); await _extractDocs(objcdocUrl, 'objcdoc', 'Classes/FlutterViewController.html', outputDir);
} }
/// Fetches the zip archive at the specified url. /// Fetches the zip archive at the specified url.
...@@ -935,7 +935,7 @@ Future<Process> runPubProcess({ ...@@ -935,7 +935,7 @@ Future<Process> runPubProcess({
@visibleForTesting FileSystem filesystem = const LocalFileSystem(), @visibleForTesting FileSystem filesystem = const LocalFileSystem(),
}) { }) {
return processManager.start( return processManager.start(
<Object>[FlutterInformation.instance.getDartBinaryPath().path, 'pub', ...arguments], <Object>[FlutterInformation.instance.getFlutterBinaryPath().path, 'pub', ...arguments],
workingDirectory: (workingDirectory ?? filesystem.currentDirectory).path, workingDirectory: (workingDirectory ?? filesystem.currentDirectory).path,
environment: environment, environment: environment,
); );
...@@ -968,21 +968,13 @@ List<Directory> findPackages(FileSystem filesystem) { ...@@ -968,21 +968,13 @@ List<Directory> findPackages(FileSystem filesystem) {
} }
/// An exception class used to indicate problems when collecting information. /// An exception class used to indicate problems when collecting information.
class DartdocException implements Exception { class FlutterInformationException implements Exception {
DartdocException(this.message, {this.file, this.line}); FlutterInformationException(this.message);
final String message; final String message;
final String? file;
final int? line;
@override @override
String toString() { String toString() {
if (file != null || line != null) { return '$runtimeType: $message';
final String fileStr = file == null ? '' : '$file:';
final String lineStr = line == null ? '' : '$line:';
return '$runtimeType: $fileStr$lineStr: $message';
} else {
return '$runtimeType: $message';
}
} }
} }
...@@ -1017,6 +1009,13 @@ class FlutterInformation { ...@@ -1017,6 +1009,13 @@ class FlutterInformation {
return getFlutterRoot().childDirectory('bin').childFile('dart'); return getFlutterRoot().childDirectory('bin').childFile('dart');
} }
/// The path to the Dart binary in the Flutter repo.
///
/// This is probably a shell script.
File getFlutterBinaryPath() {
return getFlutterRoot().childDirectory('bin').childFile('flutter');
}
/// The path to the Flutter repo root directory. /// The path to the Flutter repo root directory.
/// ///
/// If the environment variable `FLUTTER_ROOT` is set, will use that instead /// If the environment variable `FLUTTER_ROOT` is set, will use that instead
...@@ -1074,11 +1073,12 @@ class FlutterInformation { ...@@ -1074,11 +1073,12 @@ class FlutterInformation {
try { try {
result = processManager.runSync(<String>[flutterCommand, '--version', '--machine'], stdoutEncoding: utf8); result = processManager.runSync(<String>[flutterCommand, '--version', '--machine'], stdoutEncoding: utf8);
} on ProcessException catch (e) { } on ProcessException catch (e) {
throw DartdocException( throw FlutterInformationException(
'Unable to determine Flutter information. Either set FLUTTER_ROOT, or place flutter command in your path.\n$e'); 'Unable to determine Flutter information. Either set FLUTTER_ROOT, or place flutter command in your path.\n$e');
} }
if (result.exitCode != 0) { if (result.exitCode != 0) {
throw DartdocException('Unable to determine Flutter information, because of abnormal exit to flutter command.'); throw FlutterInformationException(
'Unable to determine Flutter information, because of abnormal exit to flutter command.');
} }
flutterVersionJson = (result.stdout as String) flutterVersionJson = (result.stdout as String)
.replaceAll('Waiting for another flutter command to release the startup lock...', ''); .replaceAll('Waiting for another flutter command to release the startup lock...', '');
...@@ -1088,7 +1088,7 @@ class FlutterInformation { ...@@ -1088,7 +1088,7 @@ class FlutterInformation {
if (flutterVersion['flutterRoot'] == null || if (flutterVersion['flutterRoot'] == null ||
flutterVersion['frameworkVersion'] == null || flutterVersion['frameworkVersion'] == null ||
flutterVersion['dartSdkVersion'] == null) { flutterVersion['dartSdkVersion'] == null) {
throw DartdocException( throw FlutterInformationException(
'Flutter command output has unexpected format, unable to determine flutter root location.'); 'Flutter command output has unexpected format, unable to determine flutter root location.');
} }
...@@ -1097,14 +1097,13 @@ class FlutterInformation { ...@@ -1097,14 +1097,13 @@ class FlutterInformation {
info['flutterRoot'] = flutterRoot; info['flutterRoot'] = flutterRoot;
info['frameworkVersion'] = Version.parse(flutterVersion['frameworkVersion'] as String); info['frameworkVersion'] = Version.parse(flutterVersion['frameworkVersion'] as String);
info['engineRevision'] = flutterVersion['engineRevision'] as String; info['engineRevision'] = flutterVersion['engineRevision'] as String;
info['engineRealm'] = filesystem.file( final File engineRealm = flutterRoot.childDirectory('bin').childDirectory('internal').childFile('engine.realm');
path.join(flutterRoot.path, 'bin', 'internal', 'engine.realm', info['engineRealm'] = engineRealm.existsSync() ? engineRealm.readAsStringSync().trim() : '';
)).readAsStringSync().trim();
final RegExpMatch? dartVersionRegex = RegExp(r'(?<base>[\d.]+)(?:\s+\(build (?<detail>[-.\w]+)\))?') final RegExpMatch? dartVersionRegex = RegExp(r'(?<base>[\d.]+)(?:\s+\(build (?<detail>[-.\w]+)\))?')
.firstMatch(flutterVersion['dartSdkVersion'] as String); .firstMatch(flutterVersion['dartSdkVersion'] as String);
if (dartVersionRegex == null) { if (dartVersionRegex == null) {
throw DartdocException( throw FlutterInformationException(
'Flutter command output has unexpected format, unable to parse dart SDK version ${flutterVersion['dartSdkVersion']}.'); 'Flutter command output has unexpected format, unable to parse dart SDK version ${flutterVersion['dartSdkVersion']}.');
} }
info['dartSdkVersion'] = info['dartSdkVersion'] =
......
...@@ -17,21 +17,21 @@ import 'package:path/path.dart' as path; ...@@ -17,21 +17,21 @@ import 'package:path/path.dart' as path;
import 'package:platform/platform.dart'; import 'package:platform/platform.dart';
import 'package:process/process.dart'; import 'package:process/process.dart';
FileSystem filesystem = const LocalFileSystem(); const FileSystem _kFilesystem = LocalFileSystem();
ProcessManager processManager = const LocalProcessManager(); const ProcessManager _kProcessManager = LocalProcessManager();
Platform platform = const LocalPlatform(); const Platform _kPlatform = LocalPlatform();
FutureOr<dynamic> main() async { FutureOr<dynamic> main() async {
if (!platform.isLinux && !platform.isWindows && !platform.isMacOS) { if (!_kPlatform.isLinux && !_kPlatform.isWindows && !_kPlatform.isMacOS) {
stderr.writeln('Example smoke tests are only designed to run on desktop platforms'); stderr.writeln('Example smoke tests are only designed to run on desktop platforms');
exitCode = 4; exitCode = 4;
return; return;
} }
final Directory flutterDir = filesystem.directory( final Directory flutterDir = _kFilesystem.directory(
path.absolute( path.absolute(
path.dirname( path.dirname(
path.dirname( path.dirname(
path.dirname(platform.script.toFilePath()), path.dirname(_kPlatform.script.toFilePath()),
), ),
), ),
), ),
...@@ -63,16 +63,16 @@ Future<void> runSmokeTests({ ...@@ -63,16 +63,16 @@ Future<void> runSmokeTests({
required Directory apiDir, required Directory apiDir,
}) async { }) async {
final File flutterExe = final File flutterExe =
flutterDir.childDirectory('bin').childFile(platform.isWindows ? 'flutter.bat' : 'flutter'); flutterDir.childDirectory('bin').childFile(_kPlatform.isWindows ? 'flutter.bat' : 'flutter');
final List<String> cmd = <String>[ final List<String> cmd = <String>[
// If we're in a container with no X display, then use the virtual framebuffer. // If we're in a container with no X display, then use the virtual framebuffer.
if (platform.isLinux && if (_kPlatform.isLinux &&
(platform.environment['DISPLAY'] == null || (_kPlatform.environment['DISPLAY'] == null ||
platform.environment['DISPLAY']!.isEmpty)) '/usr/bin/xvfb-run', _kPlatform.environment['DISPLAY']!.isEmpty)) '/usr/bin/xvfb-run',
flutterExe.absolute.path, flutterExe.absolute.path,
'test', 'test',
'--reporter=expanded', '--reporter=expanded',
'--device-id=${platform.operatingSystem}', '--device-id=${_kPlatform.operatingSystem}',
integrationTest.absolute.path, integrationTest.absolute.path,
]; ];
await runCommand(cmd, workingDirectory: apiDir); await runCommand(cmd, workingDirectory: apiDir);
...@@ -112,7 +112,7 @@ Future<File> generateTest(Directory apiDir) async { ...@@ -112,7 +112,7 @@ Future<File> generateTest(Directory apiDir) async {
.trim() .trim()
.split('\n'); .split('\n');
final Iterable<File> examples = gitFiles.map<File>((String examplePath) { final Iterable<File> examples = gitFiles.map<File>((String examplePath) {
return filesystem.file(path.join(examplesLibDir.absolute.path, examplePath)); return _kFilesystem.file(path.join(examplesLibDir.absolute.path, examplePath));
}); });
// Collect the examples, and import them all as separate symbols. // Collect the examples, and import them all as separate symbols.
...@@ -202,7 +202,7 @@ Future<String> runCommand( ...@@ -202,7 +202,7 @@ Future<String> runCommand(
} }
try { try {
process = await processManager.start( process = await _kProcessManager.start(
cmd, cmd,
workingDirectory: workingDirectory.absolute.path, workingDirectory: workingDirectory.absolute.path,
environment: environment, environment: environment,
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment