static VersionInfo parse()

in src/get-dart/sdk_builds.dart/lib/src/version_info.dart [15:48]


  static VersionInfo parse(
      String channel, String revisionPath, Map<String, dynamic> json) {
    // Date parse magic
    var dateJson = json['date'] as String;
    DateTime date;
    try {
      date = DateTime.parse(dateJson);
    } on FormatException {
      // dealing with weird format: 201401150424
      dateJson = '${dateJson.substring(0, 8)}T${dateJson.substring(8, 12)}Z';
      date = DateTime.parse(dateJson);
    }

    // Version logic
    var jsonVersion = json['version'] as String;

    final oldMatch = _oldRevisionPostfix.firstMatch(jsonVersion);
    if (oldMatch != null) {
      jsonVersion = '${oldMatch[1]}-rev.${oldMatch[2]}.${oldMatch[3]}';
    }

    final version = Version.parse(jsonVersion);

    final revision = json['revision'] as String;
    final svnRevision = int.tryParse(revision);
    if (svnRevision == null) {
      // assume git!
      assert(revision.length == 40);

      return GitVersionInfo(version, date, channel, revisionPath, revision);
    }

    return SvnVersionInfo(version, date, channel, revisionPath, svnRevision);
  }