Recommend running `flutter pub` instead of `dart pub` when running from inside flutter. (#2842)
diff --git a/lib/src/command/outdated.dart b/lib/src/command/outdated.dart
index 590daf9..87e71b1 100644
--- a/lib/src/command/outdated.dart
+++ b/lib/src/command/outdated.dart
@@ -8,6 +8,7 @@
import 'dart:math';
import 'package:meta/meta.dart';
+import 'package:pub/src/command_runner.dart';
import 'package:pub_semver/pub_semver.dart';
import '../command.dart';
@@ -560,12 +561,12 @@
if (upgradable == 1) {
log.message('\n1 upgradable dependency is locked (in pubspec.lock) to '
'an older version.\n'
- 'To update it, use `dart pub upgrade`.');
+ 'To update it, use `$topLevelProgram pub upgrade`.');
} else {
log.message(
'\n$upgradable upgradable dependencies are locked (in pubspec.lock) '
'to older versions.\n'
- 'To update these dependencies, use `dart pub upgrade`.');
+ 'To update these dependencies, use `$topLevelProgram pub upgrade`.');
}
}
@@ -623,11 +624,11 @@
@override
String get noResolutionText =>
- '''No resolution was found. Try running `dart pub upgrade --dry-run` to explore why.''';
+ '''No resolution was found. Try running `$topLevelProgram pub upgrade --dry-run` to explore why.''';
@override
String get upgradeConstrained =>
- 'edit pubspec.yaml, or run `dart pub upgrade --major-versions`';
+ 'edit pubspec.yaml, or run `$topLevelProgram pub upgrade --major-versions`';
@override
Future<List<List<_MarkedVersionDetails>>> markVersionDetails(
@@ -703,11 +704,11 @@
@override
String get noResolutionText =>
- '''No resolution was found. Try running `dart pub upgrade --null-safety --dry-run` to explore why.''';
+ '''No resolution was found. Try running `$topLevelProgram pub upgrade --null-safety --dry-run` to explore why.''';
@override
String get upgradeConstrained =>
- 'edit pubspec.yaml, or run `dart pub upgrade --null-safety`';
+ 'edit pubspec.yaml, or run `$topLevelProgram pub upgrade --null-safety`';
@override
Future<List<List<_MarkedVersionDetails>>> markVersionDetails(
diff --git a/lib/src/command/upgrade.dart b/lib/src/command/upgrade.dart
index 36713e1..81aa747 100644
--- a/lib/src/command/upgrade.dart
+++ b/lib/src/command/upgrade.dart
@@ -8,6 +8,7 @@
import 'package:pub_semver/pub_semver.dart';
import '../command.dart';
+import '../command_runner.dart';
import '../entrypoint.dart';
import '../exceptions.dart';
import '../io.dart';
@@ -133,7 +134,7 @@
}
usageException('''
-Dependencies specified in `dart pub upgrade $modeFlag <dependencies>` must
+Dependencies specified in `$topLevelProgram pub upgrade $modeFlag <dependencies>` must
be direct 'dependencies' or 'dev_dependencies', following packages are not:
- ${notInDeps.join('\n - ')}
@@ -473,7 +474,7 @@
- ${hasNoNullSafetyVersions.join('\n - ')}
You can choose to upgrade only some dependencies to null-safety using:
- dart pub upgrade --nullsafety ${hasNullSafetyVersions.join(' ')}
+ $topLevelProgram pub upgrade --nullsafety ${hasNullSafetyVersions.join(' ')}
Warning: Using null-safety features before upgrading all dependencies is
discouraged. For more details see: ${NullSafetyAnalysis.guideUrl}
diff --git a/lib/src/command_runner.dart b/lib/src/command_runner.dart
index 8a282a9..f130f37 100644
--- a/lib/src/command_runner.dart
+++ b/lib/src/command_runner.dart
@@ -35,6 +35,13 @@
import 'log.dart';
import 'sdk.dart';
+/// The name of the program that is invoking pub
+/// 'flutter' if we are running inside `flutter pub` 'dart' otherwise.
+String topLevelProgram = _isrunningInsideFlutter ? 'flutter' : 'dart';
+
+bool _isrunningInsideFlutter =
+ (Platform.environment['PUB_ENVIRONMENT'] ?? '').contains('flutter_cli');
+
class PubCommandRunner extends CommandRunner<int> implements PubTopLevel {
@override
bool get captureStackChains {
diff --git a/lib/src/solver/report.dart b/lib/src/solver/report.dart
index 2d275f9..27c368f 100644
--- a/lib/src/solver/report.dart
+++ b/lib/src/solver/report.dart
@@ -4,6 +4,7 @@
import 'package:pub_semver/pub_semver.dart';
+import '../command_runner.dart';
import '../lock_file.dart';
import '../log.dart' as log;
import '../package.dart';
@@ -180,7 +181,7 @@
packageCountString = '$outdatedPackagesCount packages have';
}
log.message('$packageCountString newer versions incompatible with '
- 'dependency constraints.\nTry `dart pub outdated` for more information.');
+ 'dependency constraints.\nTry `$topLevelProgram pub outdated` for more information.');
}
}
diff --git a/test/outdated/goldens/handles_sdk_dependencies.txt b/test/outdated/goldens/handles_sdk_dependencies.txt
index 6d4d76c..aba2f87 100644
--- a/test/outdated/goldens/handles_sdk_dependencies.txt
+++ b/test/outdated/goldens/handles_sdk_dependencies.txt
@@ -31,7 +31,7 @@
dev_dependencies: all up-to-date.
1 dependency is constrained to a version that is older than a resolvable version.
-To update it, edit pubspec.yaml, or run `dart pub upgrade --major-versions`.
+To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.
$ pub outdated --no-color --no-transitive
Showing outdated packages.
@@ -45,7 +45,7 @@
dev_dependencies: all up-to-date.
1 dependency is constrained to a version that is older than a resolvable version.
-To update it, edit pubspec.yaml, or run `dart pub upgrade --major-versions`.
+To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.
$ pub outdated --no-color --up-to-date
Showing outdated packages.
@@ -61,7 +61,7 @@
flutter_test (sdk) (sdk) (sdk) (sdk)
1 dependency is constrained to a version that is older than a resolvable version.
-To update it, edit pubspec.yaml, or run `dart pub upgrade --major-versions`.
+To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.
$ pub outdated --no-color --prereleases
Showing outdated packages.
@@ -75,7 +75,7 @@
dev_dependencies: all up-to-date.
1 dependency is constrained to a version that is older than a resolvable version.
-To update it, edit pubspec.yaml, or run `dart pub upgrade --major-versions`.
+To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.
$ pub outdated --no-color --no-dev-dependencies
Showing outdated packages.
@@ -87,7 +87,7 @@
foo *1.1.0 *1.1.0 2.0.0 2.0.0
1 dependency is constrained to a version that is older than a resolvable version.
-To update it, edit pubspec.yaml, or run `dart pub upgrade --major-versions`.
+To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.
$ pub outdated --no-color --no-dependency-overrides
Showing outdated packages.
@@ -101,7 +101,7 @@
dev_dependencies: all up-to-date.
1 dependency is constrained to a version that is older than a resolvable version.
-To update it, edit pubspec.yaml, or run `dart pub upgrade --major-versions`.
+To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.
$ pub outdated --no-color --mode=null-safety
Showing dependencies that are currently not opted in to null-safety.
@@ -117,7 +117,7 @@
flutter_test ✗(sdk) ✗(sdk) ✗(sdk) ✗(sdk)
1 dependency is constrained to a version that is older than a resolvable version.
-To update it, edit pubspec.yaml, or run `dart pub upgrade --null-safety`.
+To update it, edit pubspec.yaml, or run `flutter pub upgrade --null-safety`.
$ pub outdated --no-color --mode=null-safety --transitive
Showing dependencies that are currently not opted in to null-safety.
@@ -133,7 +133,7 @@
flutter_test ✗(sdk) ✗(sdk) ✗(sdk) ✗(sdk)
1 dependency is constrained to a version that is older than a resolvable version.
-To update it, edit pubspec.yaml, or run `dart pub upgrade --null-safety`.
+To update it, edit pubspec.yaml, or run `flutter pub upgrade --null-safety`.
$ pub outdated --no-color --mode=null-safety --no-prereleases
Showing dependencies that are currently not opted in to null-safety.
@@ -149,7 +149,7 @@
flutter_test ✗(sdk) ✗(sdk) ✗(sdk) ✗(sdk)
1 dependency is constrained to a version that is older than a resolvable version.
-To update it, edit pubspec.yaml, or run `dart pub upgrade --null-safety`.
+To update it, edit pubspec.yaml, or run `flutter pub upgrade --null-safety`.
$ pub outdated --json --mode=null-safety
{
diff --git a/test/outdated/outdated_test.dart b/test/outdated/outdated_test.dart
index a882120..c355ae0 100644
--- a/test/outdated/outdated_test.dart
+++ b/test/outdated/outdated_test.dart
@@ -450,7 +450,9 @@
await variations('handles_sdk_dependencies', environment: {
'FLUTTER_ROOT': d.path('flutter-root'),
- '_PUB_TEST_SDK_VERSION': '2.13.0'
+ '_PUB_TEST_SDK_VERSION': '2.13.0',
+ // To test that the reproduction command is reflected correctly.
+ 'PUB_ENVIRONMENT': 'flutter_cli:get',
});
});
}
diff --git a/test/upgrade/report/shows_pub_outdated_test.dart b/test/upgrade/report/shows_pub_outdated_test.dart
index 6104fc5..9c0fa3d 100644
--- a/test/upgrade/report/shows_pub_outdated_test.dart
+++ b/test/upgrade/report/shows_pub_outdated_test.dart
@@ -43,6 +43,12 @@
3 packages have newer versions incompatible with dependency constraints.
Try `dart pub outdated` for more information.$''', multiLine: true));
+ // Running inside Flutter this will recommend the Flutter variant.
+ await pubUpgrade(
+ environment: {'PUB_ENVIRONMENT': 'flutter_cli:get'}, output: RegExp(r'''
+3 packages have newer versions incompatible with dependency constraints.
+Try `flutter pub outdated` for more information.$''', multiLine: true));
+
// Upgrade `multiple_newer` to `1.0.1`.
await d.appDir({
'multiple_newer': '1.0.1',