mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 16:18:01 +01:00
Exit on DreamMaker warnings in CI Windows build (#61025)
Added an option to tools/build/build to treat DreamMaker warnings as errors. Enabled this option only for Windows Build (tools/ci/build.ps1). Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
This commit is contained in:
co-authored by
Aleksej Komarov
parent
3ccc13fc64
commit
e6e38ec4e5
@@ -36,6 +36,11 @@ export const PortParameter = new Juke.Parameter({
|
||||
|
||||
export const CiParameter = new Juke.Parameter({ type: 'boolean' });
|
||||
|
||||
export const WarningParameter = new Juke.Parameter({
|
||||
type: 'string[]',
|
||||
alias: 'W',
|
||||
});
|
||||
|
||||
export const DmMapsIncludeTarget = new Juke.Target({
|
||||
executes: async () => {
|
||||
const folders = [
|
||||
@@ -73,6 +78,7 @@ export const DmTarget = new Juke.Target({
|
||||
executes: async ({ get }) => {
|
||||
await DreamMaker(`${DME_NAME}.dme`, {
|
||||
defines: ['CBT', ...get(DefineParameter)],
|
||||
warningsAsErrors: get(WarningParameter).includes('error'),
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -86,6 +92,7 @@ export const DmTestTarget = new Juke.Target({
|
||||
fs.copyFileSync(`${DME_NAME}.dme`, `${DME_NAME}.test.dme`);
|
||||
await DreamMaker(`${DME_NAME}.test.dme`, {
|
||||
defines: ['CBT', 'CIBUILDING', ...get(DefineParameter)],
|
||||
warningsAsErrors: get(WarningParameter).includes('error'),
|
||||
});
|
||||
Juke.rm('data/logs/ci', { recursive: true });
|
||||
await DreamDaemon(
|
||||
|
||||
@@ -60,7 +60,10 @@ const getDmPath = async () => {
|
||||
|
||||
/**
|
||||
* @param {string} dmeFile
|
||||
* @param {{ defines?: string[] }} options
|
||||
* @param {{
|
||||
* defines?: string[];
|
||||
* warningsAsErrors?: boolean;
|
||||
* }} options
|
||||
*/
|
||||
export const DreamMaker = async (dmeFile, options = {}) => {
|
||||
const dmPath = await getDmPath();
|
||||
@@ -85,6 +88,14 @@ export const DreamMaker = async (dmeFile, options = {}) => {
|
||||
};
|
||||
testOutputFile(`${dmeBaseName}.dmb`);
|
||||
testOutputFile(`${dmeBaseName}.rsc`);
|
||||
const runWithWarningChecks = async (dmeFile, args) => {
|
||||
const execReturn = await Juke.exec(dmeFile, args);
|
||||
if (options.warningsAsErrors && execReturn.combined.match(/\d+:warning: /)) {
|
||||
Juke.logger.error(`Compile warnings treated as errors`);
|
||||
throw new Juke.ExitCode(2);
|
||||
}
|
||||
return execReturn;
|
||||
}
|
||||
// Compile
|
||||
const { defines } = options;
|
||||
if (defines && defines.length > 0) {
|
||||
@@ -96,7 +107,7 @@ export const DreamMaker = async (dmeFile, options = {}) => {
|
||||
fs.writeFileSync(`${dmeBaseName}.m.dme`, injectedContent);
|
||||
const dmeContent = fs.readFileSync(`${dmeBaseName}.dme`);
|
||||
fs.appendFileSync(`${dmeBaseName}.m.dme`, dmeContent);
|
||||
await Juke.exec(dmPath, [`${dmeBaseName}.m.dme`]);
|
||||
await runWithWarningChecks(dmPath, [`${dmeBaseName}.m.dme`]);
|
||||
fs.writeFileSync(`${dmeBaseName}.dmb`, fs.readFileSync(`${dmeBaseName}.m.dmb`));
|
||||
fs.writeFileSync(`${dmeBaseName}.rsc`, fs.readFileSync(`${dmeBaseName}.m.rsc`));
|
||||
}
|
||||
@@ -105,7 +116,7 @@ export const DreamMaker = async (dmeFile, options = {}) => {
|
||||
}
|
||||
}
|
||||
else {
|
||||
await Juke.exec(dmPath, [dmeFile]);
|
||||
await runWithWarningChecks(dmPath, [dmeFile]);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -5,6 +5,6 @@ if(!(Test-Path -Path "C:/byond")){
|
||||
}
|
||||
|
||||
bash tools/ci/install_node.sh
|
||||
bash tools/build/build
|
||||
bash tools/build/build -Werror
|
||||
|
||||
exit $LASTEXITCODE
|
||||
|
||||
Reference in New Issue
Block a user