Skip to content

Commit 11eb48e

Browse files
authored
Merge pull request #256 from taminomara/release-script
Add release script to keep schema, translations and setting in sync
2 parents 845fd9f + 9c61ac4 commit 11eb48e

File tree

13 files changed

+1913
-1583
lines changed

13 files changed

+1913
-1583
lines changed

build/config.js

Lines changed: 0 additions & 6 deletions
This file was deleted.

build/config.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"emmyDebuggerVersion": "1.8.6",
3+
"emmyDebuggerUrl": "https://github.com/EmmyLua/EmmyLuaDebugger/releases/download",
4+
"newLanguageServerVersion": "0.11.0",
5+
"newLanguageServerUrl": "https://github.com/CppCXY/emmylua-analyzer-rust/releases/download",
6+
"newLanguageServerSchemaUrl": "https://raw.githubusercontent.com/EmmyLuaLs/emmylua-analyzer-rust/refs/tags/{{tag}}/crates/emmylua_code_analysis/resources/schema.json"
7+
}

build/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"type": "module"
3+
}

build/prepare.js

Lines changed: 43 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,63 @@
1-
const fs = require('fs');
2-
const download = require('download');
3-
const decompress = require('decompress')
4-
const decompressTargz = require('decompress-targz')
5-
const fc = require('filecopy');
6-
const config = require('./config').default;
7-
const args = process.argv;
1+
import { existsSync, mkdirSync } from "fs";
2+
import decompress from "decompress";
3+
import decompressTarGz from "decompress-targz";
4+
import config from "./config.json" with { type: "json" };
5+
import { downloadTo } from "./util.js";
86

9-
async function downloadTo(url, path) {
10-
return new Promise((r, e) => {
11-
const d = download(url);
12-
d.then(r).catch(err => e(err));
13-
d.pipe(fs.createWriteStream(path));
14-
});
15-
}
7+
const args = process.argv;
168

179
async function downloadDepends() {
1810
await Promise.all([
19-
downloadTo(`${config.emmyDebuggerUrl}/${config.emmyDebuggerVersion}/linux-x64.zip`, 'temp/linux-x64.zip'),
20-
downloadTo(`${config.emmyDebuggerUrl}/${config.emmyDebuggerVersion}/darwin-arm64.zip`, 'temp/darwin-arm64.zip'),
21-
downloadTo(`${config.emmyDebuggerUrl}/${config.emmyDebuggerVersion}/darwin-x64.zip`, 'temp/darwin-x64.zip'),
22-
downloadTo(`${config.emmyDebuggerUrl}/${config.emmyDebuggerVersion}/win32-x86.zip`, 'temp/win32-x86.zip'),
23-
downloadTo(`${config.emmyDebuggerUrl}/${config.emmyDebuggerVersion}/win32-x64.zip`, 'temp/win32-x64.zip'),
24-
downloadTo(`${config.newLanguageServerUrl}/${config.newLanguageServerVersion}/${args[2]}`, `temp/${args[2]}`)
11+
downloadTo(
12+
`${config.emmyDebuggerUrl}/${config.emmyDebuggerVersion}/linux-x64.zip`,
13+
"temp/linux-x64.zip"
14+
),
15+
downloadTo(
16+
`${config.emmyDebuggerUrl}/${config.emmyDebuggerVersion}/darwin-arm64.zip`,
17+
"temp/darwin-arm64.zip"
18+
),
19+
downloadTo(
20+
`${config.emmyDebuggerUrl}/${config.emmyDebuggerVersion}/darwin-x64.zip`,
21+
"temp/darwin-x64.zip"
22+
),
23+
downloadTo(
24+
`${config.emmyDebuggerUrl}/${config.emmyDebuggerVersion}/win32-x86.zip`,
25+
"temp/win32-x86.zip"
26+
),
27+
downloadTo(
28+
`${config.emmyDebuggerUrl}/${config.emmyDebuggerVersion}/win32-x64.zip`,
29+
"temp/win32-x64.zip"
30+
),
31+
downloadTo(
32+
`${config.newLanguageServerUrl}/${config.newLanguageServerVersion}/${args[2]}`,
33+
`temp/${args[2]}`
34+
),
35+
downloadTo(`${newLanguageServerSchemaUrl}`, schemaPath),
2536
]);
2637
}
2738

2839
async function build() {
29-
if (!fs.existsSync('temp')) {
30-
fs.mkdirSync('temp')
40+
if (!existsSync("temp")) {
41+
mkdirSync("temp");
3142
}
3243

3344
await downloadDepends();
3445

3546
// linux
36-
await decompress('temp/linux-x64.zip', 'debugger/emmy/linux/');
47+
await decompress("temp/linux-x64.zip", "debugger/emmy/linux/");
3748
// mac
38-
await decompress('temp/darwin-x64.zip', 'debugger/emmy/mac/x64/');
39-
await decompress('temp/darwin-arm64.zip', 'debugger/emmy/mac/arm64/');
49+
await decompress("temp/darwin-x64.zip", "debugger/emmy/mac/x64/");
50+
await decompress("temp/darwin-arm64.zip", "debugger/emmy/mac/arm64/");
4051
// win
41-
await decompress('temp/win32-x86.zip', 'debugger/emmy/windows/x86/');
42-
await decompress('temp/win32-x64.zip', 'debugger/emmy/windows/x64/');
52+
await decompress("temp/win32-x86.zip", "debugger/emmy/windows/x86/");
53+
await decompress("temp/win32-x64.zip", "debugger/emmy/windows/x64/");
4354

4455
// new ls
45-
if (args[2].endsWith('.tar.gz')) {
46-
await decompress(`temp/${args[2]}`, `server/`, { plugins: [decompressTargz()] });
47-
} else if (args[2].endsWith('.zip')) {
56+
if (args[2].endsWith(".tar.gz")) {
57+
await decompress(`temp/${args[2]}`, `server/`, {
58+
plugins: [decompressTarGz()],
59+
});
60+
} else if (args[2].endsWith(".zip")) {
4861
await decompress(`temp/${args[2]}`, `server/`);
4962
}
5063
}

build/release.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { exit } from "process";
2+
import config from "./config.json" with { type: "json" };
3+
import {
4+
downloadTo,
5+
writeConfig,
6+
readPackage,
7+
writePackage,
8+
schemaPath,
9+
} from "./util.js";
10+
import { main as syncSettings } from "./settings.js";
11+
import { main as syncSchemaI18n } from "./schema-i18n.js";
12+
13+
const args = process.argv;
14+
15+
async function main() {
16+
const version = args[2];
17+
if (!version) {
18+
console.error(
19+
"Usage: npm run release -- <version> [<language-server-version>]"
20+
);
21+
exit(1);
22+
}
23+
if (!/\d+\.\d+\.\d+/.test(version)) {
24+
console.error(
25+
`Incorrect version: expected format '1.2.3', got ${version}`
26+
);
27+
exit(1);
28+
}
29+
30+
let languageServerVersion = args[3];
31+
if (!languageServerVersion) {
32+
languageServerVersion = config.newLanguageServerVersion;
33+
}
34+
if (!/\d+\.\d+\.\d+/.test(languageServerVersion)) {
35+
console.error(
36+
"Incorrect language-server-version: expected format '1.2.3'"
37+
);
38+
exit(1);
39+
}
40+
41+
{
42+
console.log("Updating 'build/config.json'...");
43+
config.newLanguageServerVersion = languageServerVersion;
44+
writeConfig(config);
45+
}
46+
47+
{
48+
console.log("Updating 'package.json'...");
49+
const packageJson = readPackage();
50+
packageJson["version"] = version;
51+
writePackage(packageJson);
52+
}
53+
54+
const newLanguageServerSchemaUrl =
55+
config.newLanguageServerSchemaUrl.replace(
56+
/\{\{\s*tag\s*\}\}/g,
57+
config.newLanguageServerVersion
58+
);
59+
console.log("Downloading new schema to 'syntaxes/schema.json'...");
60+
await downloadTo(newLanguageServerSchemaUrl, schemaPath);
61+
62+
console.log("Processing new schema...");
63+
syncSettings();
64+
syncSchemaI18n();
65+
66+
console.log(`✅ release ${version} successfully prepared`);
67+
}
68+
69+
await main();

0 commit comments

Comments
 (0)