Commit 5e15c43c authored by Alex Beregszaszi's avatar Alex Beregszaszi Committed by GitHub

Merge pull request #215 from ethereum/load-version-json

Load versions from list.json
parents 22861f70 077075be
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
<link rel="icon" type="x-icon" href="icon.png"> <link rel="icon" type="x-icon" href="icon.png">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<script src="https://ethereum.github.io/solc-bin/bin/list.js"></script>
<script src="assets/js/ballot.sol.js"></script> <script src="assets/js/ballot.sol.js"></script>
</head> </head>
......
/* global alert, confirm, prompt, Option, Worker, soljsonSources */ /* global alert, confirm, prompt, Option, Worker */
var $ = require('jquery'); var $ = require('jquery');
var semver = require('semver'); var semver = require('semver');
...@@ -477,9 +477,6 @@ var run = function () { ...@@ -477,9 +477,6 @@ var run = function () {
function loadVersion (version) { function loadVersion (version) {
queryParams.update({version: version}); queryParams.update({version: version});
if (window.soljsonReleases !== undefined && window.soljsonReleases[version] !== undefined) {
version = window.soljsonReleases[version];
}
var url; var url;
if (version === 'builtin') { if (version === 'builtin') {
url = 'soljson.js'; url = 'soljson.js';
...@@ -513,36 +510,57 @@ var run = function () { ...@@ -513,36 +510,57 @@ var run = function () {
loadVersion($('#versionSelector').val()); loadVersion($('#versionSelector').val());
}); });
// var soljsonSources is provided by bin/list.js $.getJSON('https://ethereum.github.io/solc-bin/bin/list.json', function (data, status) {
if (window.soljsonSources !== undefined) { // loading failed for some reason, fall back to local compiler
// populate selector list with available versions if (status !== 'success') {
$.each(soljsonSources, function (i, file) { $('#versionSelector').append(new Option('latest local version', 'builtin'));
if (file) {
var version = file.replace(/soljson-(.*).js/, '$1'); loadVersion('builtin');
$('#versionSelector').append(new Option(version, file)); return;
}
function buildVersion (build) {
if (build.prerelease && build.prerelease.length > 0) {
return build.version + '-' + build.prerelease;
} else {
return build.version;
}
} }
// Sort builds according to semver
var builds = data.builds.sort(function (a, b) {
// NOTE: b vs. a (the order is important), because we want latest first in the list
return semver.compare(buildVersion(b), buildVersion(a));
});
// populate version dropdown with all available compiler versions
$.each(builds, function (i, build) {
$('#versionSelector').append(new Option(buildVersion(build), build.path));
}); });
$('#versionSelector').attr('disabled', false); $('#versionSelector').attr('disabled', false);
// load initial verison // always include the local version
var latestRelease = null; $('#versionSelector').append(new Option('latest local version', 'builtin'));
if (window.soljsonReleases !== undefined) {
for (var release in window.soljsonReleases) { // find latest release
if (latestRelease === null || semver.gt(release, latestRelease)) { var selectedVersion = null;
latestRelease = release; for (var release in data.releases) {
} if (selectedVersion === null || semver.gt(release, selectedVersion)) {
selectedVersion = release;
} }
} }
if (latestRelease === null) { if (selectedVersion !== null) {
latestRelease = 'soljson-latest.js'; selectedVersion = data.releases[selectedVersion];
} }
loadVersion(queryParams.get().version || latestRelease);
} else { // override with the requested version
loadVersion('builtin'); if (queryParams.get().version) {
selectedVersion = queryParams.get().version;
} }
// always include the local version loadVersion(selectedVersion);
$('#versionSelector').append(new Option('latest local version', 'builtin')); });
storage.sync(); storage.sync();
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment