isaacscript 5.2.14 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/banner.js +2 -2
- package/dist/banner.js.map +1 -1
- package/dist/commands/check/check.js +32 -22
- package/dist/commands/check/check.js.map +1 -1
- package/dist/commands/copy/copy.js +4 -4
- package/dist/commands/copy/copy.js.map +1 -1
- package/dist/commands/init/checkIfProjectPathExists.js +15 -5
- package/dist/commands/init/checkIfProjectPathExists.js.map +1 -1
- package/dist/commands/init/checkModTargetDirectory.js +11 -5
- package/dist/commands/init/checkModTargetDirectory.js.map +1 -1
- package/dist/commands/init/createProject.js +38 -82
- package/dist/commands/init/createProject.js.map +1 -1
- package/dist/commands/init/getModsDirectory.js +4 -2
- package/dist/commands/init/getModsDirectory.js.map +1 -1
- package/dist/commands/init/init.js +1 -1
- package/dist/commands/init/init.js.map +1 -1
- package/dist/commands/init/vsCode.js +4 -1
- package/dist/commands/init/vsCode.js.map +1 -1
- package/dist/commands/monitor/copyWatcherMod.js +9 -9
- package/dist/commands/monitor/copyWatcherMod.js.map +1 -1
- package/dist/commands/monitor/monitor.js +18 -18
- package/dist/commands/monitor/monitor.js.map +1 -1
- package/dist/commands/monitor/saveDatWriter/saveDatWriter.js +13 -9
- package/dist/commands/monitor/saveDatWriter/saveDatWriter.js.map +1 -1
- package/dist/commands/monitor/spawnTSTLWatcher.js +39 -34
- package/dist/commands/monitor/spawnTSTLWatcher.js.map +1 -1
- package/dist/commands/monitor/touchWatcherSaveDatFiles.js +7 -5
- package/dist/commands/monitor/touchWatcherSaveDatFiles.js.map +1 -1
- package/dist/commands/publish/isaacscriptMod.js +23 -17
- package/dist/commands/publish/isaacscriptMod.js.map +1 -1
- package/dist/commands/publish/publish.js +20 -18
- package/dist/commands/publish/publish.js.map +1 -1
- package/dist/commands/publish/validate.js +2 -2
- package/dist/commands/publish/validate.js.map +1 -1
- package/dist/configFile.js +7 -4
- package/dist/configFile.js.map +1 -1
- package/dist/constants.js +2 -2
- package/dist/constants.js.map +1 -1
- package/dist/customStage.js +55 -36
- package/dist/customStage.js.map +1 -1
- package/dist/dev.js +3 -2
- package/dist/dev.js.map +1 -1
- package/dist/git.js +3 -2
- package/dist/git.js.map +1 -1
- package/dist/tsconfig.js +5 -2
- package/dist/tsconfig.js.map +1 -1
- package/dist/validateMod.js +14 -9
- package/dist/validateMod.js.map +1 -1
- package/file-templates/dynamic/Node.gitignore +3 -1
- package/file-templates/static/.vscode/settings.json +2 -2
- package/file-templates/static/eslint.config.mjs +2 -2
- package/file-templates/static/scripts/lint.ts +1 -1
- package/package.json +8 -11
|
@@ -12,7 +12,8 @@ export async function getModsDirectory(modsDirectoryOption) {
|
|
|
12
12
|
return modsDirectoryOption;
|
|
13
13
|
}
|
|
14
14
|
const defaultModsPath = getDefaultModsPath(process.platform);
|
|
15
|
-
|
|
15
|
+
const defaultModsExists = await isDirectory(defaultModsPath);
|
|
16
|
+
if (defaultModsExists) {
|
|
16
17
|
return defaultModsPath;
|
|
17
18
|
}
|
|
18
19
|
console.error(`Failed to find your mods directory at: ${chalk.green(defaultModsPath)}`);
|
|
@@ -20,7 +21,8 @@ export async function getModsDirectory(modsDirectoryOption) {
|
|
|
20
21
|
if (modsDir === "") {
|
|
21
22
|
fatalError("Error: You did not provide a response; exiting.");
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
+
const modsExists = await isDirectory(modsDir);
|
|
25
|
+
if (!modsExists) {
|
|
24
26
|
fatalError(`Error: The directory of "${chalk.green(modsDir)}" does not exist. Exiting.`);
|
|
25
27
|
}
|
|
26
28
|
if (path.basename(modsDir) !== MODS) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getModsDirectory.js","sourceRoot":"","sources":["../../../src/commands/init/getModsDirectory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,IAAI,GAAG,MAAM,CAAC;AAEpB,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,CACzC,IAAI,EACJ,qBAAqB,EACrB,OAAO,EACP,WAAW,EACX,QAAQ,EACR,8BAA8B,EAC9B,IAAI,CACL,CAAC;AAEF,yCAAyC;AACzC,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CACvC,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,EACX,QAAQ,EACR,8BAA8B,EAC9B,IAAI,CACL,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,mBAAuC;IAEvC,IAAI,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,KAAK,EAAE,EAAE,CAAC;QACpE,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7D,
|
|
1
|
+
{"version":3,"file":"getModsDirectory.js","sourceRoot":"","sources":["../../../src/commands/init/getModsDirectory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,IAAI,GAAG,MAAM,CAAC;AAEpB,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,CACzC,IAAI,EACJ,qBAAqB,EACrB,OAAO,EACP,WAAW,EACX,QAAQ,EACR,8BAA8B,EAC9B,IAAI,CACL,CAAC;AAEF,yCAAyC;AACzC,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CACvC,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,EACX,QAAQ,EACR,8BAA8B,EAC9B,IAAI,CACL,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,mBAAuC;IAEvC,IAAI,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,KAAK,EAAE,EAAE,CAAC;QACpE,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7D,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,CAAC;IAC7D,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,KAAK,CACX,0CAA0C,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CACzE,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,cAAc,CAClC,+BAA+B,IAAI,kFAAkF,CACtH,CAAC;IAEF,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,UAAU,CAAC,iDAAiD,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,CACR,4BAA4B,KAAK,CAAC,KAAK,CACrC,OAAO,CACR,4BAA4B,CAC9B,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACpC,UAAU,CACR,iCAAiC,KAAK,CAAC,KAAK,CAC1C,OAAO,CACR,wDAAwD,IAAI,wBAAwB,CACtF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,yBAAyB,CAAC;QACnC,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,uBAAuB,CAAC;QACjC,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,UAAU,CACf,gEAAgE,KAAK,CAAC,KAAK,CACzE,QAAQ,CACT,EAAE,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -51,7 +51,7 @@ function validateSaveSlot(valueString) {
|
|
|
51
51
|
const initOptions = initCommand.opts();
|
|
52
52
|
async function init(name, options) {
|
|
53
53
|
const { forceName, skipGit, skipInstall, useCurrentDirectory, customDirectory, verbose, vscode, yes, } = options;
|
|
54
|
-
printBanner();
|
|
54
|
+
await printBanner();
|
|
55
55
|
const packageManager = await getPackageManagerUsedForNewProject(options);
|
|
56
56
|
// Prompt the end-user for some information (and validate it as we go).
|
|
57
57
|
const { projectPath, createNewDir } = await getProjectPath(name, useCurrentDirectory, customDirectory, yes, forceName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assertObject } from "complete-common";
|
|
1
2
|
import { commandExists, fatalError, getJSONC, isFile } from "complete-node";
|
|
2
3
|
import path from "node:path";
|
|
3
4
|
import { execShell } from "../../exec.js";
|
|
@@ -41,10 +42,12 @@ async function installVSCodeExtensions(projectPath, VSCodeCommand, verbose) {
|
|
|
41
42
|
}
|
|
42
43
|
async function getExtensionsFromJSON(projectPath) {
|
|
43
44
|
const extensionsJSONPath = path.join(projectPath, ".vscode", "extensions.json");
|
|
44
|
-
|
|
45
|
+
const file = await isFile(extensionsJSONPath);
|
|
46
|
+
if (!file) {
|
|
45
47
|
return [];
|
|
46
48
|
}
|
|
47
49
|
const extensionsJSON = await getJSONC(extensionsJSONPath);
|
|
50
|
+
assertObject(extensionsJSON, `The extensions file was not an object at: ${extensionsJSONPath}`);
|
|
48
51
|
const { recommendations } = extensionsJSON;
|
|
49
52
|
if (!Array.isArray(recommendations)) {
|
|
50
53
|
fatalError('The "recommendations" field in the "extensions.json" file is not an array.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsCode.js","sourceRoot":"","sources":["../../../src/commands/init/vsCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,gBAAgB,GAAG;IACvB,MAAM;IACN,QAAQ;IACR,UAAU;IACV,eAAe;CACP,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,WAAmB,EACnB,MAAe,EACf,GAAY,EACZ,OAAgB;IAEhB,MAAM,aAAa,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC/C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CACT,gHAAgH,CACjH,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,uBAAuB,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,YAAY,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,4CAA4C;QAC5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,WAAmB,EACnB,aAAqB,EACrB,OAAgB;IAEhB,2FAA2F;IAC3F,8FAA8F;IAC9F,kDAAkD;IAClD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC5D,KAAK,MAAM,aAAa,IAAI,UAAU,EAAE,CAAC;QACvC,SAAS,CAAC,aAAa,EAAE,CAAC,qBAAqB,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,WAAmB;IAEnB,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,WAAW,EACX,SAAS,EACT,iBAAiB,CAClB,CAAC;IAEF,IAAI,
|
|
1
|
+
{"version":3,"file":"vsCode.js","sourceRoot":"","sources":["../../../src/commands/init/vsCode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
import { copyFileOrDirectory, deleteFileOrDirectory, isFile, readFile, writeFile, } from "complete-node";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { DISABLE_IT_FILE, MAIN_LUA, WATCHER_MOD_NAME, WATCHER_MOD_SOURCE_PATH, } from "../../constants.js";
|
|
4
|
-
export function copyWatcherMod(config) {
|
|
4
|
+
export async function copyWatcherMod(config) {
|
|
5
5
|
// Check to see if this mod was disabled.
|
|
6
6
|
const watcherModPath = path.join(config.modsDirectory, WATCHER_MOD_NAME);
|
|
7
7
|
const disableItPath = path.join(watcherModPath, DISABLE_IT_FILE);
|
|
8
|
-
const watcherModDisabled = isFile(disableItPath);
|
|
8
|
+
const watcherModDisabled = await isFile(disableItPath);
|
|
9
9
|
// Delete and re-copy the watcher mod every time IsaacScript starts. This ensures that it is
|
|
10
10
|
// always the latest version.
|
|
11
|
-
deleteFileOrDirectory(watcherModPath);
|
|
12
|
-
copyFileOrDirectory(WATCHER_MOD_SOURCE_PATH, watcherModPath);
|
|
11
|
+
await deleteFileOrDirectory(watcherModPath);
|
|
12
|
+
await copyFileOrDirectory(WATCHER_MOD_SOURCE_PATH, watcherModPath);
|
|
13
13
|
if (watcherModDisabled) {
|
|
14
14
|
// Since we deleted the directory, the "disable.it" file was deleted. Restore it.
|
|
15
|
-
writeFile(disableItPath, "");
|
|
15
|
+
await writeFile(disableItPath, "");
|
|
16
16
|
}
|
|
17
17
|
// By default, the IsaacScript watcher mod automatically restarts the game, so we only need to
|
|
18
18
|
// disable it if the config option is explicitly set to false.
|
|
19
19
|
if (config.enableIsaacScriptWatcherAutoRestart === false) {
|
|
20
|
-
disableIsaacScriptWatcherAutomaticRestart(watcherModPath);
|
|
20
|
+
await disableIsaacScriptWatcherAutomaticRestart(watcherModPath);
|
|
21
21
|
}
|
|
22
22
|
// If we copied a new version of the watcher mod into place, but the user currently has the game
|
|
23
23
|
// open, then the old version will stay loaded. However, if the watcher mod reloads itself, the
|
|
24
24
|
// game will crash, so there is no automated solution for this.
|
|
25
25
|
}
|
|
26
|
-
function disableIsaacScriptWatcherAutomaticRestart(watcherModPath) {
|
|
26
|
+
async function disableIsaacScriptWatcherAutomaticRestart(watcherModPath) {
|
|
27
27
|
const mainLuaPath = path.join(watcherModPath, MAIN_LUA);
|
|
28
|
-
const mainLua = readFile(mainLuaPath);
|
|
28
|
+
const mainLua = await readFile(mainLuaPath);
|
|
29
29
|
const modifiedMainLua = mainLua.replace("local RESTART_GAME_ON_RECOMPILATION = true", "local RESTART_GAME_ON_RECOMPILATION = false");
|
|
30
|
-
writeFile(mainLuaPath, modifiedMainLua);
|
|
30
|
+
await writeFile(mainLuaPath, modifiedMainLua);
|
|
31
31
|
}
|
|
32
32
|
//# sourceMappingURL=copyWatcherMod.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copyWatcherMod.js","sourceRoot":"","sources":["../../../src/commands/monitor/copyWatcherMod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,MAAM,EACN,QAAQ,EACR,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,UAAU,cAAc,CAAC,MAAuB;
|
|
1
|
+
{"version":3,"file":"copyWatcherMod.js","sourceRoot":"","sources":["../../../src/commands/monitor/copyWatcherMod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,MAAM,EACN,QAAQ,EACR,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAuB;IAC1D,yCAAyC;IACzC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IACjE,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAEvD,4FAA4F;IAC5F,6BAA6B;IAC7B,MAAM,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,mBAAmB,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;IAEnE,IAAI,kBAAkB,EAAE,CAAC;QACvB,iFAAiF;QACjF,MAAM,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,8FAA8F;IAC9F,8DAA8D;IAC9D,IAAI,MAAM,CAAC,mCAAmC,KAAK,KAAK,EAAE,CAAC;QACzD,MAAM,yCAAyC,CAAC,cAAc,CAAC,CAAC;IAClE,CAAC;IAED,gGAAgG;IAChG,+FAA+F;IAC/F,+DAA+D;AACjE,CAAC;AAED,KAAK,UAAU,yCAAyC,CACtD,cAAsB;IAEtB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE5C,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CACrC,4CAA4C,EAC5C,6CAA6C,CAC9C,CAAC;IAEF,MAAM,SAAS,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -31,10 +31,10 @@ export const monitorCommand = new Command()
|
|
|
31
31
|
const monitorOptions = monitorCommand.opts();
|
|
32
32
|
async function monitor(options) {
|
|
33
33
|
const { skipProjectChecks, verbose } = options;
|
|
34
|
-
printBanner();
|
|
34
|
+
await printBanner();
|
|
35
35
|
const packageManager = await getPackageManagerUsedForExistingProject();
|
|
36
36
|
if (!skipProjectChecks) {
|
|
37
|
-
validateInIsaacScriptProject();
|
|
37
|
+
await validateInIsaacScriptProject();
|
|
38
38
|
await validatePackageJSONDependencies();
|
|
39
39
|
}
|
|
40
40
|
const config = await getConfigFromFile();
|
|
@@ -45,21 +45,18 @@ async function monitor(options) {
|
|
|
45
45
|
const modTargetDirectoryName = getModTargetDirectoryName(config);
|
|
46
46
|
const modTargetPath = path.join(config.modsDirectory, modTargetDirectoryName);
|
|
47
47
|
// Prepare the IsaacScript watcher mod.
|
|
48
|
-
copyWatcherMod(config);
|
|
49
|
-
touchWatcherSaveDatFiles(config);
|
|
48
|
+
await copyWatcherMod(config);
|
|
49
|
+
await touchWatcherSaveDatFiles(config);
|
|
50
50
|
// Perform the steps to link to a development version of "isaacscript-common", if necessary. (This
|
|
51
51
|
// has to be before preparing custom stages.)
|
|
52
|
-
|
|
53
|
-
linkDevelopmentIsaacScriptCommon(CWD, packageManager, verbose)
|
|
54
|
-
|
|
55
|
-
else {
|
|
56
|
-
errorIfIsaacScriptCommonLinkExists(CWD, packageManager);
|
|
57
|
-
}
|
|
52
|
+
await (config.isaacScriptCommonDev === true
|
|
53
|
+
? linkDevelopmentIsaacScriptCommon(CWD, packageManager, verbose)
|
|
54
|
+
: errorIfIsaacScriptCommonLinkExists(CWD, packageManager));
|
|
58
55
|
// Prepare the custom stages feature, if necessary.
|
|
59
56
|
await prepareCustomStages(packageManager, config.isaacScriptCommonDev, verbose);
|
|
60
57
|
// Delete and re-copy the mod every time IsaacScript starts. This ensures that it is always the
|
|
61
58
|
// latest version.
|
|
62
|
-
deleteFileOrDirectory(modTargetPath);
|
|
59
|
+
await deleteFileOrDirectory(modTargetPath);
|
|
63
60
|
// Subprocess #1 - The "save#.dat" file writer.
|
|
64
61
|
spawnSaveDatWriter(config);
|
|
65
62
|
// Subprocess #2 - The mod directory syncer.
|
|
@@ -68,9 +65,10 @@ async function monitor(options) {
|
|
|
68
65
|
spawnTSTLWatcher(config, CWD, packageManager);
|
|
69
66
|
// Subprocess #4 - `tstl --watch` (for the development version of `isaacscript-common`).
|
|
70
67
|
if (config.isaacScriptCommonDev === true) {
|
|
71
|
-
const isaacScriptMonorepoDirectory = getAndValidateIsaacScriptMonorepoDirectory(CWD);
|
|
68
|
+
const isaacScriptMonorepoDirectory = await getAndValidateIsaacScriptMonorepoDirectory(CWD);
|
|
72
69
|
const isaacScriptCommonDirectory = path.join(isaacScriptMonorepoDirectory, "packages", "isaacscript-common");
|
|
73
|
-
|
|
70
|
+
const directory = await isDirectory(isaacScriptCommonDirectory);
|
|
71
|
+
if (!directory) {
|
|
74
72
|
console.error(`The "isaacscript-common" directory does not exist at: ${isaacScriptCommonDirectory}`);
|
|
75
73
|
fatalError('Please make sure that the IsaacScript repository is placed next to this one. If you do not want to test a local version of "isaacscript-common", then set the "isaacScriptCommonDev" field to false in your "isaacscript.json" file.');
|
|
76
74
|
}
|
|
@@ -89,11 +87,11 @@ async function monitor(options) {
|
|
|
89
87
|
console.log("");
|
|
90
88
|
// (The process will now continue indefinitely for as long as the subprocesses exist.)
|
|
91
89
|
}
|
|
92
|
-
function linkDevelopmentIsaacScriptCommon(projectPath, packageManager, verbose) {
|
|
90
|
+
async function linkDevelopmentIsaacScriptCommon(projectPath, packageManager, verbose) {
|
|
93
91
|
if (packageManager !== PACKAGE_MANAGER_USED_FOR_ISAACSCRIPT) {
|
|
94
92
|
fatalError(`If you want to use this mod to develop/test "isaacscript-common", then the mod must be set up using the ${PACKAGE_MANAGER_USED_FOR_ISAACSCRIPT} package manager instead of: ${packageManager}`);
|
|
95
93
|
}
|
|
96
|
-
const isaacScriptMonorepoDirectory = getAndValidateIsaacScriptMonorepoDirectory(projectPath);
|
|
94
|
+
const isaacScriptMonorepoDirectory = await getAndValidateIsaacScriptMonorepoDirectory(projectPath);
|
|
97
95
|
console.log('Building "isaacscript-common"...');
|
|
98
96
|
// Ensure that dependencies are installed in the isaacscript monorepo.
|
|
99
97
|
const installCommand = getPackageManagerInstallCommand(packageManager);
|
|
@@ -103,7 +101,8 @@ function linkDevelopmentIsaacScriptCommon(projectPath, packageManager, verbose)
|
|
|
103
101
|
const buildCommand = "npm run build";
|
|
104
102
|
execShellString(buildCommand, verbose, false, iscPackagePath);
|
|
105
103
|
const localIsaacScriptCommonPath = path.join(projectPath, "node_modules", "isaacscript-common");
|
|
106
|
-
|
|
104
|
+
const link = await isLink(localIsaacScriptCommonPath);
|
|
105
|
+
if (link) {
|
|
107
106
|
console.log('The "isaacscript-common" package is already linked.');
|
|
108
107
|
}
|
|
109
108
|
else {
|
|
@@ -111,9 +110,10 @@ function linkDevelopmentIsaacScriptCommon(projectPath, packageManager, verbose)
|
|
|
111
110
|
execShell(PACKAGE_MANAGER_USED_FOR_ISAACSCRIPT, ["link", iscPackagePath], verbose, false, projectPath);
|
|
112
111
|
}
|
|
113
112
|
}
|
|
114
|
-
function errorIfIsaacScriptCommonLinkExists(projectPath, packageManager) {
|
|
113
|
+
async function errorIfIsaacScriptCommonLinkExists(projectPath, packageManager) {
|
|
115
114
|
const localIsaacScriptCommonPath = path.join(projectPath, "node_modules", "isaacscript-common");
|
|
116
|
-
|
|
115
|
+
const link = await isLink(localIsaacScriptCommonPath);
|
|
116
|
+
if (link
|
|
117
117
|
&& packageManager !== PackageManager.pnpm // pnpm uses links, so it will cause a false positive.
|
|
118
118
|
) {
|
|
119
119
|
fatalError(`Your "node_modules/isaacscript-common" directory is linked, but you do not have "isaacScriptCommonDev" set to true in your "isaacscript.json" file. You must either set it to true or remove the link via the following command: ${chalk.green(`${PACKAGE_MANAGER_USED_FOR_ISAACSCRIPT} unlink isaacscript-common`)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../../src/commands/monitor/monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,+BAA+B,EAC/B,WAAW,EACX,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,0CAA0C,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,oCAAoC,EACpC,uCAAuC,GACxC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE;KACxC,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,oBAAoB,CAAC,KAAK,CAAC,CAAC,kEAAkE;KAC9F,UAAU,CAAC,YAAY,EAAE,+CAA+C,CAAC;KACzE,MAAM,CACL,uBAAuB,EACvB,sDAAsD,EACtD,KAAK,CACN;KACA,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,KAAK,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,6DAA6D;AAC7D,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;AAG7C,KAAK,UAAU,OAAO,CAAC,OAAuB;IAC5C,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE/C,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../../src/commands/monitor/monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,8 @@ const SUBPROCESS_NAME = "save#.dat writer";
|
|
|
8
8
|
const MAX_MESSAGES = 100;
|
|
9
9
|
let saveDatPath;
|
|
10
10
|
let saveDatFileName;
|
|
11
|
-
init();
|
|
12
|
-
function init() {
|
|
11
|
+
await init();
|
|
12
|
+
async function init() {
|
|
13
13
|
const args = getArgs();
|
|
14
14
|
const firstArg = args[0];
|
|
15
15
|
assertDefined(firstArg, `The ${SUBPROCESS_NAME} process did not get a valid first argument.`);
|
|
@@ -17,16 +17,18 @@ function init() {
|
|
|
17
17
|
saveDatFileName = path.basename(saveDatPath);
|
|
18
18
|
// Check to see if the data directory exists.
|
|
19
19
|
const watcherModDataPath = path.dirname(saveDatPath);
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const file = await isFile(watcherModDataPath);
|
|
21
|
+
if (!file) {
|
|
22
|
+
await makeDirectory(watcherModDataPath);
|
|
22
23
|
}
|
|
23
24
|
// Listen for messages from the parent process.
|
|
24
25
|
process.on("message", (msg) => {
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
25
27
|
onMessage(msg.type, msg.data);
|
|
26
28
|
});
|
|
27
29
|
}
|
|
28
|
-
function onMessage(type, data, numRetries = 0) {
|
|
29
|
-
const saveDat = readSaveDatFromDisk();
|
|
30
|
+
async function onMessage(type, data, numRetries = 0) {
|
|
31
|
+
const saveDat = await readSaveDatFromDisk();
|
|
30
32
|
if (saveDat.length > MAX_MESSAGES) {
|
|
31
33
|
// If IsaacScript is running and:
|
|
32
34
|
// - the game is not open
|
|
@@ -41,10 +43,11 @@ function onMessage(type, data, numRetries = 0) {
|
|
|
41
43
|
writeSaveDatToDisk(type, data, saveDat, numRetries);
|
|
42
44
|
}
|
|
43
45
|
// eslint-disable-next-line complete/no-mutable-return
|
|
44
|
-
function readSaveDatFromDisk() {
|
|
46
|
+
async function readSaveDatFromDisk() {
|
|
45
47
|
let saveDat;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
const file = await isFile(saveDatPath);
|
|
49
|
+
if (file) {
|
|
50
|
+
const saveDatRaw = await readFile(saveDatPath);
|
|
48
51
|
try {
|
|
49
52
|
saveDat = JSONC.parse(saveDatRaw);
|
|
50
53
|
}
|
|
@@ -98,6 +101,7 @@ function writeSaveDatToDisk(type, data, saveDat, numRetries) {
|
|
|
98
101
|
}
|
|
99
102
|
send(`Writing to "${saveDatFileName}" failed. (The number of retries so far is ${numRetries}.) Trying again in 0.1 seconds...`);
|
|
100
103
|
setTimeout(() => {
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
101
105
|
onMessage(type, data, numRetries + 1);
|
|
102
106
|
}, 100);
|
|
103
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveDatWriter.js","sourceRoot":"","sources":["../../../../src/commands/monitor/saveDatWriter/saveDatWriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAC3C,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,IAAI,WAAmB,CAAC;AACxB,IAAI,eAAuB,CAAC;AAE5B,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"saveDatWriter.js","sourceRoot":"","sources":["../../../../src/commands/monitor/saveDatWriter/saveDatWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,40 +12,8 @@ export function spawnTSTLWatcher(config, cwd, packageManager, modCWD) {
|
|
|
12
12
|
cwd,
|
|
13
13
|
});
|
|
14
14
|
tstl.stdout.on("data", (data) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (msg.includes("Starting compilation in watch mode...")) {
|
|
18
|
-
const newMsg1 = `${PROJECT_NAME} is now watching for future changes${suffix}.`;
|
|
19
|
-
notifyGameMsg(newMsg1);
|
|
20
|
-
const target = suffix.includes("isaacscript-common")
|
|
21
|
-
? '"isaacscript-common"'
|
|
22
|
-
: "the mod";
|
|
23
|
-
const newMsg2 = `Compiling ${target} for the first time...`;
|
|
24
|
-
notifyGameMsg(newMsg2);
|
|
25
|
-
}
|
|
26
|
-
else if (msg.includes("File change detected. Starting incremental compilation...")) {
|
|
27
|
-
compilationStartTime = new Date();
|
|
28
|
-
const newMsg = `TypeScript change detected${suffix}. Compiling...`;
|
|
29
|
-
notifyGameMsg(newMsg);
|
|
30
|
-
}
|
|
31
|
-
else if (msg.includes("Found 0 errors. Watching for file changes.")) {
|
|
32
|
-
const compilationFinishTime = new Date();
|
|
33
|
-
const elapsedTimeMilliseconds = compilationFinishTime.getTime() - compilationStartTime.getTime();
|
|
34
|
-
const elapsedTimeSeconds = elapsedTimeMilliseconds / 1000;
|
|
35
|
-
const newMsg = `${COMPILATION_SUCCESSFUL_MESSAGE} (in ${elapsedTimeSeconds} seconds)${suffix}`;
|
|
36
|
-
notifyGameMsg(newMsg);
|
|
37
|
-
// Successful compilation of "isaacscript-common" will not trigger a recompilation in the mod.
|
|
38
|
-
// Thus, we must arbitrarily change a file to trigger a mod recompilation.
|
|
39
|
-
if (modCWD !== undefined) {
|
|
40
|
-
const bundleEntryTSPath = path.join(modCWD, "src", "bundleEntry.ts");
|
|
41
|
-
if (isFile(bundleEntryTSPath)) {
|
|
42
|
-
appendFile(bundleEntryTSPath, "// isaacscript-common dev forced recompilation\n");
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
notifyGameMsg(msg);
|
|
48
|
-
}
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
16
|
+
onTSTLStdoutData(config, cwd, modCWD, data);
|
|
49
17
|
});
|
|
50
18
|
tstl.stderr.on("data", (data) => {
|
|
51
19
|
const msg = data.toString().trim();
|
|
@@ -62,6 +30,43 @@ export function spawnTSTLWatcher(config, cwd, packageManager, modCWD) {
|
|
|
62
30
|
fatalError(`Error: ${processDescription} subprocess exited with code: ${code}`);
|
|
63
31
|
});
|
|
64
32
|
}
|
|
33
|
+
async function onTSTLStdoutData(config, cwd, modCWD, data) {
|
|
34
|
+
const msg = data.toString().trim();
|
|
35
|
+
const suffix = getMonitorMessageSuffix(config, cwd);
|
|
36
|
+
if (msg.includes("Starting compilation in watch mode...")) {
|
|
37
|
+
const newMsg1 = `${PROJECT_NAME} is now watching for future changes${suffix}.`;
|
|
38
|
+
notifyGameMsg(newMsg1);
|
|
39
|
+
const target = suffix.includes("isaacscript-common")
|
|
40
|
+
? '"isaacscript-common"'
|
|
41
|
+
: "the mod";
|
|
42
|
+
const newMsg2 = `Compiling ${target} for the first time...`;
|
|
43
|
+
notifyGameMsg(newMsg2);
|
|
44
|
+
}
|
|
45
|
+
else if (msg.includes("File change detected. Starting incremental compilation...")) {
|
|
46
|
+
compilationStartTime = new Date();
|
|
47
|
+
const newMsg = `TypeScript change detected${suffix}. Compiling...`;
|
|
48
|
+
notifyGameMsg(newMsg);
|
|
49
|
+
}
|
|
50
|
+
else if (msg.includes("Found 0 errors. Watching for file changes.")) {
|
|
51
|
+
const compilationFinishTime = new Date();
|
|
52
|
+
const elapsedTimeMilliseconds = compilationFinishTime.getTime() - compilationStartTime.getTime();
|
|
53
|
+
const elapsedTimeSeconds = elapsedTimeMilliseconds / 1000;
|
|
54
|
+
const newMsg = `${COMPILATION_SUCCESSFUL_MESSAGE} (in ${elapsedTimeSeconds} seconds)${suffix}`;
|
|
55
|
+
notifyGameMsg(newMsg);
|
|
56
|
+
// Successful compilation of "isaacscript-common" will not trigger a recompilation in the mod.
|
|
57
|
+
// Thus, we must arbitrarily change a file to trigger a mod recompilation.
|
|
58
|
+
if (modCWD !== undefined) {
|
|
59
|
+
const bundleEntryTSPath = path.join(modCWD, "src", "bundleEntry.ts");
|
|
60
|
+
const file = await isFile(bundleEntryTSPath);
|
|
61
|
+
if (file) {
|
|
62
|
+
await appendFile(bundleEntryTSPath, "// isaacscript-common dev forced recompilation\n");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
notifyGameMsg(msg);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
65
70
|
function getMonitorMessageSuffix(config, cwd) {
|
|
66
71
|
if (config.isaacScriptCommonDev === false
|
|
67
72
|
|| config.isaacScriptCommonDev === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawnTSTLWatcher.js","sourceRoot":"","sources":["../../../src/commands/monitor/spawnTSTLWatcher.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,UAAU,EACV,4BAA4B,EAC5B,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,8BAA8B,EAC9B,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,IAAI,oBAAoB,GAAG,IAAI,IAAI,EAAE,CAAC;AAEtC,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,GAAW,EACX,cAA8B,EAC9B,MAAe;IAEf,MAAM,kBAAkB,GAAG,MAAM,CAAC;IAClC,MAAM,OAAO,GAAG,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,uBAAuB,CAAC,EAAE;QACxE,KAAK,EAAE,IAAI;QACX,GAAG;KACJ,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAuB,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"spawnTSTLWatcher.js","sourceRoot":"","sources":["../../../src/commands/monitor/spawnTSTLWatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { isDirectory, isFile, makeDirectory, touch } from "complete-node";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { WATCHER_MOD_NAME } from "../../constants.js";
|
|
4
|
-
export function touchWatcherSaveDatFiles(config) {
|
|
4
|
+
export async function touchWatcherSaveDatFiles(config) {
|
|
5
5
|
const modsDataPath = path.resolve(config.modsDirectory, "..", "data");
|
|
6
6
|
const watcherModDataPath = path.join(modsDataPath, WATCHER_MOD_NAME);
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const directory = await isDirectory(watcherModDataPath);
|
|
8
|
+
if (!directory) {
|
|
9
|
+
await makeDirectory(watcherModDataPath);
|
|
9
10
|
}
|
|
10
11
|
const saveDatFileName = `save${config.saveSlot}.dat`;
|
|
11
12
|
const saveDatPath = path.join(watcherModDataPath, saveDatFileName);
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
const file = await isFile(saveDatPath);
|
|
14
|
+
if (!file) {
|
|
15
|
+
await touch(saveDatPath);
|
|
14
16
|
}
|
|
15
17
|
}
|
|
16
18
|
//# sourceMappingURL=touchWatcherSaveDatFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"touchWatcherSaveDatFiles.js","sourceRoot":"","sources":["../../../src/commands/monitor/touchWatcherSaveDatFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,wBAAwB,
|
|
1
|
+
{"version":3,"file":"touchWatcherSaveDatFiles.js","sourceRoot":"","sources":["../../../src/commands/monitor/touchWatcherSaveDatFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAuB;IAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,eAAe,GAAG,OAAO,MAAM,CAAC,QAAQ,MAAM,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
|
|
@@ -14,23 +14,24 @@ export async function publishIsaacScriptMod(dryRun, verbose) {
|
|
|
14
14
|
const modTargetDirectoryName = getModTargetDirectoryName(config);
|
|
15
15
|
const modTargetPath = path.join(config.modsDirectory, modTargetDirectoryName);
|
|
16
16
|
const version = await getPackageJSONVersion(undefined);
|
|
17
|
-
runReleaseScriptPreCopy(verbose);
|
|
17
|
+
await runReleaseScriptPreCopy(verbose);
|
|
18
18
|
await compileAndCopy(MOD_SOURCE_PATH, modTargetPath, packageManager, config.isaacScriptCommonDev, verbose);
|
|
19
|
-
purgeRoomXMLs(modTargetPath);
|
|
20
|
-
runReleaseScriptPostCopy(verbose);
|
|
19
|
+
await purgeRoomXMLs(modTargetPath);
|
|
20
|
+
await runReleaseScriptPostCopy(verbose);
|
|
21
21
|
if (dryRun) {
|
|
22
22
|
execShellString("git reset --hard", verbose); // Revert the version changes.
|
|
23
23
|
}
|
|
24
24
|
else {
|
|
25
25
|
const releaseGitCommitMessage = getReleaseGitCommitMessage(version);
|
|
26
26
|
gitCommitAllAndPush(releaseGitCommitMessage, verbose);
|
|
27
|
-
uploadMod(modTargetPath, verbose);
|
|
27
|
+
await uploadMod(modTargetPath, verbose);
|
|
28
28
|
}
|
|
29
29
|
const dryRunSuffix = dryRun ? " (dry run)" : "";
|
|
30
30
|
console.log(`\nPublished version ${version} successfully${dryRunSuffix}.`);
|
|
31
31
|
}
|
|
32
|
-
function runReleaseScriptPreCopy(verbose) {
|
|
33
|
-
|
|
32
|
+
async function runReleaseScriptPreCopy(verbose) {
|
|
33
|
+
const file = await isFile(PUBLISH_PRE_COPY_PY_PATH);
|
|
34
|
+
if (!file) {
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
36
37
|
console.log(`Running the "${PUBLISH_PRE_COPY_PY_PATH}" script.`);
|
|
@@ -39,8 +40,9 @@ function runReleaseScriptPreCopy(verbose) {
|
|
|
39
40
|
console.log(stdout);
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
|
-
function runReleaseScriptPostCopy(verbose) {
|
|
43
|
-
|
|
43
|
+
async function runReleaseScriptPostCopy(verbose) {
|
|
44
|
+
const file = await isFile(PUBLISH_POST_COPY_PY_PATH);
|
|
45
|
+
if (!file) {
|
|
44
46
|
return;
|
|
45
47
|
}
|
|
46
48
|
console.log(`Running the "${PUBLISH_POST_COPY_PY_PATH}" script.`);
|
|
@@ -49,20 +51,23 @@ function runReleaseScriptPostCopy(verbose) {
|
|
|
49
51
|
console.log(stdout);
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
|
-
function purgeRoomXMLs(modTargetPath) {
|
|
54
|
+
async function purgeRoomXMLs(modTargetPath) {
|
|
53
55
|
const roomsPath = path.join(modTargetPath, "resources", "rooms");
|
|
54
|
-
|
|
56
|
+
const directory = await isDirectory(roomsPath);
|
|
57
|
+
if (!directory) {
|
|
55
58
|
return;
|
|
56
59
|
}
|
|
57
|
-
const fileNames = getFileNamesInDirectory(roomsPath);
|
|
60
|
+
const fileNames = await getFileNamesInDirectory(roomsPath);
|
|
58
61
|
const xmlFileNames = fileNames.filter((fileName) => path.extname(fileName) === ".xml");
|
|
59
62
|
for (const xmlFileName of xmlFileNames) {
|
|
60
63
|
const roomFilePath = path.join(roomsPath, xmlFileName);
|
|
61
|
-
|
|
64
|
+
// eslint-disable-next-line no-await-in-loop
|
|
65
|
+
await deleteFileOrDirectory(roomFilePath);
|
|
62
66
|
}
|
|
63
67
|
}
|
|
64
|
-
function uploadMod(modTargetPath, verbose) {
|
|
65
|
-
|
|
68
|
+
async function uploadMod(modTargetPath, verbose) {
|
|
69
|
+
const hasGitHubAction = await hasIsaacSteamWorkshopUploadGitHubAction();
|
|
70
|
+
if (hasGitHubAction) {
|
|
66
71
|
// CI will automatically upload the new version to the Steam Workshop, so there is no need to
|
|
67
72
|
// open the mod uploader program.
|
|
68
73
|
return;
|
|
@@ -70,12 +75,13 @@ function uploadMod(modTargetPath, verbose) {
|
|
|
70
75
|
console.log(`The "isaac-steam-workshop-upload" action was not found in the "${chalk.green("ci.yml")}" file; assuming that we want to use the "ModUploader.exe" tool.`);
|
|
71
76
|
execExe(MOD_UPLOADER_PATH, [], verbose, modTargetPath);
|
|
72
77
|
}
|
|
73
|
-
function hasIsaacSteamWorkshopUploadGitHubAction() {
|
|
78
|
+
async function hasIsaacSteamWorkshopUploadGitHubAction() {
|
|
74
79
|
const ciYMLPath = path.join(CWD, ".github", "workflows", "ci.yml");
|
|
75
|
-
|
|
80
|
+
const file = await isFile(ciYMLPath);
|
|
81
|
+
if (!file) {
|
|
76
82
|
return false;
|
|
77
83
|
}
|
|
78
|
-
const ciYML = readFile(ciYMLPath);
|
|
84
|
+
const ciYML = await readFile(ciYMLPath);
|
|
79
85
|
const lines = ciYML.split("\n");
|
|
80
86
|
return lines.some((line) => line.match(/^\s*uses: IsaacScript\/isaac-steam-workshop-upload/) !== null);
|
|
81
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isaacscriptMod.js","sourceRoot":"","sources":["../../../src/commands/publish/isaacscriptMod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,WAAW,EACX,MAAM,EACN,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,GAAG,EACH,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,uCAAuC,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAe,EACf,OAAgB;IAEhB,MAAM,cAAc,GAAG,MAAM,uCAAuC,EAAE,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACzC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAEvD,uBAAuB,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"isaacscriptMod.js","sourceRoot":"","sources":["../../../src/commands/publish/isaacscriptMod.ts"],"names":[],"mappings":"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"}
|