Fix Build Task Changing Non-Build Files (#557)

[SKIP]
This commit is contained in:
Integer Limit 2023-12-05 21:04:22 +11:00 committed by GitHub
parent 34c9499657
commit 29ad9b35fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 106 additions and 22 deletions

View File

@ -10,7 +10,6 @@ export const updateFilesIssue = transformFiles.updateFilesIssue;
export const updateFilesRandomPatches = transformFiles.updateFilesRandomPatches; export const updateFilesRandomPatches = transformFiles.updateFilesRandomPatches;
export const updateFilesServer = transformFiles.updateFilesServer; export const updateFilesServer = transformFiles.updateFilesServer;
export const updateFilesMainMenu = transformFiles.updateFilesMainMenu; export const updateFilesMainMenu = transformFiles.updateFilesMainMenu;
export const updateFilesBuild = transformFiles.updateFilesBuild;
export const updateFilesAll = transformFiles.updateAll; export const updateFilesAll = transformFiles.updateAll;
import * as changelog from "./tasks/changelog/createChangelog"; import * as changelog from "./tasks/changelog/createChangelog";

View File

@ -1,6 +1,13 @@
import fs from "fs"; import fs from "fs";
import upath from "upath"; import upath from "upath";
import { configFolder, configOverridesFolder, rootDirectory, templatesFolder } from "../../globals"; import {
configFolder,
configOverridesFolder,
rootDirectory,
serverDestDirectory,
sharedDestDirectory,
templatesFolder,
} from "../../globals";
import mustache from "mustache"; import mustache from "mustache";
import gulp from "gulp"; import gulp from "gulp";
import dedent from "dedent-js"; import dedent from "dedent-js";
@ -76,22 +83,93 @@ async function updateFilesSetup(): Promise<void> {
} }
} }
async function updateFilesBuildSetup(): Promise<void> { async function updateFilesBuildSetup() {
updateFiles = true; updateFiles = true;
buildData = new BuildData(); buildData = new BuildData();
updateFileVersion = buildData.rawVersion; updateFileVersion = buildData.rawVersion;
updateFileTransformedVersion = buildData.transformedVersion; updateFileTransformedVersion = buildData.transformedVersion;
} }
export async function updateBuildServerProperties(): Promise<void> {
await updateFilesBuildSetup();
// Note we can't use the `configOverridesFolder` variable as that includes `overrides/`
// File name of the output files
const fileName = "server.properties";
// File name of the Normal Template File
const fileNameNormal = "server_normal.properties";
// File name of the Expert Template File
const fileNameExpert = "server_expert.properties";
// Replacement Object
const replacementObject: Record<string, unknown> = {
versionTitle: updateFiles ? updateFileTransformedVersion : buildData.transformedVersion,
};
// Read and Write paths for normal
const readPathNormal: string = upath.join(templatesFolder, fileNameNormal);
const writePathsNormal: string[] = [
upath.join(serverDestDirectory, fileName),
upath.join(serverDestDirectory, "config-overrides", "normal", fileName),
];
// Modify Normal File
await modifyFile(readPathNormal, writePathsNormal, replacementObject, false);
// Read and Write paths for expert
const readPathExpert: string = upath.join(templatesFolder, fileNameExpert);
const writePathExpert: string = upath.join(serverDestDirectory, "config-overrides", "expert", fileName);
// Modify Expert File
await modifyFile(readPathExpert, [writePathExpert], replacementObject, false);
}
export async function updateBuildRandomPatches(): Promise<void> {
await updateFilesBuildSetup();
// Filename & paths
const fileName = "randompatches.cfg";
const readPath: string = upath.join(templatesFolder, fileName);
const writePathsNormal: string[] = [
upath.join(sharedDestDirectory, configFolder, fileName),
upath.join(sharedDestDirectory, configOverridesFolder, "normal", fileName),
];
// Replacement object
const replacementObject: Record<string, unknown> = {
versionTitle: updateFiles ? updateFileTransformedVersion : buildData.transformedVersion,
mode: "Normal",
};
// Modify Normal File
await modifyFile(readPath, writePathsNormal, replacementObject, false);
// Change values for Expert Config
replacementObject["mode"] = "Expert";
const writePathExpert = upath.join(sharedDestDirectory, configOverridesFolder, "expert", fileName);
// Modify Expert File
await modifyFile(readPath, [writePathExpert], replacementObject, false);
}
/** /**
* @param readPath The filepath to read from. (Template) * @param readPath The filepath to read from. (Template)
* @param writePaths The filepaths to write to. * @param writePaths The filepaths to write to.
* @param replacementObject A record, of type string to type unknown, containing the keys, and replacement for those keys * @param replacementObject A record, of type string to type unknown, containing the keys, and replacement for those keys
* @param addWarning whether to add warning not to edit file
* <p> * <p>
* <p> * <p>
* A warning not to edit the file will also be added to the start of the file. * A warning not to edit the file will also be added to the start of the file.
*/ */
async function modifyFile(readPath: string, writePaths: string[], replacementObject: Record<string, unknown>) { async function modifyFile(
readPath: string,
writePaths: string[],
replacementObject: Record<string, unknown>,
addWarning = true,
) {
// Read the file content // Read the file content
const data: string = await fs.promises.readFile(readPath, "utf8"); const data: string = await fs.promises.readFile(readPath, "utf8");
@ -99,9 +177,10 @@ async function modifyFile(readPath: string, writePaths: string[], replacementObj
let modifiedData: string = mustache.render(data, replacementObject); let modifiedData: string = mustache.render(data, replacementObject);
// Add warning to not edit file // Add warning to not edit file
modifiedData = dedent`# DO NOT EDIT THIS FILE! EDIT THE TEMPlATES INSTEAD! if (addWarning)
# See https://github.com/Nomi-CEu/Nomi-CEu/wiki/Part-1:-Contributing-Information#section-5-template-information! modifiedData = dedent`# DO NOT EDIT THIS FILE! EDIT THE TEMPlATES INSTEAD!
${modifiedData}`; # See https://github.com/Nomi-CEu/Nomi-CEu/wiki/Part-1:-Contributing-Information#section-5-template-information!
${modifiedData}`;
// Write the modified content back to the file // Write the modified content back to the file
for (const filename of writePaths) { for (const filename of writePaths) {
@ -237,7 +316,6 @@ export const updateFilesIssue = gulp.series(updateFilesSetup, updateIssueTemplat
export const updateFilesRandomPatches = gulp.series(updateFilesSetup, updateRandomPatchesConfig); export const updateFilesRandomPatches = gulp.series(updateFilesSetup, updateRandomPatchesConfig);
export const updateFilesServer = gulp.series(updateFilesSetup, updateServerProperties); export const updateFilesServer = gulp.series(updateFilesSetup, updateServerProperties);
export const updateFilesMainMenu = gulp.series(updateFilesSetup, updateMainMenuConfig); export const updateFilesMainMenu = gulp.series(updateFilesSetup, updateMainMenuConfig);
export const updateFilesBuild = gulp.series(updateFilesBuildSetup, updateRandomPatchesConfig, updateServerProperties);
export const updateAll = gulp.series( export const updateAll = gulp.series(
updateFilesSetup, updateFilesSetup,

View File

@ -10,16 +10,10 @@ import Bluebird from "bluebird";
import { ForgeProfile } from "../../types/forgeProfile"; import { ForgeProfile } from "../../types/forgeProfile";
import { FileDef } from "../../types/fileDef"; import { FileDef } from "../../types/fileDef";
import { downloadOrRetrieveFileDef, getVersionManifest, libraryToPath, relative } from "../../util/util"; import { downloadOrRetrieveFileDef, getVersionManifest, libraryToPath, relative } from "../../util/util";
import { import { modDestDirectory, modpackManifest, serverDestDirectory, sharedDestDirectory } from "../../globals";
mmcDestDirectory,
modDestDirectory,
modpackManifest,
serverDestDirectory,
sharedDestDirectory
} from "../../globals";
import del from "del"; import del from "del";
import { VersionManifest } from "../../types/versionManifest"; import { VersionManifest } from "../../types/versionManifest";
import { fetchMods } from "../../util/curseForgeAPI"; import { updateBuildServerProperties } from "../misc/transformFiles";
const FORGE_VERSION_REG = /forge-(.+)/; const FORGE_VERSION_REG = /forge-(.+)/;
const FORGE_MAVEN = "https://files.minecraftforge.net/maven/"; const FORGE_MAVEN = "https://files.minecraftforge.net/maven/";
@ -202,7 +196,7 @@ function copyServerOverrides() {
/** /**
* Copies files from ./serverfiles into dest folder. * Copies files from ./serverfiles into dest folder.
*/ */
function copyServerfiles() { function copyServerFiles() {
return src(["../serverfiles/**"]).pipe(dest(serverDestDirectory)); return src(["../serverfiles/**"]).pipe(dest(serverDestDirectory));
} }
@ -267,9 +261,10 @@ export default gulp.series([
downloadMinecraftServer, downloadMinecraftServer,
copyServerMods, copyServerMods,
copyServerOverrides, copyServerOverrides,
copyServerfiles, copyServerFiles,
copyServerLicense, copyServerLicense,
copyServerChangelog, copyServerChangelog,
copyServerUpdateNotes, copyServerUpdateNotes,
processLaunchscripts, processLaunchscripts,
updateBuildServerProperties,
]); ]);

View File

@ -2,7 +2,14 @@ import fs from "fs";
import gulp from "gulp"; import gulp from "gulp";
import upath from "upath"; import upath from "upath";
import buildConfig from "../../buildConfig"; import buildConfig from "../../buildConfig";
import { modDestDirectory, modpackManifest, overridesFolder, sharedDestDirectory, tempDirectory } from "../../globals"; import {
modDestDirectory,
modpackManifest,
overridesFolder,
rootDirectory,
sharedDestDirectory,
tempDirectory
} from "../../globals";
import del from "del"; import del from "del";
import { FileDef } from "../../types/fileDef"; import { FileDef } from "../../types/fileDef";
import Bluebird from "bluebird"; import Bluebird from "bluebird";
@ -30,9 +37,10 @@ async function createSharedDirs() {
* Copies modpack overrides. * Copies modpack overrides.
*/ */
async function copyOverrides() { async function copyOverrides() {
// Don't copy server.properties files in config-overrides, it is auto transformed into the server build folder
return new Promise((resolve) => { return new Promise((resolve) => {
gulp gulp
.src(upath.join(buildConfig.buildSourceDirectory, overridesFolder, "**/*")) .src(buildConfig.copyToSharedDirGlobs, { cwd: upath.join(buildConfig.buildSourceDirectory) })
.pipe(gulp.dest(upath.join(sharedDestDirectory, overridesFolder))) .pipe(gulp.dest(upath.join(sharedDestDirectory, overridesFolder)))
.on("end", resolve); .on("end", resolve);
}); });
@ -131,16 +139,16 @@ import transformVersion from "./transformVersion";
import { createBuildChangelog } from "../changelog/createChangelog"; import { createBuildChangelog } from "../changelog/createChangelog";
import mustache from "mustache"; import mustache from "mustache";
import log from "fancy-log"; import log from "fancy-log";
import { updateFilesBuild } from "../misc/transformFiles"; import { updateBuildRandomPatches } from "../misc/transformFiles";
import { transformQuestBook } from "./quest"; import { transformQuestBook } from "./quest";
export default gulp.series( export default gulp.series(
sharedCleanUp, sharedCleanUp,
createSharedDirs, createSharedDirs,
updateFilesBuild,
copyOverrides, copyOverrides,
fetchOrMakeChangelog, fetchOrMakeChangelog,
fetchExternalDependencies, fetchExternalDependencies,
updateBuildRandomPatches,
transformVersion, transformVersion,
transformQuestBook, transformQuestBook,
); );

View File

@ -7,6 +7,10 @@
"launchscriptsMinRAM": "2048M", "launchscriptsMinRAM": "2048M",
"launchscriptsMaxRAM": "2048M", "launchscriptsMaxRAM": "2048M",
"launchscriptsJVMArgs": "", "launchscriptsJVMArgs": "",
"copyToSharedDirGlobs": [
"overrides/**/*",
"!overrides/**/server.properties"
],
"copyFromSharedServerGlobs": [ "copyFromSharedServerGlobs": [
"overrides/**/*", "overrides/**/*",
"!overrides/resources/**/*" "!overrides/resources/**/*"