Unverified Commit 15e322c0 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

Expose build-dir config option (#36773)

parent 6e963b99
...@@ -6,6 +6,8 @@ import 'dart:async'; ...@@ -6,6 +6,8 @@ import 'dart:async';
import '../android/android_sdk.dart'; import '../android/android_sdk.dart';
import '../android/android_studio.dart'; import '../android/android_studio.dart';
import '../base/common.dart';
import '../base/file_system.dart';
import '../convert.dart'; import '../convert.dart';
import '../features.dart'; import '../features.dart';
import '../globals.dart'; import '../globals.dart';
...@@ -24,6 +26,8 @@ class ConfigCommand extends FlutterCommand { ...@@ -24,6 +26,8 @@ class ConfigCommand extends FlutterCommand {
argParser.addOption('gradle-dir', help: 'The gradle install directory.'); argParser.addOption('gradle-dir', help: 'The gradle install directory.');
argParser.addOption('android-sdk', help: 'The Android SDK directory.'); argParser.addOption('android-sdk', help: 'The Android SDK directory.');
argParser.addOption('android-studio-dir', help: 'The Android Studio install directory.'); argParser.addOption('android-studio-dir', help: 'The Android Studio install directory.');
argParser.addOption('build-dir', help: 'The relative path to override a projects build directory',
valueHelp: 'out/');
argParser.addFlag('machine', argParser.addFlag('machine',
negatable: false, negatable: false,
hide: !verboseHelp, hide: !verboseHelp,
...@@ -128,6 +132,14 @@ class ConfigCommand extends FlutterCommand { ...@@ -128,6 +132,14 @@ class ConfigCommand extends FlutterCommand {
if (argResults.wasParsed('clear-ios-signing-cert')) if (argResults.wasParsed('clear-ios-signing-cert'))
_updateConfig('ios-signing-cert', ''); _updateConfig('ios-signing-cert', '');
if (argResults.wasParsed('build-dir')) {
final String buildDir = argResults['build-dir'];
if (fs.path.isAbsolute(buildDir)) {
throwToolExit('build-dir should be a relative path');
}
_updateConfig('build-dir', buildDir);
}
for (Feature feature in allFeatures) { for (Feature feature in allFeatures) {
if (feature.configSetting == null) { if (feature.configSetting == null) {
continue; continue;
......
...@@ -7,9 +7,11 @@ import 'dart:convert'; ...@@ -7,9 +7,11 @@ import 'dart:convert';
import 'package:args/command_runner.dart'; import 'package:args/command_runner.dart';
import 'package:flutter_tools/src/android/android_sdk.dart'; import 'package:flutter_tools/src/android/android_sdk.dart';
import 'package:flutter_tools/src/android/android_studio.dart'; import 'package:flutter_tools/src/android/android_studio.dart';
import 'package:flutter_tools/src/base/common.dart';
import 'package:flutter_tools/src/base/config.dart'; import 'package:flutter_tools/src/base/config.dart';
import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/context.dart';
import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/logger.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/commands/config.dart'; import 'package:flutter_tools/src/commands/config.dart';
import 'package:flutter_tools/src/version.dart'; import 'package:flutter_tools/src/version.dart';
...@@ -53,6 +55,28 @@ void main() { ...@@ -53,6 +55,28 @@ void main() {
AndroidSdk: () => mockAndroidSdk, AndroidSdk: () => mockAndroidSdk,
}); });
testUsingContext('Can set build-dir', () async {
final ConfigCommand configCommand = ConfigCommand();
final CommandRunner<void> commandRunner = createTestCommandRunner(configCommand);
await commandRunner.run(<String>[
'config',
'--build-dir=foo'
]);
expect(getBuildDirectory(), 'foo');
});
testUsingContext('throws error on absolute path to build-dir', () async {
final ConfigCommand configCommand = ConfigCommand();
final CommandRunner<void> commandRunner = createTestCommandRunner(configCommand);
expect(() => commandRunner.run(<String>[
'config',
'--build-dir=/foo'
]), throwsA(isInstanceOf<ToolExit>()));
});
testUsingContext('allows setting and removing feature flags', () async { testUsingContext('allows setting and removing feature flags', () async {
final ConfigCommand configCommand = ConfigCommand(); final ConfigCommand configCommand = ConfigCommand();
final CommandRunner<void> commandRunner = createTestCommandRunner(configCommand); final CommandRunner<void> commandRunner = createTestCommandRunner(configCommand);
......
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