Skip to content

Commit

Permalink
[macOS,iOS] Improve CocoaPods upgrade instructions (#135453)
Browse files Browse the repository at this point in the history
In our CocoaPods doctor check, if the version of CocoaPods is found to
be too low, rather than emitting a link to the install instructions,
emit a link to the upgrade instructions.

Since this check operates on CocoaPodsStatus, an enum, swtich to using a
case statement and cover all cases.


## Pre-launch Checklist

- [X] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [X] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [X] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [X] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [X] I updated/added relevant documentation (doc comments with `///`).
- [X] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [X] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
  • Loading branch information
cbracken authored Sep 25, 2023
1 parent 79caa83 commit cb4b4d4
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 12 deletions.
2 changes: 2 additions & 0 deletions packages/flutter_tools/lib/src/macos/cocoapods.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ const String outOfDatePluginsPodfileConsequence = '''

const String cocoaPodsInstallInstructions = 'see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.';

const String cocoaPodsUpdateInstructions = 'see https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods for instructions.';

const String podfileIosMigrationInstructions = '''
rm ios/Podfile''';

Expand Down
21 changes: 9 additions & 12 deletions packages/flutter_tools/lib/src/macos/cocoapods_validator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,31 +29,28 @@ class CocoaPodsValidator extends DoctorValidator {
.evaluateCocoaPodsInstallation;

ValidationType status = ValidationType.success;
if (cocoaPodsStatus == CocoaPodsStatus.recommended) {
messages.add(ValidationMessage(_userMessages.cocoaPodsVersion((await _cocoaPods.cocoaPodsVersionText).toString())));
} else {
if (cocoaPodsStatus == CocoaPodsStatus.notInstalled) {
switch (cocoaPodsStatus) {
case CocoaPodsStatus.recommended:
messages.add(ValidationMessage(_userMessages.cocoaPodsVersion((await _cocoaPods.cocoaPodsVersionText).toString())));
case CocoaPodsStatus.notInstalled:
status = ValidationType.missing;
messages.add(ValidationMessage.error(
_userMessages.cocoaPodsMissing(noCocoaPodsConsequence, cocoaPodsInstallInstructions)));

} else if (cocoaPodsStatus == CocoaPodsStatus.brokenInstall) {
case CocoaPodsStatus.brokenInstall:
status = ValidationType.missing;
messages.add(ValidationMessage.error(
_userMessages.cocoaPodsBrokenInstall(brokenCocoaPodsConsequence, cocoaPodsInstallInstructions)));

} else if (cocoaPodsStatus == CocoaPodsStatus.unknownVersion) {
case CocoaPodsStatus.unknownVersion:
status = ValidationType.partial;
messages.add(ValidationMessage.hint(
_userMessages.cocoaPodsUnknownVersion(unknownCocoaPodsConsequence, cocoaPodsInstallInstructions)));
} else {
case CocoaPodsStatus.belowMinimumVersion:
case CocoaPodsStatus.belowRecommendedVersion:
status = ValidationType.partial;
final String currentVersionText = (await _cocoaPods.cocoaPodsVersionText).toString();
messages.add(ValidationMessage.hint(
_userMessages.cocoaPodsOutdated(currentVersionText, cocoaPodsRecommendedVersion.toString(), noCocoaPodsConsequence, cocoaPodsInstallInstructions)));
}
_userMessages.cocoaPodsOutdated(currentVersionText, cocoaPodsRecommendedVersion.toString(), noCocoaPodsConsequence, cocoaPodsUpdateInstructions)));
}

return ValidationResult(status, messages);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ void main() {
expect(message.type, ValidationMessageType.hint);
expect(message.message, contains('CocoaPods $currentVersion out of date'));
expect(message.message, contains('(1.11.0 is recommended)'));
expect(message.message, contains('getting-started.html#updating-cocoapods'));
});
});
}
Expand Down

0 comments on commit cb4b4d4

Please sign in to comment.