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

Unified Diff: dart/sdk/lib/_internal/pub/lib/src/sdk.dart

Issue 106993002: Revert "Change SDK/DartEditor versioning scheme to semantic versions." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years 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
Index: dart/sdk/lib/_internal/pub/lib/src/sdk.dart
diff --git a/dart/sdk/lib/_internal/pub/lib/src/sdk.dart b/dart/sdk/lib/_internal/pub/lib/src/sdk.dart
index bd8314b2062d891a77dd073c687324f759cabd43..c99f516a3a57077265bba483aa0854240612d470 100644
--- a/dart/sdk/lib/_internal/pub/lib/src/sdk.dart
+++ b/dart/sdk/lib/_internal/pub/lib/src/sdk.dart
@@ -12,6 +12,11 @@ import 'package:path/path.dart' as path;
import 'io.dart';
import 'version.dart';
+/// Matches an Eclipse-style SDK version number. This is four dotted numbers
+/// (major, minor, patch, build) with an optional suffix attached to the build
+/// number.
+final _versionPattern = new RegExp(r'^(\d+)\.(\d+)\.(\d+)\.(\d+.*)$');
+
/// Gets the path to the root directory of the SDK.
String get rootDirectory {
// Assume the Dart executable is always coming from the SDK.
@@ -24,6 +29,30 @@ String get rootDirectory {
/// different SDK versions.
Version version = _getVersion();
+/// Is `true` if the current SDK is an unreleased bleeding edge version.
+bool get isBleedingEdge {
+ // The live build is locked to the magical old number "0.1.2+<stuff>".
+ return version.major == 0 && version.minor == 1 && version.patch == 2;
+}
+
+/// Parse an Eclipse-style version number using the SDK's versioning convention.
+Version parseVersion(String version) {
+ // Given a version file like: 0.1.2.0_r17495
+ // We create a semver like: 0.1.2+0.r17495
+ var match = _versionPattern.firstMatch(version);
+ if (match == null) {
+ throw new FormatException("The Dart SDK's 'version' file was not in a "
+ "format pub could recognize. Found: $version");
+ }
+
+ // Semantic versions cannot use "_".
+ var build = match[4].replaceAll('_', '.');
+
+ return new Version(
+ int.parse(match[1]), int.parse(match[2]), int.parse(match[3]),
+ build: build);
+}
+
/// Determine the SDK's version number.
Version _getVersion() {
// Some of the pub integration tests require an SDK version number, but the
@@ -35,5 +64,5 @@ Version _getVersion() {
// Read the "version" file.
var revisionPath = path.join(rootDirectory, "version");
var version = readTextFile(revisionPath).trim();
- return new Version.parse(version);
+ return parseVersion(version);
}

Powered by Google App Engine
This is Rietveld 408576698