Skip to content

Commit 69850b0

Browse files
committed
Release script
1 parent 4fa323d commit 69850b0

File tree

3 files changed

+138
-6
lines changed

3 files changed

+138
-6
lines changed

build.mjs

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import * as esbuild from 'esbuild'
22
//import inlineWorkerPlugin from 'esbuild-plugin-inline-worker';
33
import * as fs from 'fs';
4+
import { simpleGit, CleanOptions } from 'simple-git';
5+
import JSZip from 'jszip';
46

57
//const path = require('path')
68

@@ -16,12 +18,36 @@ var defaultconfig = {
1618
//watch: process.argv.includes("--watch"),
1719
};
1820

21+
function buildRelease() {
22+
simpleGit().tags().then(res => {
23+
const regversion = /v(\d+\.\d+\.\d+)/i;
24+
let matches = null;
25+
if (!res || !(matches = res.latest.match(regversion)) || matches.length < 2) throw new Error('No valid version found');
26+
console.log(`Releasing '${matches[1]}'...`);
27+
let zipname = `igc2kmz-${matches[1]}.zip`;
28+
let zip = new JSZip();
29+
['igc2kmz.cmd.js', 'igc2kmz.min.js', 'igc2kmz.js'].forEach(f => zip.file('dist/' + f, fs.readFileSync('dist/' + f, { encoding: 'utf8', flag: 'r' })));
30+
zip.file('igc2kmz_spa.html', fs.readFileSync('dist/igc2kmz_spa.html', { encoding: 'utf8', flag: 'r' }));
31+
['igc2kmz.html', 'README.md', 'LICENSE'].forEach(f => zip.file(f, fs.readFileSync(f, { encoding: 'utf8', flag: 'r' })));
32+
zip
33+
.generateNodeStream({ type: 'nodebuffer', streamFiles: true })
34+
.pipe(fs.createWriteStream(zipname))
35+
.on('finish', function () {
36+
console.log(zipname + " written.");
37+
});
38+
});
39+
}
40+
1941
async function buildAction(buildmode) {
20-
console.log(`Building '${buildmode}'...`);
21-
let build = true, bundle = false;
42+
let build = true, bundle = false, release = false;
2243
let config = {};
2344

2445
switch (buildmode) {
46+
case 'release':
47+
release = true;
48+
build = false;
49+
bundle = false;
50+
break;
2551
case 'bundle':
2652
build = false;
2753
bundle = true;
@@ -55,6 +81,7 @@ async function buildAction(buildmode) {
5581
}
5682

5783
if (build) {
84+
console.log(`Building '${buildmode}'...`);
5885
await esbuild.build(config).catch(() => process.exit(1));
5986
// contournement d'un bug dans collections.js utilisée par igc-xc-score ;
6087
// dans le fichier generic-collections.js est référencé directement l'objet global
@@ -69,6 +96,7 @@ async function buildAction(buildmode) {
6996
}
7097
}
7198
if (bundle) {
99+
console.log(`Bundling igc2html_spa.html...`);
72100
// BUNDLE
73101
const reginsert = /<script[\s\r\n]+src\s*=\s*(?:"|')([^"']+)(?:"|')[\s\r\n]*>/i;
74102
const regminifyjs = /<script>((?:.|[\r\n])*)<\/script>/i;
@@ -109,8 +137,16 @@ async function buildAction(buildmode) {
109137
}
110138
fs.writeFileSync('./dist/igc2kmz_spa.html', htmli2k);
111139
}
140+
if (release) {
141+
buildRelease();
142+
}
112143
}
113144

114-
let argv = process.argv.slice(2);
115-
if (argv.length <= 0) argv.push('cmd', 'web', 'minify', 'bundle');
145+
let allargs = ['cmd', 'web', 'minify', 'bundle'];
146+
let argv = process.argv.slice(2).map(v => v.trim().toLowerCase());
147+
if (argv.length <= 0) {
148+
argv = allargs;
149+
} else if (argv.indexOf('release') > -1) {
150+
argv = [...allargs, 'release'];
151+
}
116152
argv.forEach(await buildAction);

package-lock.json

Lines changed: 96 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"@types/base64-stream": "^1.0.2",
2929
"@types/concat-stream": "^2.0.0",
3030
"@types/google-polyline": "^1.0.0",
31-
"@types/node": "^18.14.2"
31+
"@types/node": "^18.14.2",
32+
"simple-git": "^3.17.0"
3233
}
3334
}

0 commit comments

Comments
 (0)