forked from firka/flutter
Show Xcode workspace clean output with verbose flag (#52860)
This commit is contained in:
@@ -79,7 +79,7 @@ Future<void> main(List<String> args) async {
|
||||
AttachCommand(verboseHelp: verboseHelp),
|
||||
BuildCommand(verboseHelp: verboseHelp),
|
||||
ChannelCommand(verboseHelp: verboseHelp),
|
||||
CleanCommand(),
|
||||
CleanCommand(verbose: verbose),
|
||||
ConfigCommand(verboseHelp: verboseHelp),
|
||||
CreateCommand(),
|
||||
DaemonCommand(hidden: !verboseHelp),
|
||||
|
||||
@@ -15,10 +15,14 @@ import '../project.dart';
|
||||
import '../runner/flutter_command.dart';
|
||||
|
||||
class CleanCommand extends FlutterCommand {
|
||||
CleanCommand() {
|
||||
CleanCommand({
|
||||
bool verbose = false,
|
||||
}) : _verbose = verbose {
|
||||
requiresPubspecYaml();
|
||||
}
|
||||
|
||||
final bool _verbose;
|
||||
|
||||
@override
|
||||
final String name = 'clean';
|
||||
|
||||
@@ -69,7 +73,7 @@ class CleanCommand extends FlutterCommand {
|
||||
final Directory xcodeWorkspace = xcodeProject.xcodeWorkspace;
|
||||
final XcodeProjectInfo projectInfo = await globals.xcodeProjectInterpreter.getInfo(xcodeWorkspace.parent.path);
|
||||
for (final String scheme in projectInfo.schemes) {
|
||||
await globals.xcodeProjectInterpreter.cleanWorkspace(xcodeWorkspace.path, scheme);
|
||||
await globals.xcodeProjectInterpreter.cleanWorkspace(xcodeWorkspace.path, scheme, verbose: _verbose);
|
||||
}
|
||||
} on Exception catch (error) {
|
||||
globals.printTrace('Could not clean Xcode workspace: $error');
|
||||
|
||||
@@ -364,14 +364,15 @@ class XcodeProjectInterpreter {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> cleanWorkspace(String workspacePath, String scheme) async {
|
||||
Future<void> cleanWorkspace(String workspacePath, String scheme, { bool verbose = false }) async {
|
||||
await _processUtils.run(<String>[
|
||||
_executable,
|
||||
'-workspace',
|
||||
workspacePath,
|
||||
'-scheme',
|
||||
scheme,
|
||||
'-quiet',
|
||||
if (!verbose)
|
||||
'-quiet',
|
||||
'clean',
|
||||
...environmentVariablesAsXcodeBuildSettings(_platform)
|
||||
], workingDirectory: _fileSystem.currentDirectory.path);
|
||||
|
||||
@@ -72,7 +72,18 @@ void main() {
|
||||
expect(projectUnderTest.macos.ephemeralDirectory.existsSync(), isFalse);
|
||||
expect(projectUnderTest.windows.ephemeralDirectory.existsSync(), isFalse);
|
||||
|
||||
verify(mockXcodeProjectInterpreter.cleanWorkspace(any, 'Runner')).called(2);
|
||||
verify(mockXcodeProjectInterpreter.cleanWorkspace(any, 'Runner', verbose: false)).called(2);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fs,
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
Xcode: () => mockXcode,
|
||||
XcodeProjectInterpreter: () => mockXcodeProjectInterpreter,
|
||||
});
|
||||
|
||||
testUsingContext('$CleanCommand cleans Xcode verbosely', () async {
|
||||
when(mockXcode.isInstalledAndMeetsVersionCheck).thenReturn(true);
|
||||
await CleanCommand(verbose: true).runCommand();
|
||||
verify(mockXcodeProjectInterpreter.cleanWorkspace(any, 'Runner', verbose: true)).called(2);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fs,
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
|
||||
@@ -401,7 +401,7 @@ class FakeXcodeProjectInterpreter implements XcodeProjectInterpreter {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> cleanWorkspace(String workspacePath, String scheme) {
|
||||
Future<void> cleanWorkspace(String workspacePath, String scheme, { bool verbose = false }) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user