OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:pub_semver/pub_semver.dart'; | 7 import 'package:pub_semver/pub_semver.dart'; |
8 | 8 |
9 import '../entrypoint.dart'; | 9 import '../entrypoint.dart'; |
10 import '../validator.dart'; | 10 import '../validator.dart'; |
11 | 11 |
12 /// The range of all Dart SDK versions that don't support Flutter SDK | 12 /// The range of all Dart SDK versions that don't support Flutter SDK |
13 /// constraints. | 13 /// constraints. |
14 final _preFlutterSupport = new VersionConstraint.parse("<1.19.0"); | 14 final _preFlutterSupport = new VersionConstraint.parse("<1.19.0"); |
15 | 15 |
16 /// A validator that validates that a package's SDK constraint doesn't use the | 16 /// A validator that validates that a package's SDK constraint doesn't use the |
17 /// "^" syntax. | 17 /// "^" syntax. |
18 class SdkConstraintValidator extends Validator { | 18 class SdkConstraintValidator extends Validator { |
19 SdkConstraintValidator(Entrypoint entrypoint) | 19 SdkConstraintValidator(Entrypoint entrypoint) |
20 : super(entrypoint); | 20 : super(entrypoint); |
21 | 21 |
22 Future validate() async { | 22 Future validate() async { |
23 var dartConstraint = entrypoint.root.pubspec.dartSdkConstraint; | 23 var dartConstraint = entrypoint.root.pubspec.dartSdkConstraint; |
24 if (dartConstraint.toString().startsWith("^")) { | 24 if (dartConstraint is VersionRange && |
| 25 dartConstraint.toString().startsWith("^")) { |
25 errors.add( | 26 errors.add( |
26 "^ version constraints aren't allowed for SDK constraints since " | 27 "^ version constraints aren't allowed for SDK constraints since " |
27 "older versions of pub don't support them.\n" | 28 "older versions of pub don't support them.\n" |
28 "Expand it manually instead:\n" | 29 "Expand it manually instead:\n" |
29 "\n" | 30 "\n" |
30 "environment:\n" | 31 "environment:\n" |
31 " sdk: \">=${dartConstraint.min} <${dartConstraint.max}\""); | 32 " sdk: \">=${dartConstraint.min} <${dartConstraint.max}\""); |
32 } | 33 } |
33 | 34 |
34 if (entrypoint.root.pubspec.flutterSdkConstraint != null && | 35 if (entrypoint.root.pubspec.flutterSdkConstraint != null && |
35 dartConstraint.allowsAny(_preFlutterSupport)) { | 36 dartConstraint.allowsAny(_preFlutterSupport)) { |
36 var newDartConstraint = dartConstraint.difference(_preFlutterSupport); | 37 var newDartConstraint = dartConstraint.difference(_preFlutterSupport); |
37 if (newDartConstraint.isEmpty || | 38 if (newDartConstraint.isEmpty || |
38 newDartConstraint == | 39 newDartConstraint == |
39 VersionConstraint.any.difference(_preFlutterSupport)) { | 40 VersionConstraint.any.difference(_preFlutterSupport)) { |
40 newDartConstraint = new VersionConstraint.parse("<2.0.0") | 41 newDartConstraint = new VersionConstraint.parse("<2.0.0") |
41 .difference(_preFlutterSupport); | 42 .difference(_preFlutterSupport); |
42 } | 43 } |
43 | 44 |
44 errors.add( | 45 errors.add( |
45 "Older versions of pub don't support Flutter SDK constraints.\n" | 46 "Older versions of pub don't support Flutter SDK constraints.\n" |
46 "Make sure your SDK constraint excludes those old versions:\n" | 47 "Make sure your SDK constraint excludes those old versions:\n" |
47 "\n" | 48 "\n" |
48 "environment:\n" | 49 "environment:\n" |
49 " sdk: \"$newDartConstraint\""); | 50 " sdk: \"$newDartConstraint\""); |
50 } | 51 } |
51 } | 52 } |
52 } | 53 } |
OLD | NEW |