Update build.js

This commit is contained in:
Gandalf2k15
2021-03-24 15:26:40 +00:00
parent fda40687de
commit 873173a0dd

View File

@@ -21,6 +21,32 @@ if (NODE_VERSION < NODE_VERSION_TARGET) {
process.exit(1);
}
const STANDARD_BUILD = "Standard Build"
const TGS_BUILD = "TGS Build"
const ALL_MAPS_BUILD = "CI All Maps Build"
const TEST_RUN_BUILD = "CI Integration Tests Build"
let BUILD_MODE = STANDARD_BUILD;
if (process.env.CBT_BUILD_MODE) {
switch (process.env.CBT_BUILD_MODE) {
case "ALL_MAPS":
BUILD_MODE = ALL_MAPS_BUILD
break;
case "TEST_RUN":
BUILD_MODE = TEST_RUN_BUILD
break;
case "TGS":
BUILD_MODE = TGS_BUILD
break;
default:
BUILD_MODE = process.env.CBT_BUILD_MODE
break;
}
}
console.log(`Starting CBT in ${BUILD_MODE} mode.`)
const DME_NAME = 'tgstation'
// Main
// --------------------------------------------------------
@@ -28,36 +54,46 @@ const { resolveGlob, stat } = require('./cbt/fs');
const { exec } = require('./cbt/process');
const { Task, runTasks } = require('./cbt/task');
const { regQuery } = require('./cbt/winreg');
const fs = require('fs');
const taskTgui = new Task('tgui')
.depends('tgui/.yarn/releases/*')
const yarn = args => {
const yarnPath = resolveGlob('./tgui/.yarn/releases/yarn-*.cjs')[0]
.replace('/tgui/', '/');
return exec('node', [yarnPath, ...args], {
cwd: './tgui',
});
};
/// Installs all tgui dependencies
const taskYarn = new Task('yarn')
.build(() => yarn(['install']));
/// Builds svg fonts
const taskTgfont = new Task('tgfont')
.depends('tgui/.yarn/install-state.gz')
.depends('tgui/packages/tgfont/**/*.+(js|cjs|svg)')
.depends('tgui/packages/tgfont/package.json')
.provides('tgui/packages/tgfont/dist/tgfont.css')
.provides('tgui/packages/tgfont/dist/tgfont.eot')
.provides('tgui/packages/tgfont/dist/tgfont.woff2')
.build(() => yarn(['workspace', 'tgfont', 'build']));
/// Builds tgui
const taskTgui = new Task('tgui')
.depends('tgui/.yarn/install-state.gz')
.depends('tgui/yarn.lock')
.depends('tgui/webpack.config.js')
.depends('tgui/**/package.json')
<<<<<<< HEAD
.depends('tgui/packages/**/*.+(js|jsx|ts|tsx|cjs|mjs|scss)')
=======
.depends('tgui/packages/**/*.+(js|cjs|ts|tsx|scss)')
>>>>>>> 8080a5132ca (tgui: ESLint and VSCode settings improvements (#57905))
.provides('tgui/public/tgui.bundle.css')
.provides('tgui/public/tgui.bundle.js')
.provides('tgui/public/tgui-common.bundle.js')
.provides('tgui/public/tgui-panel.bundle.css')
.provides('tgui/public/tgui-panel.bundle.js')
.build(async () => {
// Instead of calling `tgui/bin/tgui`, we reproduce the whole pipeline
// here for maximum compilation speed.
const yarnPath = resolveGlob('./tgui/.yarn/releases/yarn-*.cjs')[0]
.replace('/tgui/', '/');
const yarn = args => exec('node', [yarnPath, ...args], {
cwd: './tgui',
});
await yarn(['install']);
await yarn(['run', 'webpack-cli', '--mode=production']);
});
const taskDm = new Task('dm')
const taskDm = (...injectedDefines) => new Task('dm')
.depends('_maps/map_files/generic/**')
.depends('code/**')
.depends('goon/**')
@@ -67,9 +103,9 @@ const taskDm = new Task('dm')
.depends('modular_skyrat/**') // SKYRAT EDIT ADDITION -- check modular_skyrat too pls, build.js
.depends('tgui/public/tgui.html')
.depends('tgui/public/*.bundle.*')
.depends('tgstation.dme')
.provides('tgstation.dmb')
.provides('tgstation.rsc')
.depends(`${DME_NAME}.dme`)
.provides(`${DME_NAME}.dmb`)
.provides(`${DME_NAME}.rsc`)
.build(async () => {
const dmPath = await (async () => {
// Search in array of paths
@@ -114,17 +150,66 @@ const taskDm = new Task('dm')
|| 'DreamMaker'
);
})();
await exec(dmPath, ['tgstation.dme']);
if (injectedDefines.length) {
const injectedContent = injectedDefines
.map(x => `#define ${x}\n`)
.join('')
// Create mdme file
fs.writeFileSync(`${DME_NAME}.mdme`, injectedContent)
// Add the actual dme content
const dme_content = fs.readFileSync(`${DME_NAME}.dme`)
fs.appendFileSync(`${DME_NAME}.mdme`, dme_content)
await exec(dmPath, [`${DME_NAME}.mdme`]);
// Rename dmb
fs.renameSync(`${DME_NAME}.mdme.dmb`, `${DME_NAME}.dmb`)
// Rename rsc
fs.renameSync(`${DME_NAME}.mdme.rsc`, `${DME_NAME}.rsc`)
// Remove mdme
fs.rmSync(`${DME_NAME}.mdme`)
}
else {
await exec(dmPath, [`${DME_NAME}.dme`]);
}
});
// Frontend
const tasksToRun = [
taskTgui,
taskDm,
];
if (process.env.TG_BUILD_TGS_MODE) {
tasksToRun.pop();
let tasksToRun = [];
switch (BUILD_MODE) {
case STANDARD_BUILD:
tasksToRun = [
taskYarn,
taskTgfont,
taskTgui,
taskDm(),
]
break;
case TGS_BUILD:
tasksToRun = [
taskYarn,
taskTgfont,
taskTgui
]
break;
case ALL_MAPS_BUILD:
tasksToRun = [
taskYarn,
taskTgfont,
taskTgui,
taskDm('CIBUILDING','CITESTING','ALL_MAPS')
];
break;
case TEST_RUN_BUILD:
tasksToRun = [
taskYarn,
taskTgfont,
taskTgui,
taskDm('CIBUILDING')
];
break;
default:
console.error(`Unknown build mode : ${BUILD_MODE}`)
break;
}
runTasks(tasksToRun);