void updateTable()

in src/get-dart/dart_sdk_archive/lib/src/version_selector.dart [133:244]


  void updateTable(VersionInfo versionInfo) {
    for (var name in platforms.keys) {
      var platformVariants = platforms[name] ?? const [];
      for (var platformVariant in platformVariants) {
        // ARMv7 builds only available later in 2015, ARMv8 in 03-2017
        if (archiveMap[name] == 'linux') {
          if (platformVariant.architecture == 'ARMv7' &&
              versionInfo.date.isBefore(DateTime.parse(
                  (channel == 'dev') ? '2015-10-21' : '2015-08-31'))) {
            continue;
          } else if (platformVariant.architecture == 'ARMv8 (ARM64)' &&
              versionInfo.date.isBefore(DateTime.parse('2017-03-09'))) {
            continue;
          }
        }

        // No Mac 32-bit SDK builds after 2.80
        if (name == 'macOS' && platformVariant.architecture == 'ia32') {
          if (versionInfo.version > Version(2, 7, 0)) {
            continue;
          }
        }

        // No Mac arm64 SDK builds before 2.14.1 (earlier builds did not have trained snapshots).
        if (name == 'macOS' && platformVariant.architecture == 'ARM64') {
          if (versionInfo.version < Version(2, 14, 1)) {
            continue;
          }
        }

        // Build rows for all supported builds.
        var row = _table.tBodies.first.addRow()
          ..attributes['data-version'] = versionInfo.version.toString()
          ..attributes['data-os'] = archiveMap[name] ?? '';
        var versionCell = row.addCell()..text = versionInfo.version.toString();
        versionCell.append(SpanElement()
          ..text = ' (${_prettyRevRef(versionInfo)})'
          ..classes.add('muted'));
        row.addCell().text = name;
        row.addCell()
          ..classes.add('nowrap')
          ..text = platformVariant.architecture;
        var possibleArchives = ['Dart SDK', 'Debian package'];
        var c = row.addCell()..classes.add('archives');

        for (var pa in possibleArchives) {
          if (platformVariant.archives.contains(pa)) {
            // We had no editor downloads after the move to GitHub.
            // This skips the editor link in those cases
            if (pa == 'Dart Editor') {
              continue;
            }

            var baseFileName = '${archiveMap[pa]}-${archiveMap[name]}-'
                '${archiveMap[platformVariant.architecture]}';

            if (pa == 'Debian package') {
              // Debian packages start with 2.0.0
              if (versionInfo.version < Version(2, 0, 0)) {
                continue;
              } else {
                baseFileName = 'dart_${_versionString(versionInfo)}';
              }
            }

            final uri =
                '$_storageBase/channels/$channel/release/${_versionString(versionInfo)}'
                '/${directoryMap[pa]}/$baseFileName${suffixMap[pa]}';

            c.append(AnchorElement()
              ..text = pa
              ..attributes['href'] = uri);
            final svnRevisionInfo = _svnRevision(versionInfo);
            if (pa != 'Dart Editor' &&
                pa != 'Debian package' &&
                (svnRevisionInfo == null || svnRevisionInfo > 38976)) {
              c.appendText(' ');
              c.append(AnchorElement()
                ..text = '(SHA-256)'
                ..attributes['href'] = '$uri.sha256sum'
                ..classes.add('sha'));
            }
            c.append(Element.br());
          }
        }
      }
    }

    // Add DartDoc archive.
    var row = _table.tBodies.first.addRow()
      ..attributes['data-version'] = versionInfo.version.toString()
      ..attributes['data-os'] = 'api';
    var rev = SpanElement()
      ..text = ' (${_prettyRevRef(versionInfo)})'
      ..classes.add('muted');
    row.addCell()
      ..text = versionInfo.version.toString()
      ..append(rev);
    row.addCell().text = '---';
    row.addCell().text = '---';
    var c = row.addCell()..classes.add('archives');
    var uri = '$_storageBase/channels/$channel/release/'
        '${versionInfo.version}/api-docs/dartdocs-gen-api.zip';
    c.append(AnchorElement()
      ..text = 'API docs'
      ..attributes['href'] = uri);

    var templateRows = _table.querySelectorAll('.template');
    for (var row in templateRows) {
      row.remove();
    }
  }