Skip to content

Commit 3bda455

Browse files
authored
Improve 'flutter downgrade' error message (flutter#154434)
`flutter downgrade` fails if you haven't used `flutter upgrade`: ``` $ flutter downgrade There is no previously recorded version for channel "stable". ``` It's not clear what actions a user should take from this error message. Here's the new error message: ``` $ flutter downgrade It looks like you haven't run "flutter upgrade" on channel "stable". "flutter downgrade" undoes the last "flutter upgrade". To switch to a specific Flutter version, see: https://flutter.dev/to/switch-flutter-version ``` Depends on flutter/website#11098
1 parent 6abef22 commit 3bda455

File tree

2 files changed

+37
-11
lines changed

2 files changed

+37
-11
lines changed

packages/flutter_tools/lib/src/commands/downgrade.dart

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,18 @@ class DowngradeCommand extends FlutterCommand {
110110
final String? lastFlutterVersion = persistentToolState.lastActiveVersion(channel);
111111
final String? currentFlutterVersion = _flutterVersion?.frameworkRevision;
112112
if (lastFlutterVersion == null || currentFlutterVersion == lastFlutterVersion) {
113-
final String trailing = await _createErrorMessage(workingDirectory, channel);
113+
final String trailing = await _createErrorMessage(
114+
workingDirectory,
115+
channel,
116+
);
114117
throwToolExit(
115-
'There is no previously recorded version for channel "$currentChannel".\n'
118+
"It looks like you haven't run "
119+
'"flutter upgrade" on channel "$currentChannel".\n'
120+
'\n'
121+
'"flutter downgrade" undoes the last "flutter upgrade".\n'
122+
'\n'
123+
'To switch to a specific Flutter version, see: '
124+
'https://flutter.dev/to/switch-flutter-version'
116125
'$trailing'
117126
);
118127
}
@@ -181,7 +190,10 @@ class DowngradeCommand extends FlutterCommand {
181190
}
182191

183192
// Formats an error message that lists the currently stored versions.
184-
Future<String> _createErrorMessage(String workingDirectory, Channel currentChannel) async {
193+
Future<String> _createErrorMessage(
194+
String workingDirectory,
195+
Channel currentChannel,
196+
) async {
185197
final StringBuffer buffer = StringBuffer();
186198
for (final Channel channel in Channel.values) {
187199
if (channel == currentChannel) {
@@ -191,11 +203,19 @@ class DowngradeCommand extends FlutterCommand {
191203
if (sha == null) {
192204
continue;
193205
}
194-
final RunResult parseResult = await _processUtils!.run(<String>[
195-
'git', 'describe', '--tags', sha,
196-
], workingDirectory: workingDirectory);
206+
final RunResult parseResult = await _processUtils!.run(
207+
<String>['git', 'describe', '--tags', sha],
208+
workingDirectory: workingDirectory,
209+
);
197210
if (parseResult.exitCode == 0) {
198-
buffer.writeln('Channel "${getNameForChannel(channel)}" was previously on: ${parseResult.stdout}.');
211+
if (buffer.isEmpty) {
212+
buffer.writeln();
213+
}
214+
buffer.writeln();
215+
buffer.writeln(
216+
'Channel "${getNameForChannel(channel)}" was previously on: '
217+
'${parseResult.stdout}.'
218+
);
199219
}
200220
}
201221
return buffer.toString();

packages/flutter_tools/test/commands.shard/hermetic/downgrade_test.dart

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,16 @@ void main() {
7777
logger: bufferLogger,
7878
);
7979

80-
expect(createTestCommandRunner(command).run(const <String>['downgrade']),
81-
throwsToolExit(message:
82-
'There is no previously recorded version for channel "beta".\n'
83-
'Channel "master" was previously on: v1.2.3.'
80+
expect(
81+
createTestCommandRunner(command).run(const <String>['downgrade']),
82+
throwsToolExit(message: '''
83+
It looks like you haven't run "flutter upgrade" on channel "beta".
84+
85+
"flutter downgrade" undoes the last "flutter upgrade".
86+
87+
To switch to a specific Flutter version, see: https://flutter.dev/to/switch-flutter-version
88+
89+
Channel "master" was previously on: v1.2.3.''',
8490
),
8591
);
8692
});

0 commit comments

Comments
 (0)