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 updateFilesServer = transformFiles.updateFilesServer;
export const updateFilesMainMenu = transformFiles.updateFilesMainMenu;
export const updateFilesBuild = transformFiles.updateFilesBuild;
export const updateFilesAll = transformFiles.updateAll;
import * as changelog from "./tasks/changelog/createChangelog";

View File

@ -1,6 +1,13 @@
import fs from "fs";
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 gulp from "gulp";
import dedent from "dedent-js";
@ -76,22 +83,93 @@ async function updateFilesSetup(): Promise<void> {
}
}
async function updateFilesBuildSetup(): Promise<void> {
async function updateFilesBuildSetup() {
updateFiles = true;
buildData = new BuildData();
updateFileVersion = buildData.rawVersion;
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 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 addWarning whether to add warning not to edit file
* <p>
* <p>
* 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
const data: string = await fs.promises.readFile(readPath, "utf8");
@ -99,6 +177,7 @@ async function modifyFile(readPath: string, writePaths: string[], replacementObj
let modifiedData: string = mustache.render(data, replacementObject);
// Add warning to not edit file
if (addWarning)
modifiedData = dedent`# DO NOT EDIT THIS FILE! EDIT THE TEMPlATES INSTEAD!
# See https://github.com/Nomi-CEu/Nomi-CEu/wiki/Part-1:-Contributing-Information#section-5-template-information!
${modifiedData}`;
@ -237,7 +316,6 @@ export const updateFilesIssue = gulp.series(updateFilesSetup, updateIssueTemplat
export const updateFilesRandomPatches = gulp.series(updateFilesSetup, updateRandomPatchesConfig);
export const updateFilesServer = gulp.series(updateFilesSetup, updateServerProperties);
export const updateFilesMainMenu = gulp.series(updateFilesSetup, updateMainMenuConfig);
export const updateFilesBuild = gulp.series(updateFilesBuildSetup, updateRandomPatchesConfig, updateServerProperties);
export const updateAll = gulp.series(
updateFilesSetup,

View File

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

View File

@ -2,7 +2,14 @@ import fs from "fs";
import gulp from "gulp";
import upath from "upath";
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 { FileDef } from "../../types/fileDef";
import Bluebird from "bluebird";
@ -30,9 +37,10 @@ async function createSharedDirs() {
* Copies modpack overrides.
*/
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) => {
gulp
.src(upath.join(buildConfig.buildSourceDirectory, overridesFolder, "**/*"))
.src(buildConfig.copyToSharedDirGlobs, { cwd: upath.join(buildConfig.buildSourceDirectory) })
.pipe(gulp.dest(upath.join(sharedDestDirectory, overridesFolder)))
.on("end", resolve);
});
@ -131,16 +139,16 @@ import transformVersion from "./transformVersion";
import { createBuildChangelog } from "../changelog/createChangelog";
import mustache from "mustache";
import log from "fancy-log";
import { updateFilesBuild } from "../misc/transformFiles";
import { updateBuildRandomPatches } from "../misc/transformFiles";
import { transformQuestBook } from "./quest";
export default gulp.series(
sharedCleanUp,
createSharedDirs,
updateFilesBuild,
copyOverrides,
fetchOrMakeChangelog,
fetchExternalDependencies,
updateBuildRandomPatches,
transformVersion,
transformQuestBook,
);

View File

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