Unverified Commit db51c6d5 authored by Lau Ching Jun's avatar Lau Ching Jun Committed by GitHub

Expose `packagePath` as a getter in FlutterCommand. (#80026)

parent e8cd4827
...@@ -283,6 +283,11 @@ abstract class FlutterCommand extends Command<void> { ...@@ -283,6 +283,11 @@ abstract class FlutterCommand extends Command<void> {
return bundle.defaultMainPath; return bundle.defaultMainPath;
} }
/// Path to the Dart's package config file.
///
/// This can be overridden by some of its subclasses.
String get packagesPath => globalResults['packages'] as String;
void usesPubOption({bool hide = false}) { void usesPubOption({bool hide = false}) {
argParser.addFlag('pub', argParser.addFlag('pub',
defaultsTo: true, defaultsTo: true,
...@@ -845,7 +850,7 @@ abstract class FlutterCommand extends Command<void> { ...@@ -845,7 +850,7 @@ abstract class FlutterCommand extends Command<void> {
: null; : null;
final File packagesFile = globals.fs.file( final File packagesFile = globals.fs.file(
globalResults['packages'] as String ?? globals.fs.path.absolute('.dart_tool', 'package_config.json')); packagesPath ?? globals.fs.path.absolute('.dart_tool', 'package_config.json'));
final PackageConfig packageConfig = await loadPackageConfigWithLogging( final PackageConfig packageConfig = await loadPackageConfigWithLogging(
packagesFile, logger: globals.logger, throwOnError: false); packagesFile, logger: globals.logger, throwOnError: false);
...@@ -989,8 +994,7 @@ abstract class FlutterCommand extends Command<void> { ...@@ -989,8 +994,7 @@ abstract class FlutterCommand extends Command<void> {
bundleSkSLPath: bundleSkSLPath, bundleSkSLPath: bundleSkSLPath,
dartExperiments: experiments, dartExperiments: experiments,
performanceMeasurementFile: performanceMeasurementFile, performanceMeasurementFile: performanceMeasurementFile,
packagesPath: globalResults['packages'] as String packagesPath: packagesPath ?? globals.fs.path.absolute('.dart_tool', 'package_config.json'),
?? globals.fs.path.absolute('.dart_tool', 'package_config.json'),
nullSafetyMode: nullSafetyMode, nullSafetyMode: nullSafetyMode,
codeSizeDirectory: codeSizeDirectory, codeSizeDirectory: codeSizeDirectory,
androidGradleDaemon: androidGradleDaemon, androidGradleDaemon: androidGradleDaemon,
......
...@@ -15,6 +15,7 @@ import 'package:flutter_tools/src/base/file_system.dart'; ...@@ -15,6 +15,7 @@ import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/signals.dart'; import 'package:flutter_tools/src/base/signals.dart';
import 'package:flutter_tools/src/base/time.dart'; import 'package:flutter_tools/src/base/time.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/dart/pub.dart'; import 'package:flutter_tools/src/dart/pub.dart';
import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/reporting/reporting.dart';
...@@ -540,6 +541,12 @@ void main() { ...@@ -540,6 +541,12 @@ void main() {
FileSystem: () => MemoryFileSystem.test(), FileSystem: () => MemoryFileSystem.test(),
ProcessManager: () => FakeProcessManager.any(), ProcessManager: () => FakeProcessManager.any(),
}); });
testUsingContext('use packagesPath to generate BuildInfo', () async {
final DummyFlutterCommand flutterCommand = DummyFlutterCommand(packagesPath: 'foo');
final BuildInfo buildInfo = await flutterCommand.getBuildInfo(forcedBuildMode: BuildMode.debug);
expect(buildInfo.packagesPath, 'foo');
});
}); });
} }
......
...@@ -15,6 +15,7 @@ class DummyFlutterCommand extends FlutterCommand { ...@@ -15,6 +15,7 @@ class DummyFlutterCommand extends FlutterCommand {
this.noUsagePath = false, this.noUsagePath = false,
this.name = 'dummy', this.name = 'dummy',
this.commandFunction, this.commandFunction,
this.packagesPath,
}); });
final bool noUsagePath; final bool noUsagePath;
...@@ -36,4 +37,7 @@ class DummyFlutterCommand extends FlutterCommand { ...@@ -36,4 +37,7 @@ class DummyFlutterCommand extends FlutterCommand {
Future<FlutterCommandResult> runCommand() async { Future<FlutterCommandResult> runCommand() async {
return commandFunction == null ? FlutterCommandResult.fail() : await commandFunction(); return commandFunction == null ? FlutterCommandResult.fail() : await commandFunction();
} }
@override
final String packagesPath;
} }
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