blob: 85c17246486faeb76d457561156310aba24f8abf [file] [log] [blame]
// 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);
}
}