Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(809)

Unified Diff: lib/src/pubspec.dart

Issue 2165423002: Add support for Flutter SDK constraints. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Code review changes Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/lock_file.dart ('k') | lib/src/solver/backtracking_solver.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/pubspec.dart
diff --git a/lib/src/pubspec.dart b/lib/src/pubspec.dart
index 20fea2aa8b24c40e3cec829ac4d0f7bce6409bec..254c18844e680ca932ccbc6f8b65b5d8a8d0cd24 100644
--- a/lib/src/pubspec.dart
+++ b/lib/src/pubspec.dart
@@ -222,14 +222,30 @@ class Pubspec {
});
}
- /// The environment-related metadata.
- PubspecEnvironment get environment {
- if (_environment != null) return _environment;
+ /// The constraint on the Dart SDK, or [VersionConstraint.any] if none is
+ /// specified.
+ VersionConstraint get dartSdkConstraint {
+ _parseEnvironment();
+ return _dartSdkConstraint;
+ }
+ VersionConstraint _dartSdkConstraint;
+
+ /// The constraint on the Flutter SDK, or `null` if none is specified.
+ VersionConstraint get flutterSdkConstraint {
+ _parseEnvironment();
+ return _flutterSdkConstraint;
+ }
+ VersionConstraint _flutterSdkConstraint;
+
+ /// Parses the "environment" field and sets [_dartSdkConstraint] and
+ /// [_flutterSdkConstraint] accordingly.
+ void _parseEnvironment() {
+ if (_dartSdkConstraint != null) return;
var yaml = fields['environment'];
if (yaml == null) {
- _environment = new PubspecEnvironment(VersionConstraint.any);
- return _environment;
+ _dartSdkConstraint = VersionConstraint.any;
+ return;
}
if (yaml is! Map) {
@@ -237,11 +253,11 @@ class Pubspec {
fields.nodes['environment'].span);
}
- _environment = new PubspecEnvironment(
- _parseVersionConstraint(yaml.nodes['sdk']));
- return _environment;
+ _dartSdkConstraint = _parseVersionConstraint(yaml.nodes['sdk']);
+ _flutterSdkConstraint = yaml.containsKey('flutter')
+ ? _parseVersionConstraint(yaml.nodes['flutter'])
+ : null;
}
- PubspecEnvironment _environment;
/// The URL of the server that the package should default to being published
/// to, "none" if the package should not be published, or `null` if it should
@@ -357,7 +373,8 @@ class Pubspec {
Pubspec(this._name, {Version version, Iterable<PackageDep> dependencies,
Iterable<PackageDep> devDependencies,
Iterable<PackageDep> dependencyOverrides,
- VersionConstraint sdkConstraint,
+ VersionConstraint dartSdkConstraint,
+ VersionConstraint flutterSdkConstraint,
Iterable<Iterable<TransformerConfig>> transformers,
Map fields, SourceRegistry sources})
: _version = version,
@@ -366,7 +383,8 @@ class Pubspec {
devDependencies.toList(),
_dependencyOverrides = dependencyOverrides == null ? null :
dependencyOverrides.toList(),
- _environment = new PubspecEnvironment(sdkConstraint),
+ _dartSdkConstraint = dartSdkConstraint ?? VersionConstraint.any,
+ _flutterSdkConstraint = flutterSdkConstraint,
_transformers = transformers == null ? [] :
transformers.map((phase) => phase.toSet()).toList(),
fields = fields == null ? new YamlMap() : new YamlMap.wrap(fields),
@@ -378,7 +396,8 @@ class Pubspec {
_version = Version.none,
_dependencies = <PackageDep>[],
_devDependencies = <PackageDep>[],
- _environment = new PubspecEnvironment(),
+ _dartSdkConstraint = VersionConstraint.any,
+ _flutterSdkConstraint = null,
_transformers = <Set<TransformerConfig>>[],
fields = new YamlMap();
@@ -438,8 +457,8 @@ class Pubspec {
_getError(() => this.dependencies);
_getError(() => this.devDependencies);
_getError(() => this.transformers);
- _getError(() => this.environment);
_getError(() => this.publishTo);
+ _getError(() => this._parseEnvironment());
return errors;
}
@@ -529,7 +548,7 @@ class Pubspec {
/// Parses [node] to a [VersionConstraint].
VersionConstraint _parseVersionConstraint(YamlNode node) {
- if (node.value == null) return VersionConstraint.any;
+ if (node?.value == null) return VersionConstraint.any;
if (node.value is! String) {
_error('A version constraint must be a string.', node.span);
}
@@ -589,18 +608,6 @@ class Pubspec {
}
}
-/// The environment-related metadata in the pubspec.
-///
-/// Corresponds to the data under the "environment:" key in the pubspec.
-class PubspecEnvironment {
- /// The version constraint specifying which SDK versions this package works
- /// with.
- final VersionConstraint sdkVersion;
-
- PubspecEnvironment([VersionConstraint sdk])
- : sdkVersion = sdk != null ? sdk : VersionConstraint.any;
-}
-
/// An exception thrown when parsing a pubspec.
///
/// These exceptions are often thrown lazily while accessing pubspec properties.
« no previous file with comments | « lib/src/lock_file.dart ('k') | lib/src/solver/backtracking_solver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698