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:
mokulus
2021-08-26 12:08:26 +03:00
committed by GitHub
co-authored by Aleksej Komarov
parent 3ccc13fc64
commit e6e38ec4e5
3 changed files with 22 additions and 4 deletions
+7
View File
@@ -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(
+14 -3
View File
@@ -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
View File
@@ -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