| // Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'package:pub_semver/pub_semver.dart'; |
| |
| extension VersionConstraintExtension on VersionConstraint { |
| /// The same constraint, but only with major, minor, patch fields. |
| /// |
| /// Excludes pre-release and build fields, useful when developing against |
| /// not yet release version of Dart SDK. |
| VersionConstraint get withoutPreRelease { |
| switch (this) { |
| case Version version: |
| return version.withoutPreRelease; |
| case VersionRange range: |
| return VersionRange( |
| min: range.min?.withoutPreRelease, |
| includeMin: range.includeMin, |
| max: range.max?.withoutPreRelease, |
| includeMax: range.includeMax, |
| ); |
| default: |
| return this; |
| } |
| } |
| |
| bool requiresAtLeast(Version version) { |
| var self = this; |
| if (self is Version) { |
| return self >= version; |
| } |
| if (self is VersionRange) { |
| var min = self.min; |
| if (min == null) { |
| return false; |
| } else { |
| return min >= version; |
| } |
| } |
| // We don't know, but will not complain. |
| return true; |
| } |
| } |
| |
| extension VersionExtension on Version { |
| /// The same version, but only with major, minor, patch fields. |
| /// |
| /// Excludes pre-release and build fields, useful when developing against |
| /// not yet release version of Dart SDK. |
| Version get withoutPreRelease { |
| return Version(major, minor, patch); |
| } |
| } |