Skip to content

Commit e7879af

Browse files
committed
Add helper to translate old style versions to semver
1 parent 316d88a commit e7879af

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed

test/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
require('./translate.js');
12
require('./package.js');
23
require('./abi.js');
34
require('./cli.js');

test/translate.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
const tape = require('tape');
2+
const translate = require('../translate.js');
3+
const versionToSemver = translate.versionToSemver;
4+
5+
tape('Version string to Semver translator', function (t) {
6+
t.test('Only numbers', function (st) {
7+
st.equal(versionToSemver('0.1.0'), '0.1.0');
8+
st.end();
9+
});
10+
t.test('New style release (semver)', function (st) {
11+
st.equal(versionToSemver('0.4.5+commit.b318366e.Emscripten.clang'), '0.4.5+commit.b318366e.Emscripten.clang');
12+
st.end();
13+
});
14+
t.test('New style nightly (semver)', function (st) {
15+
st.equal(versionToSemver('0.4.20-nightly.2018.2.13+commit.27ef9794.Emscripten.clang'), '0.4.20-nightly.2018.2.13+commit.27ef9794.Emscripten.clang');
16+
st.end();
17+
});
18+
t.test('Old style 0.1.1', function (st) {
19+
st.equal(versionToSemver('0.1.1-6ff4cd6b/RelWithDebInfo-Emscripten/clang/int'), '0.1.1+commit.6ff4cd6b');
20+
st.end();
21+
});
22+
t.test('Old style 0.2.0', function (st) {
23+
st.equal(
24+
versionToSemver('0.2.0-e7098958/.-Emscripten/clang/int linked to libethereum-1.1.1-bbb80ab0/.-Emscripten/clang/int'),
25+
'0.2.0+commit.e7098958'
26+
);
27+
st.end();
28+
});
29+
t.test('Old style 0.3.5', function (st) {
30+
st.equal(versionToSemver('0.3.5-371690f0/Release-Emscripten/clang/Interpreter'), '0.3.5+commit.371690f0');
31+
st.end();
32+
});
33+
t.test('Old style 0.3.6', function (st) {
34+
st.equal(versionToSemver('0.3.6-3fc68da5/Release-Emscripten/clang'), '0.3.6+commit.3fc68da5');
35+
st.end();
36+
});
37+
});

translate.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
/// Translate old style version numbers to semver.
2+
/// Old style: 0.3.6-3fc68da5/Release-Emscripten/clang
3+
/// 0.3.5-371690f0/Release-Emscripten/clang/Interpreter
4+
/// 0.2.0-e7098958/.-Emscripten/clang/int linked to libethereum-1.1.1-bbb80ab0/.-Emscripten/clang/int
5+
/// 0.1.1-6ff4cd6b/RelWithDebInfo-Emscripten/clang/int
6+
/// New style: 0.4.5+commit.b318366e.Emscripten.clang
7+
function versionToSemver (version) {
8+
// FIXME: parse more detail, but this is a good start
9+
var parsed = version.match(/^([0-9]+\.[0-9]+\.[0-9]+)-([0-9a-f]{8})\/.*$/);
10+
if (parsed) {
11+
return parsed[1] + '+commit.' + parsed[2];
12+
}
13+
// assume it is already semver compatible
14+
return version;
15+
}
16+
117
function translateErrors (ret, errors) {
218
for (var error in errors) {
319
var type = 'error';
@@ -118,5 +134,6 @@ function translateJsonCompilerOutput (output) {
118134
}
119135

120136
module.exports = {
137+
versionToSemver: versionToSemver,
121138
translateJsonCompilerOutput: translateJsonCompilerOutput
122139
};

0 commit comments

Comments
 (0)