Unverified Commit 84bc2382 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] do not check for pubspec.yaml in packages forward command (#81059)

parent 307e3819
...@@ -23,7 +23,6 @@ import '../runner/flutter_command.dart'; ...@@ -23,7 +23,6 @@ import '../runner/flutter_command.dart';
class PackagesCommand extends FlutterCommand { class PackagesCommand extends FlutterCommand {
PackagesCommand() { PackagesCommand() {
addSubcommand(PackagesGetCommand('get', false)); addSubcommand(PackagesGetCommand('get', false));
//addSubcommand(PackagesGetCommand('upgrade', true));
addSubcommand(PackagesInteractiveGetCommand('upgrade', 'Upgrade the current package\'s dependencies to latest versions.')); addSubcommand(PackagesInteractiveGetCommand('upgrade', 'Upgrade the current package\'s dependencies to latest versions.'));
addSubcommand(PackagesInteractiveGetCommand('add', 'Add a dependency to pubspec.yaml.')); addSubcommand(PackagesInteractiveGetCommand('add', 'Add a dependency to pubspec.yaml.'));
addSubcommand(PackagesInteractiveGetCommand('remove', 'Removes a dependency from the current package.')); addSubcommand(PackagesInteractiveGetCommand('remove', 'Removes a dependency from the current package.'));
...@@ -271,9 +270,7 @@ class PackagesPassthroughCommand extends FlutterCommand { ...@@ -271,9 +270,7 @@ class PackagesPassthroughCommand extends FlutterCommand {
} }
class PackagesInteractiveGetCommand extends FlutterCommand { class PackagesInteractiveGetCommand extends FlutterCommand {
PackagesInteractiveGetCommand(this._commandName, this._description) { PackagesInteractiveGetCommand(this._commandName, this._description);
requiresPubspecYaml();
}
@override @override
ArgParser argParser = ArgParser.allowAnything(); ArgParser argParser = ArgParser.allowAnything();
...@@ -298,10 +295,9 @@ class PackagesInteractiveGetCommand extends FlutterCommand { ...@@ -298,10 +295,9 @@ class PackagesInteractiveGetCommand extends FlutterCommand {
@override @override
Future<FlutterCommandResult> runCommand() async { Future<FlutterCommandResult> runCommand() async {
List<String> rest = argResults.rest; List<String> rest = argResults.rest;
final bool isHelp = rest.contains('-h') || rest.contains('--help');
String target; String target;
if (rest.length == 1 && if (rest.length == 1 && (rest[0].contains('/') || rest[0].contains(r'\'))) {
(rest[0].contains('/') ||
rest[0].contains(r'\'))) {
// HACK: Supporting flutter specific behavior where you can pass a // HACK: Supporting flutter specific behavior where you can pass a
// folder to the command. // folder to the command.
target = findProjectRoot(globals.fs, rest[0]); target = findProjectRoot(globals.fs, rest[0]);
...@@ -309,43 +305,45 @@ class PackagesInteractiveGetCommand extends FlutterCommand { ...@@ -309,43 +305,45 @@ class PackagesInteractiveGetCommand extends FlutterCommand {
} else { } else {
target = findProjectRoot(globals.fs); target = findProjectRoot(globals.fs);
} }
if (target == null) {
throwToolExit('Expected to find project root in '
'current working directory.');
}
final FlutterProject flutterProject = FlutterProject.fromDirectory(globals.fs.directory(target));
if (flutterProject.manifest.generateSyntheticPackage) { FlutterProject flutterProject;
final Environment environment = Environment( if (!isHelp) {
artifacts: globals.artifacts, if (target == null) {
logger: globals.logger, throwToolExit('Expected to find project root in current working directory.');
cacheDir: globals.cache.getRoot(), }
engineVersion: globals.flutterVersion.engineRevision, flutterProject = FlutterProject.fromDirectory(globals.fs.directory(target));
fileSystem: globals.fs,
flutterRootDir: globals.fs.directory(Cache.flutterRoot), if (flutterProject.manifest.generateSyntheticPackage) {
outputDir: globals.fs.directory(getBuildDirectory()), final Environment environment = Environment(
processManager: globals.processManager, artifacts: globals.artifacts,
platform: globals.platform, logger: globals.logger,
projectDir: flutterProject.directory, cacheDir: globals.cache.getRoot(),
); engineVersion: globals.flutterVersion.engineRevision,
fileSystem: globals.fs,
await generateLocalizationsSyntheticPackage( flutterRootDir: globals.fs.directory(Cache.flutterRoot),
environment: environment, outputDir: globals.fs.directory(getBuildDirectory()),
buildSystem: globals.buildSystem, processManager: globals.processManager,
); platform: globals.platform,
projectDir: flutterProject.directory,
);
await generateLocalizationsSyntheticPackage(
environment: environment,
buildSystem: globals.buildSystem,
);
}
} }
final List<String> subArgs = rest.toList() final List<String> subArgs = rest.toList()..removeWhere((String arg) => arg == '--');
..removeWhere((String arg) => arg == '--');
await pub.interactively( await pub.interactively(
<String>[name, ...subArgs], <String>[name, ...subArgs],
directory: target, directory: target,
stdio: globals.stdio, stdio: globals.stdio,
touchesPackageConfig: true, touchesPackageConfig: !isHelp,
generateSyntheticPackage: flutterProject.manifest.generateSyntheticPackage, generateSyntheticPackage: flutterProject?.manifest?.generateSyntheticPackage ?? false,
); );
await flutterProject.regeneratePlatformSpecificTooling(); await flutterProject?.regeneratePlatformSpecificTooling();
return FlutterCommandResult.success(); return FlutterCommandResult.success();
} }
} }
...@@ -525,5 +525,31 @@ void main() { ...@@ -525,5 +525,31 @@ void main() {
platform: globals.platform, platform: globals.platform,
), ),
}); });
testUsingContext('upgrade does not check for pubspec.yaml if -h/--help is passed', () async {
Cache.flutterRoot = '';
processManager.addCommand(
FakeCommand(command: const <String>[
'/bin/cache/dart-sdk/bin/pub', 'upgrade', '-h'],
stdin: IOSink(StreamController<List<int>>().sink),
),
);
await createTestCommandRunner(PackagesCommand()).run(<String>['pub', 'upgrade', '-h']);
expect(processManager, hasNoRemainingExpectations);
}, overrides: <Type, Generator>{
FileSystem: () => MemoryFileSystem.test(),
Platform: () => FakePlatform(operatingSystem: 'linux', environment: <String, String>{}),
ProcessManager: () => processManager,
Stdio: () => mockStdio,
Pub: () => Pub(
fileSystem: globals.fs,
logger: globals.logger,
processManager: globals.processManager,
usage: globals.flutterUsage,
botDetector: globals.botDetector,
platform: globals.platform,
),
});
}); });
} }
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