diff --git a/packages/flutter_tools/lib/src/commands/downgrade.dart b/packages/flutter_tools/lib/src/commands/downgrade.dart index a58b75c009..33eed88ae5 100644 --- a/packages/flutter_tools/lib/src/commands/downgrade.dart +++ b/packages/flutter_tools/lib/src/commands/downgrade.dart @@ -110,9 +110,18 @@ class DowngradeCommand extends FlutterCommand { final String? lastFlutterVersion = persistentToolState.lastActiveVersion(channel); final String? currentFlutterVersion = _flutterVersion?.frameworkRevision; if (lastFlutterVersion == null || currentFlutterVersion == lastFlutterVersion) { - final String trailing = await _createErrorMessage(workingDirectory, channel); + final String trailing = await _createErrorMessage( + workingDirectory, + channel, + ); throwToolExit( - 'There is no previously recorded version for channel "$currentChannel".\n' + "It looks like you haven't run " + '"flutter upgrade" on channel "$currentChannel".\n' + '\n' + '"flutter downgrade" undoes the last "flutter upgrade".\n' + '\n' + 'To switch to a specific Flutter version, see: ' + 'https://flutter.dev/to/switch-flutter-version' '$trailing' ); } @@ -181,7 +190,10 @@ class DowngradeCommand extends FlutterCommand { } // Formats an error message that lists the currently stored versions. - Future _createErrorMessage(String workingDirectory, Channel currentChannel) async { + Future _createErrorMessage( + String workingDirectory, + Channel currentChannel, + ) async { final StringBuffer buffer = StringBuffer(); for (final Channel channel in Channel.values) { if (channel == currentChannel) { @@ -191,11 +203,19 @@ class DowngradeCommand extends FlutterCommand { if (sha == null) { continue; } - final RunResult parseResult = await _processUtils!.run([ - 'git', 'describe', '--tags', sha, - ], workingDirectory: workingDirectory); + final RunResult parseResult = await _processUtils!.run( + ['git', 'describe', '--tags', sha], + workingDirectory: workingDirectory, + ); if (parseResult.exitCode == 0) { - buffer.writeln('Channel "${getNameForChannel(channel)}" was previously on: ${parseResult.stdout}.'); + if (buffer.isEmpty) { + buffer.writeln(); + } + buffer.writeln(); + buffer.writeln( + 'Channel "${getNameForChannel(channel)}" was previously on: ' + '${parseResult.stdout}.' + ); } } return buffer.toString(); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/downgrade_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/downgrade_test.dart index 5830675704..6ad404fc5c 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/downgrade_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/downgrade_test.dart @@ -77,10 +77,16 @@ void main() { logger: bufferLogger, ); - expect(createTestCommandRunner(command).run(const ['downgrade']), - throwsToolExit(message: - 'There is no previously recorded version for channel "beta".\n' - 'Channel "master" was previously on: v1.2.3.' + expect( + createTestCommandRunner(command).run(const ['downgrade']), + throwsToolExit(message: ''' +It looks like you haven't run "flutter upgrade" on channel "beta". + +"flutter downgrade" undoes the last "flutter upgrade". + +To switch to a specific Flutter version, see: https://flutter.dev/to/switch-flutter-version + +Channel "master" was previously on: v1.2.3.''', ), ); });