diff --git a/tools/gulpfile.ts b/tools/gulpfile.ts index a29708e..0b79339 100644 --- a/tools/gulpfile.ts +++ b/tools/gulpfile.ts @@ -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"; diff --git a/tools/tasks/misc/transformFiles.ts b/tools/tasks/misc/transformFiles.ts index 61a4cfd..71e9233 100644 --- a/tools/tasks/misc/transformFiles.ts +++ b/tools/tasks/misc/transformFiles.ts @@ -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 { } } -async function updateFilesBuildSetup(): Promise { +async function updateFilesBuildSetup() { updateFiles = true; buildData = new BuildData(); updateFileVersion = buildData.rawVersion; updateFileTransformedVersion = buildData.transformedVersion; } +export async function updateBuildServerProperties(): Promise { + 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 = { + 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 { + 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 = { + 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 *

*

* 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) { +async function modifyFile( + readPath: string, + writePaths: string[], + replacementObject: Record, + addWarning = true, +) { // Read the file content 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); // Add warning to not edit file - 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}`; + 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}`; // Write the modified content back to the file 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 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, diff --git a/tools/tasks/server/index.ts b/tools/tasks/server/index.ts index 7301185..5450844 100644 --- a/tools/tasks/server/index.ts +++ b/tools/tasks/server/index.ts @@ -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, ]); diff --git a/tools/tasks/shared/index.ts b/tools/tasks/shared/index.ts index cb85581..8b2893b 100644 --- a/tools/tasks/shared/index.ts +++ b/tools/tasks/shared/index.ts @@ -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, ); diff --git a/tools/util/buildConfig.default.json b/tools/util/buildConfig.default.json index 7872bdd..2c12664 100644 --- a/tools/util/buildConfig.default.json +++ b/tools/util/buildConfig.default.json @@ -7,6 +7,10 @@ "launchscriptsMinRAM": "2048M", "launchscriptsMaxRAM": "2048M", "launchscriptsJVMArgs": "", + "copyToSharedDirGlobs": [ + "overrides/**/*", + "!overrides/**/server.properties" + ], "copyFromSharedServerGlobs": [ "overrides/**/*", "!overrides/resources/**/*"