isaacscript 3.18.4 → 3.18.6-dev.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.
Files changed (116) hide show
  1. package/dist/banner.js +20 -0
  2. package/dist/banner.js.map +1 -0
  3. package/dist/checkForWindowsTerminalBugs.js +1 -0
  4. package/dist/checkForWindowsTerminalBugs.js.map +1 -0
  5. package/dist/classes/Config.js +1 -0
  6. package/dist/classes/Config.js.map +1 -0
  7. package/dist/classes/ValidatedConfig.js +1 -0
  8. package/dist/classes/ValidatedConfig.js.map +1 -0
  9. package/dist/commands/check/check.js +29 -4
  10. package/dist/commands/check/check.js.map +1 -0
  11. package/dist/commands/check/check.test.js +1 -0
  12. package/dist/commands/check/check.test.js.map +1 -0
  13. package/dist/commands/copy/copy.js +16 -3
  14. package/dist/commands/copy/copy.js.map +1 -0
  15. package/dist/commands/init/checkIfProjectPathExists.js +1 -0
  16. package/dist/commands/init/checkIfProjectPathExists.js.map +1 -0
  17. package/dist/commands/init/checkModSubdirectory.js +1 -0
  18. package/dist/commands/init/checkModSubdirectory.js.map +1 -0
  19. package/dist/commands/init/checkModTargetDirectory.js +1 -0
  20. package/dist/commands/init/checkModTargetDirectory.js.map +1 -0
  21. package/dist/commands/init/createProject.js +27 -8
  22. package/dist/commands/init/createProject.js.map +1 -0
  23. package/dist/commands/init/getAuthorName.js +1 -0
  24. package/dist/commands/init/getAuthorName.js.map +1 -0
  25. package/dist/commands/init/{getModsDir.js → getModsDirectory.js} +4 -8
  26. package/dist/commands/init/getModsDirectory.js.map +1 -0
  27. package/dist/commands/init/getProjectPath.js +3 -6
  28. package/dist/commands/init/getProjectPath.js.map +1 -0
  29. package/dist/commands/init/{promptSaveSlot.js → getSaveSlot.js} +9 -5
  30. package/dist/commands/init/getSaveSlot.js.map +1 -0
  31. package/dist/commands/init/init.js +59 -16
  32. package/dist/commands/init/init.js.map +1 -0
  33. package/dist/commands/init/installVSCodeExtensions.js +1 -0
  34. package/dist/commands/init/installVSCodeExtensions.js.map +1 -0
  35. package/dist/commands/init/promptVSCode.js +1 -0
  36. package/dist/commands/init/promptVSCode.js.map +1 -0
  37. package/dist/commands/monitor/copyWatcherMod.js +1 -0
  38. package/dist/commands/monitor/copyWatcherMod.js.map +1 -0
  39. package/dist/commands/monitor/modDirectorySyncer/modDirectorySyncer.js +1 -0
  40. package/dist/commands/monitor/modDirectorySyncer/modDirectorySyncer.js.map +1 -0
  41. package/dist/commands/monitor/monitor.js +27 -65
  42. package/dist/commands/monitor/monitor.js.map +1 -0
  43. package/dist/commands/monitor/notifyGame.js +4 -3
  44. package/dist/commands/monitor/notifyGame.js.map +1 -0
  45. package/dist/commands/monitor/saveDatWriter/saveDatWriter.js +1 -0
  46. package/dist/commands/monitor/saveDatWriter/saveDatWriter.js.map +1 -0
  47. package/dist/commands/monitor/saveDatWriter/types.js +1 -0
  48. package/dist/commands/monitor/saveDatWriter/types.js.map +1 -0
  49. package/dist/commands/monitor/spawnModDirectorySyncer.js +10 -5
  50. package/dist/commands/monitor/spawnModDirectorySyncer.js.map +1 -0
  51. package/dist/commands/monitor/spawnSaveDatWriter.js +1 -0
  52. package/dist/commands/monitor/spawnSaveDatWriter.js.map +1 -0
  53. package/dist/commands/monitor/spawnTSTLWatcher.js +8 -7
  54. package/dist/commands/monitor/spawnTSTLWatcher.js.map +1 -0
  55. package/dist/commands/monitor/touchWatcherSaveDatFiles.js +1 -0
  56. package/dist/commands/monitor/touchWatcherSaveDatFiles.js.map +1 -0
  57. package/dist/commands/publish/isaacscriptMod.js +5 -4
  58. package/dist/commands/publish/isaacscriptMod.js.map +1 -0
  59. package/dist/commands/publish/publish.js +147 -23
  60. package/dist/commands/publish/publish.js.map +1 -0
  61. package/dist/commands/publish/validate.js +2 -1
  62. package/dist/commands/publish/validate.js.map +1 -0
  63. package/dist/common.js +1 -0
  64. package/dist/common.js.map +1 -0
  65. package/dist/configFile.js +9 -13
  66. package/dist/configFile.js.map +1 -0
  67. package/dist/constants.js +1 -0
  68. package/dist/constants.js.map +1 -0
  69. package/dist/customStage.js +1 -0
  70. package/dist/customStage.js.map +1 -0
  71. package/dist/dev.js +1 -0
  72. package/dist/dev.js.map +1 -0
  73. package/dist/enums/copied/DoorSlot.js +1 -0
  74. package/dist/enums/copied/DoorSlot.js.map +1 -0
  75. package/dist/enums/copied/DoorSlotFlag.js +1 -0
  76. package/dist/enums/copied/DoorSlotFlag.js.map +1 -0
  77. package/dist/enums/copied/RoomShape.js +1 -0
  78. package/dist/enums/copied/RoomShape.js.map +1 -0
  79. package/dist/exec.js +1 -0
  80. package/dist/exec.js.map +1 -0
  81. package/dist/git.js +7 -3
  82. package/dist/git.js.map +1 -0
  83. package/dist/interfaces/GitHubCLIHostsYAML.js +1 -0
  84. package/dist/interfaces/GitHubCLIHostsYAML.js.map +1 -0
  85. package/dist/interfaces/IsaacScriptTSConfig.js +1 -0
  86. package/dist/interfaces/IsaacScriptTSConfig.js.map +1 -0
  87. package/dist/interfaces/ShadersXML.js +1 -0
  88. package/dist/interfaces/ShadersXML.js.map +1 -0
  89. package/dist/interfaces/copied/CustomStageTSConfig.js +1 -0
  90. package/dist/interfaces/copied/CustomStageTSConfig.js.map +1 -0
  91. package/dist/interfaces/copied/JSONRoomsFile.js +1 -0
  92. package/dist/interfaces/copied/JSONRoomsFile.js.map +1 -0
  93. package/dist/main.js +2 -119
  94. package/dist/main.js.map +1 -0
  95. package/dist/objects/copied/doorSlotToDoorSlotFlag.js +1 -0
  96. package/dist/objects/copied/doorSlotToDoorSlotFlag.js.map +1 -0
  97. package/dist/objects/copied/roomShapeToDoorSlotCoordinates.js +1 -0
  98. package/dist/objects/copied/roomShapeToDoorSlotCoordinates.js.map +1 -0
  99. package/dist/packageManager.js +16 -16
  100. package/dist/packageManager.js.map +1 -0
  101. package/dist/parseArgs.js +62 -270
  102. package/dist/parseArgs.js.map +1 -0
  103. package/dist/prompt.js +1 -0
  104. package/dist/prompt.js.map +1 -0
  105. package/dist/tsconfig.js +1 -0
  106. package/dist/tsconfig.js.map +1 -0
  107. package/dist/utils.js +1 -0
  108. package/dist/utils.js.map +1 -0
  109. package/dist/validateMod.js +72 -0
  110. package/dist/validateMod.js.map +1 -0
  111. package/dist/validateNodeVersion.js +11 -1
  112. package/dist/validateNodeVersion.js.map +1 -0
  113. package/package.json +5 -4
  114. package/dist/commands/publish/prePublish.js +0 -105
  115. package/dist/types/Command.js +0 -4
  116. package/dist/validateInIsaacScriptProject.js +0 -29
@@ -1,55 +1,43 @@
1
+ import { Command } from "@commander-js/extra-typings";
1
2
  import chalk from "chalk";
2
- import { PACKAGE_JSON, PackageManager, deleteFileOrDirectory, dirName, fatalError, getJSONC, getPackageJSONDependencies, getPackageManagerAddCommand, getPackageManagerAddDevCommand, getPackageManagerInstallCommand, isDirectory, isLink, touch, } from "isaacscript-common-node";
3
+ import { PackageManager, deleteFileOrDirectory, fatalError, getPackageManagerInstallCommand, isDirectory, isLink, touch, } from "isaacscript-common-node";
3
4
  import path from "node:path";
4
- import { CWD, MOD_SOURCE_PATH, PACKAGE_JSON_PATH } from "../../constants.js";
5
+ import { printBanner } from "../../banner.js";
6
+ import { getConfigFromFile } from "../../configFile.js";
7
+ import { CWD, MOD_SOURCE_PATH } from "../../constants.js";
5
8
  import { prepareCustomStages } from "../../customStage.js";
6
9
  import { getAndValidateIsaacScriptMonorepoDirectory } from "../../dev.js";
7
10
  import { execShell, execShellString } from "../../exec.js";
8
11
  import { PACKAGE_MANAGER_USED_FOR_ISAACSCRIPT, getPackageManagerUsedForExistingProject, } from "../../packageManager.js";
9
12
  import { getFirstTSConfigIncludePath } from "../../tsconfig.js";
10
13
  import { getModTargetDirectoryName } from "../../utils.js";
14
+ import { validateDepsInstalled, validateInIsaacScriptProject, validatePackageJSONDependencies, } from "../../validateMod.js";
11
15
  import { copyWatcherMod } from "./copyWatcherMod.js";
12
- import * as notifyGame from "./notifyGame.js";
16
+ import { notifyGamePing } from "./notifyGame.js";
13
17
  import { spawnModDirectorySyncer } from "./spawnModDirectorySyncer.js";
14
18
  import { spawnSaveDatWriter } from "./spawnSaveDatWriter.js";
15
19
  import { spawnTSTLWatcher } from "./spawnTSTLWatcher.js";
16
20
  import { touchWatcherSaveDatFiles } from "./touchWatcherSaveDatFiles.js";
17
- const __dirname = dirName();
18
- const REQUIRED_PACKAGE_JSON_DEPENDENCIES = [
19
- "isaac-typescript-definitions",
20
- // - "isaacscript-common" is not required.
21
- ];
22
- /**
23
- * We want "typescript" and some of the other dependencies to be in "devDependencies" instead of
24
- * "dependencies" because it prevents their functions from being placed into the list of
25
- * auto-complete functions.
26
- */
27
- const REQUIRED_PACKAGE_JSON_DEV_DEPENDENCIES = [
28
- "isaacscript",
29
- // - "isaacscript-lint" is not required.
30
- // - "isaacscript-spell" is not required.
31
- // - "isaacscript-tsconfig" is not required.
32
- "typescript",
33
- "typescript-to-lua",
34
- ];
35
- export async function monitor(args, config) {
36
- const verbose = args.verbose === true;
37
- const skipProjectChecks = args.skipProjectChecks === true;
38
- const packageManager = getPackageManagerUsedForExistingProject(args);
39
- // If they specified some command-line flags, override the values found in the config file.
40
- if (args.modsDirectory !== undefined) {
41
- config.modsDirectory = args.modsDirectory; // eslint-disable-line no-param-reassign
42
- }
43
- if (args.saveSlot !== undefined) {
44
- config.saveSlot = args.saveSlot; // eslint-disable-line no-param-reassign
45
- }
46
- if (args.dev !== undefined) {
47
- config.isaacScriptCommonDev = args.dev; // eslint-disable-line no-param-reassign
48
- }
49
- // Pre-flight checks
21
+ export const monitorCommand = new Command()
22
+ .command("monitor")
23
+ .description("Monitor an IsaacScript mod project for changes.")
24
+ .helpOption("-h, --help", "Display the list of options for this command.")
25
+ .option("--skip-project-checks", 'Skip checking for "package.json" and "node_modules".', false)
26
+ .option("-v, --verbose", "Enable verbose output.", false)
27
+ .action(async (options) => {
28
+ await monitor(options);
29
+ });
30
+ const monitorOptions = monitorCommand.opts();
31
+ export async function monitor(options) {
32
+ const { skipProjectChecks, verbose } = options;
33
+ printBanner();
34
+ const packageManager = getPackageManagerUsedForExistingProject();
50
35
  if (!skipProjectChecks) {
51
- validatePackageJSONDependencies(args);
36
+ validateInIsaacScriptProject();
37
+ validatePackageJSONDependencies();
38
+ validateDepsInstalled(verbose);
52
39
  }
40
+ const config = await getConfigFromFile();
53
41
  // Read the "tsconfig.json" file.
54
42
  const tsConfigInclude = getFirstTSConfigIncludePath();
55
43
  const resolvedIncludePath = path.resolve(CWD, tsConfigInclude);
@@ -89,7 +77,7 @@ export async function monitor(args, config) {
89
77
  }
90
78
  // Also, start constantly pinging the watcher mod.
91
79
  setInterval(() => {
92
- notifyGame.ping();
80
+ notifyGamePing();
93
81
  }, 1000); // Every second
94
82
  console.log("Automatically monitoring the following for changes:");
95
83
  console.log(`1) your TypeScript code: ${chalk.green(resolvedIncludePath)}`);
@@ -99,33 +87,6 @@ export async function monitor(args, config) {
99
87
  console.log("");
100
88
  // (The process will now continue indefinitely for as long as the subprocesses exist.)
101
89
  }
102
- function validatePackageJSONDependencies(args) {
103
- const packageJSON = getJSONC(PACKAGE_JSON_PATH);
104
- validatePackageJSONNormalDependencies(packageJSON, args);
105
- validatePackageJSONDevDependencies(packageJSON, args);
106
- }
107
- function validatePackageJSONNormalDependencies(packageJSON, args) {
108
- const dependencies = getPackageJSONDependencies(packageJSON, "dependencies") ?? {};
109
- const dependenciesArray = Object.keys(dependencies);
110
- for (const dependency of REQUIRED_PACKAGE_JSON_DEPENDENCIES) {
111
- if (!dependenciesArray.includes(dependency)) {
112
- const packageManager = getPackageManagerUsedForExistingProject(args);
113
- const addCommand = getPackageManagerAddCommand(packageManager, dependency);
114
- fatalError(`${chalk.red(`IsaacScript projects require a "dependencies" of "${dependency}" in the "${PACKAGE_JSON}" file. You can add it with the following command:`)} ${chalk.green(addCommand)}`);
115
- }
116
- }
117
- }
118
- function validatePackageJSONDevDependencies(packageJSON, args) {
119
- const devDependencies = getPackageJSONDependencies(packageJSON, "devDependencies") ?? {};
120
- const devDependenciesArray = Object.keys(devDependencies);
121
- for (const devDependency of REQUIRED_PACKAGE_JSON_DEV_DEPENDENCIES) {
122
- if (!devDependenciesArray.includes(devDependency)) {
123
- const packageManager = getPackageManagerUsedForExistingProject(args);
124
- const addDevCommand = getPackageManagerAddDevCommand(packageManager, devDependency);
125
- fatalError(`${chalk.red(`IsaacScript projects require a "devDependencies" of "${devDependency}" in the "${PACKAGE_JSON}" file. You can add it with the following command:`)} ${chalk.green(addDevCommand)}`);
126
- }
127
- }
128
- }
129
90
  function linkDevelopmentIsaacScriptCommon(projectPath, packageManager, verbose) {
130
91
  if (packageManager !== PACKAGE_MANAGER_USED_FOR_ISAACSCRIPT) {
131
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}`);
@@ -152,3 +113,4 @@ function warnIfIsaacScriptCommonLinkExists(projectPath, packageManager) {
152
113
  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: ${PACKAGE_MANAGER_USED_FOR_ISAACSCRIPT} unlink isaacscript-common`);
153
114
  }
154
115
  }
116
+ //# sourceMappingURL=monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../../../../src/commands/monitor/monitor.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import chalk from "chalk";
2
2
  import { COMPILATION_SUCCESSFUL_MESSAGE } from "../../constants.js";
3
3
  import { getTime } from "../../utils.js";
4
4
  import { sendMsgToSaveDatWriter } from "./spawnSaveDatWriter.js";
5
- export function msg(data) {
5
+ export function notifyGameMsg(data) {
6
6
  const formattedData = data
7
7
  .replaceAll("/\r\n", "\n") // Replace Windows newlines with Unix newlines
8
8
  .trim(); // Trim whitespace
@@ -36,15 +36,16 @@ function printMsgToStandardOut(data) {
36
36
  }
37
37
  console.log(coloredData);
38
38
  }
39
- export function command(data) {
39
+ export function notifyGameCommand(data) {
40
40
  sendMsgToSaveDatWriter({
41
41
  type: "command",
42
42
  data,
43
43
  });
44
44
  }
45
- export function ping() {
45
+ export function notifyGamePing() {
46
46
  sendMsgToSaveDatWriter({
47
47
  type: "ping",
48
48
  data: "",
49
49
  });
50
50
  }
51
+ //# sourceMappingURL=notifyGame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifyGame.js","sourceRoot":"","sources":["../../../../../src/commands/monitor/notifyGame.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,aAAa,GAAG,IAAI;SACvB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,8CAA8C;SACxE,IAAI,EAAE,CAAC,CAAC,kBAAkB;IAE7B,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,WAAW,KAAK,EAAE,EAAE;YACtB,SAAS;SACV;QAED,+DAA+D;QAC/D,IAAI,WAAW,KAAK,4BAA4B,EAAE;YAChD,OAAO;SACR;QAED,qBAAqB;QACrB,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC;QAEtD,sBAAsB,CAAC;YACrB,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;QAEH,4FAA4F;QAC5F,0FAA0F;QAC1F,qBAAqB,CAAC,aAAa,CAAC,CAAC;KACtC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,IAAI,WAAW,GAAG,IAAI,CAAC;IAEvB,IAAI,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE;QACjD,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACjC;SAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;QACxC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC/B;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,sBAAsB,CAAC;QACrB,IAAI,EAAE,SAAS;QACf,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,sBAAsB,CAAC;QACrB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE;KACT,CAAC,CAAC;AACL,CAAC"}
@@ -104,3 +104,4 @@ function send(msg) {
104
104
  process.send(msg);
105
105
  }
106
106
  }
107
+ //# sourceMappingURL=saveDatWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saveDatWriter.js","sourceRoot":"","sources":["../../../../../../src/commands/monitor/saveDatWriter/saveDatWriter.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/commands/monitor/saveDatWriter/types.ts"],"names":[],"mappings":""}
@@ -3,7 +3,7 @@ import { fork } from "node:child_process";
3
3
  import path from "node:path";
4
4
  import { FILE_SYNCED_MESSAGE, MAIN_LUA, MOD_SOURCE_PATH, } from "../../constants.js";
5
5
  import { getModTargetDirectoryName } from "../../utils.js";
6
- import * as notifyGame from "./notifyGame.js";
6
+ import { notifyGameCommand, notifyGameMsg } from "./notifyGame.js";
7
7
  const __dirname = dirName();
8
8
  const SUBPROCESS_NAME = "modDirectorySyncer";
9
9
  const SUBPROCESS_DESCRIPTION = "Directory syncer";
@@ -13,13 +13,17 @@ export function spawnModDirectorySyncer(config) {
13
13
  const modTargetPath = path.join(config.modsDirectory, modTargetName);
14
14
  const directorySyncer = fork(processPath, [MOD_SOURCE_PATH, modTargetPath]);
15
15
  directorySyncer.on("message", (msg) => {
16
- notifyGame.msg(msg);
16
+ // It is possible for a sub-process to send a non-string message.
17
+ if (typeof msg !== "string") {
18
+ fatalError(`Received a non-string message from the "${SUBPROCESS_NAME}" subprocess:`, msg);
19
+ }
20
+ notifyGameMsg(msg);
17
21
  // If the "main.lua" file was successfully copied over, we also have to tell isaacscript-watcher
18
22
  // to reload the mod. Look for something like: "File synced: \main.lua"
19
23
  if (msg === `${FILE_SYNCED_MESSAGE} ${path.sep}${MAIN_LUA}`) {
20
- notifyGame.command(`luamod ${modTargetName}`);
21
- notifyGame.command("restart");
22
- notifyGame.msg("Reloaded the mod.");
24
+ notifyGameCommand(`luamod ${modTargetName}`);
25
+ notifyGameCommand("restart");
26
+ notifyGameMsg("Reloaded the mod.");
23
27
  }
24
28
  });
25
29
  directorySyncer.on("close", (code) => {
@@ -29,3 +33,4 @@ export function spawnModDirectorySyncer(config) {
29
33
  fatalError(`Error: ${SUBPROCESS_DESCRIPTION} subprocess exited with code: ${code}`);
30
34
  });
31
35
  }
36
+ //# sourceMappingURL=spawnModDirectorySyncer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawnModDirectorySyncer.js","sourceRoot":"","sources":["../../../../../src/commands/monitor/spawnModDirectorySyncer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,QAAQ,EACR,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC;AAE5B,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAC7C,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAElD,MAAM,UAAU,uBAAuB,CAAC,MAAuB;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5E,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE;QAC5C,iEAAiE;QACjE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,UAAU,CACR,2CAA2C,eAAe,eAAe,EACzE,GAAG,CACJ,CAAC;SACH;QAED,aAAa,CAAC,GAAG,CAAC,CAAC;QAEnB,gGAAgG;QAChG,uEAAuE;QACvE,IAAI,GAAG,KAAK,GAAG,mBAAmB,IAAI,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,EAAE;YAC3D,iBAAiB,CAAC,UAAU,aAAa,EAAE,CAAC,CAAC;YAC7C,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC7B,aAAa,CAAC,mBAAmB,CAAC,CAAC;SACpC;IACH,CAAC,CAAC,CAAC;IAEH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;QAClD,UAAU,CACR,UAAU,sBAAsB,iCAAiC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAmB,EAAE,EAAE;QACjD,UAAU,CACR,UAAU,sBAAsB,iCAAiC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -27,3 +27,4 @@ export function sendMsgToSaveDatWriter(msg) {
27
27
  saveDatWriter.send(msg);
28
28
  }
29
29
  }
30
+ //# sourceMappingURL=spawnSaveDatWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawnSaveDatWriter.js","sourceRoot":"","sources":["../../../../../src/commands/monitor/spawnSaveDatWriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC;AAC5B,MAAM,eAAe,GAAG,eAAe,CAAC;AACxC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAElD,IAAI,aAAuC,CAAC;AAE5C,MAAM,UAAU,kBAAkB,CAAC,MAAuB;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,OAAO,MAAM,CAAC,QAAQ,MAAM,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;IAEnE,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE;QAC/C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;KACvC,CAAC,CAAC;IAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;QAChD,UAAU,CACR,UAAU,sBAAsB,iCAAiC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAmB,EAAE,EAAE;QAC/C,UAAU,CACR,UAAU,sBAAsB,iCAAiC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAmB;IACxD,IAAI,aAAa,KAAK,SAAS,EAAE;QAC/B,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACzB;AACH,CAAC"}
@@ -2,7 +2,7 @@ import { appendFile, fatalError, getPackageManagerExecCommand, isFile, } from "i
2
2
  import { spawn } from "node:child_process";
3
3
  import path from "node:path";
4
4
  import { COMPILATION_SUCCESSFUL_MESSAGE, PROJECT_NAME, } from "../../constants.js";
5
- import * as notifyGame from "./notifyGame.js";
5
+ import { notifyGameMsg } from "./notifyGame.js";
6
6
  let compilationStartTime = new Date();
7
7
  export function spawnTSTLWatcher(config, cwd, packageManager, modCWD) {
8
8
  const processDescription = "tstl";
@@ -16,24 +16,24 @@ export function spawnTSTLWatcher(config, cwd, packageManager, modCWD) {
16
16
  const suffix = getMonitorMessageSuffix(config, cwd);
17
17
  if (msg.includes("Starting compilation in watch mode...")) {
18
18
  const newMsg1 = `${PROJECT_NAME} is now watching for future changes${suffix}.`;
19
- notifyGame.msg(newMsg1);
19
+ notifyGameMsg(newMsg1);
20
20
  const target = suffix.includes("isaacscript-common")
21
21
  ? '"isaacscript-common"'
22
22
  : "the mod";
23
23
  const newMsg2 = `Compiling ${target} for the first time...`;
24
- notifyGame.msg(newMsg2);
24
+ notifyGameMsg(newMsg2);
25
25
  }
26
26
  else if (msg.includes("File change detected. Starting incremental compilation...")) {
27
27
  compilationStartTime = new Date();
28
28
  const newMsg = `TypeScript change detected${suffix}. Compiling...`;
29
- notifyGame.msg(newMsg);
29
+ notifyGameMsg(newMsg);
30
30
  }
31
31
  else if (msg.includes("Found 0 errors. Watching for file changes.")) {
32
32
  const compilationFinishTime = new Date();
33
33
  const elapsedTimeMilliseconds = compilationFinishTime.getTime() - compilationStartTime.getTime();
34
34
  const elapsedTimeSeconds = elapsedTimeMilliseconds / 1000;
35
35
  const newMsg = `${COMPILATION_SUCCESSFUL_MESSAGE} (in ${elapsedTimeSeconds} seconds)${suffix}`;
36
- notifyGame.msg(newMsg);
36
+ notifyGameMsg(newMsg);
37
37
  // Successful compilation of "isaacscript-common" will not trigger a recompilation in the mod.
38
38
  // Thus, we must arbitrarily change a file to trigger a mod recompilation.
39
39
  if (modCWD !== undefined) {
@@ -44,7 +44,7 @@ export function spawnTSTLWatcher(config, cwd, packageManager, modCWD) {
44
44
  }
45
45
  }
46
46
  else {
47
- notifyGame.msg(msg);
47
+ notifyGameMsg(msg);
48
48
  }
49
49
  });
50
50
  tstl.stderr.on("data", (data) => {
@@ -53,7 +53,7 @@ export function spawnTSTLWatcher(config, cwd, packageManager, modCWD) {
53
53
  // Hide the line that appears when you cancel the program with `Ctrl + c`.
54
54
  return;
55
55
  }
56
- notifyGame.msg(`Error: ${msg}`);
56
+ notifyGameMsg(`Error: ${msg}`);
57
57
  });
58
58
  tstl.on("close", (code) => {
59
59
  fatalError(`Error: ${processDescription} subprocess exited with code: ${code}`);
@@ -72,3 +72,4 @@ function getMonitorMessageSuffix(config, cwd) {
72
72
  ? ' (in "isaacscript-common")'
73
73
  : " (in this mod)";
74
74
  }
75
+ //# sourceMappingURL=spawnTSTLWatcher.js.map
@@ -0,0 +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,yBAAyB,CAAC;AACjC,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,IAAc,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEpD,IAAI,GAAG,CAAC,QAAQ,CAAC,uCAAuC,CAAC,EAAE;YACzD,MAAM,OAAO,GAAG,GAAG,YAAY,sCAAsC,MAAM,GAAG,CAAC;YAC/E,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBAClD,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,OAAO,GAAG,aAAa,MAAM,wBAAwB,CAAC;YAC5D,aAAa,CAAC,OAAO,CAAC,CAAC;SACxB;aAAM,IACL,GAAG,CAAC,QAAQ,CAAC,2DAA2D,CAAC,EACzE;YACA,oBAAoB,GAAG,IAAI,IAAI,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,6BAA6B,MAAM,gBAAgB,CAAC;YACnE,aAAa,CAAC,MAAM,CAAC,CAAC;SACvB;aAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,4CAA4C,CAAC,EAAE;YACrE,MAAM,qBAAqB,GAAG,IAAI,IAAI,EAAE,CAAC;YACzC,MAAM,uBAAuB,GAC3B,qBAAqB,CAAC,OAAO,EAAE,GAAG,oBAAoB,CAAC,OAAO,EAAE,CAAC;YACnE,MAAM,kBAAkB,GAAG,uBAAuB,GAAG,IAAI,CAAC;YAC1D,MAAM,MAAM,GAAG,GAAG,8BAA8B,QAAQ,kBAAkB,YAAY,MAAM,EAAE,CAAC;YAC/F,aAAa,CAAC,MAAM,CAAC,CAAC;YAEtB,8FAA8F;YAC9F,0EAA0E;YAC1E,IAAI,MAAM,KAAK,SAAS,EAAE;gBACxB,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;gBACrE,IAAI,MAAM,CAAC,iBAAiB,CAAC,EAAE;oBAC7B,UAAU,CACR,iBAAiB,EACjB,kDAAkD,CACnD,CAAC;iBACH;aACF;SACF;aAAM;YACL,aAAa,CAAC,GAAG,CAAC,CAAC;SACpB;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAc,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,GAAG,KAAK,IAAI,EAAE;YAChB,0EAA0E;YAC1E,OAAO;SACR;QACD,aAAa,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACxB,UAAU,CACR,UAAU,kBAAkB,iCAAiC,IAAI,EAAE,CACpE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACvB,UAAU,CACR,UAAU,kBAAkB,iCAAiC,IAAI,EAAE,CACpE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc,EAAE,GAAW;IAC1D,IACE,MAAM,CAAC,oBAAoB,KAAK,KAAK;QACrC,MAAM,CAAC,oBAAoB,KAAK,SAAS,EACzC;QACA,OAAO,EAAE,CAAC;KACX;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,QAAQ,KAAK,oBAAoB;QACtC,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC"}
@@ -13,3 +13,4 @@ export function touchWatcherSaveDatFiles(config) {
13
13
  touch(saveDatPath);
14
14
  }
15
15
  }
16
+ //# sourceMappingURL=touchWatcherSaveDatFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"touchWatcherSaveDatFiles.js","sourceRoot":"","sources":["../../../../../src/commands/monitor/touchWatcherSaveDatFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,MAAM,EACN,aAAa,EACb,KAAK,GACN,MAAM,yBAAyB,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,wBAAwB,CAAC,MAAuB;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACrE,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE;QACpC,aAAa,CAAC,kBAAkB,CAAC,CAAC;KACnC;IACD,MAAM,eAAe,GAAG,OAAO,MAAM,CAAC,QAAQ,MAAM,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;QACxB,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AACH,CAAC"}
@@ -1,16 +1,16 @@
1
1
  import chalk from "chalk";
2
2
  import { deleteFileOrDirectory, getFileNamesInDirectory, getPackageJSONVersion, isDirectory, isFile, readFile, writeFile, } from "isaacscript-common-node";
3
3
  import path from "node:path";
4
+ import { getConfigFromFile } from "../../configFile.js";
4
5
  import { CONSTANTS_TS_PATH, CWD, MOD_SOURCE_PATH, MOD_UPLOADER_PATH, PUBLISH_POST_COPY_PY_PATH, PUBLISH_PRE_COPY_PY_PATH, } from "../../constants.js";
5
6
  import { execExe, execShell, execShellString } from "../../exec.js";
6
7
  import { getReleaseGitCommitMessage, gitCommitAllAndPush } from "../../git.js";
7
8
  import { getPackageManagerUsedForExistingProject } from "../../packageManager.js";
8
9
  import { getModTargetDirectoryName } from "../../utils.js";
9
10
  import { compileAndCopy } from "../copy/copy.js";
10
- export async function publishIsaacScriptMod(args, config) {
11
- const dryRun = args.dryRun === true;
12
- const verbose = args.verbose === true;
13
- const packageManager = getPackageManagerUsedForExistingProject(args);
11
+ export async function publishIsaacScriptMod(dryRun, verbose) {
12
+ const packageManager = getPackageManagerUsedForExistingProject();
13
+ const config = await getConfigFromFile();
14
14
  const modTargetDirectoryName = getModTargetDirectoryName(config);
15
15
  const modTargetPath = path.join(config.modsDirectory, modTargetDirectoryName);
16
16
  const version = getPackageJSONVersion(undefined);
@@ -88,3 +88,4 @@ function hasIsaacSteamWorkshopUploadGitHubAction() {
88
88
  const lines = ciYML.split("\n");
89
89
  return lines.some((line) => line.match(/^\s*uses: IsaacScript\/isaac-steam-workshop-upload/) !== null);
90
90
  }
91
+ //# sourceMappingURL=isaacscriptMod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isaacscriptMod.js","sourceRoot":"","sources":["../../../../../src/commands/publish/isaacscriptMod.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,152 @@
1
- import { getPackageJSONField, getPackageJSONVersion, } from "isaacscript-common-node";
2
- import { execShellString } from "../../exec.js";
1
+ import { Command } from "@commander-js/extra-typings";
2
+ import { PACKAGE_JSON, fatalError, getPackageJSONField, getPackageJSONVersion, getPackageManagerInstallCommand, isFile, readFile, updatePackageJSON, writeFile, } from "isaacscript-common-node";
3
+ import { CONSTANTS_TS_PATH, METADATA_XML_PATH, VERSION_TXT_PATH, } from "../../constants.js";
4
+ import { execShell, execShellString } from "../../exec.js";
3
5
  import { getReleaseGitCommitMessage, gitCommitAllAndPush } from "../../git.js";
4
- import { getInputString } from "../../prompt.js";
6
+ import { getPackageManagerUsedForExistingProject } from "../../packageManager.js";
5
7
  import { publishIsaacScriptMod } from "./isaacscriptMod.js";
6
- import { prePublish } from "./prePublish.js";
7
8
  import { validate } from "./validate.js";
8
- export async function publish(args, config, typeScript) {
9
- const { setVersion } = args;
10
- const verbose = args.verbose === true;
9
+ export const publishCommand = new Command()
10
+ .command("publish")
11
+ .description("Bump the version & release on the Steam Workshop.")
12
+ .helpOption("-h, --help", "Display the list of options for this command.")
13
+ .option("--major", "Perform a major version bump.", false)
14
+ .option("--minor", "Perform a minor version bump.", false)
15
+ .option("--patch", "Perform a patch version bump.", false)
16
+ .option("--skip-increment", "Skip incrementing the version number.", false)
17
+ .option("--set-version <version>", "Specify the version number instead of incrementing it.")
18
+ .option("--dry-run", "Skip committing/uploading & perform a Git reset afterward.", false)
19
+ .option("--skip-update", "Skip updating the npm dependencies.", false)
20
+ .option("--skip-lint", "Skip linting before publishing.", false)
21
+ .option("-v, --verbose", "Enable verbose output.", false)
22
+ .action(async (options) => {
23
+ await publish(options, false);
24
+ });
25
+ /**
26
+ * Even though all of the options are identical, we make a "-ts" version of the command to keep the
27
+ * symmetry with the "init" and "init-ts" commands.
28
+ */
29
+ export const publishTSCommand = new Command()
30
+ .command("publish-ts")
31
+ .description("Bump the version & publish the package on npm.")
32
+ .helpOption("-h, --help", "Display the list of options for this command.")
33
+ .option("--major", "Perform a major version bump.", false)
34
+ .option("--minor", "Perform a minor version bump.", false)
35
+ .option("--patch", "Perform a patch version bump.", false)
36
+ .option("--skip-increment", "Skip incrementing the version number.", false)
37
+ .option("--set-version <version>", "Specify the version number instead of incrementing it.")
38
+ .option("--dry-run", "Skip committing/uploading & perform a Git reset afterward.", false)
39
+ .option("--skip-update", "Skip updating the npm dependencies.", false)
40
+ .option("--skip-lint", "Skip linting before publishing.", false)
41
+ .option("-v, --verbose", "Enable verbose output.", false)
42
+ .action(async (options) => {
43
+ await publish(options, true);
44
+ });
45
+ const publishOptions = publishCommand.opts();
46
+ export async function publish(options, typeScript) {
47
+ const { dryRun, setVersion, verbose } = options;
11
48
  validate(typeScript, setVersion, verbose);
12
- await prePublish(args, typeScript);
13
- await (typeScript
14
- ? publishTypeScriptProject(args)
15
- : publishIsaacScriptMod(args, config));
16
- }
17
- async function publishTypeScriptProject(args) {
18
- const dryRun = args.dryRun === true;
19
- const verbose = args.verbose === true;
49
+ await prePublish(options, typeScript);
50
+ if (typeScript) {
51
+ publishTypeScriptProject(dryRun, verbose);
52
+ }
53
+ else {
54
+ await publishIsaacScriptMod(dryRun, verbose);
55
+ }
56
+ }
57
+ /**
58
+ * Before uploading the project, we want to update dependencies, increment the version, and perform
59
+ * some other steps.
60
+ */
61
+ export async function prePublish(options, typeScript) {
62
+ const { dryRun, skipLint, skipUpdate, verbose } = options;
63
+ const packageManager = getPackageManagerUsedForExistingProject();
64
+ execShellString("git pull --rebase");
65
+ execShellString("git push");
66
+ await updateDependencies(skipUpdate, dryRun, packageManager, verbose);
67
+ incrementVersion(options, typeScript);
68
+ tryRunNPMScript("build", verbose);
69
+ if (!skipLint) {
70
+ tryRunNPMScript("lint", verbose);
71
+ }
72
+ }
73
+ async function updateDependencies(skipUpdate, dryRun, packageManager, verbose) {
74
+ if (skipUpdate) {
75
+ return;
76
+ }
77
+ console.log(`Updating dependencies in the "${PACKAGE_JSON}" file...`);
78
+ const hasNewDependencies = await updatePackageJSON(undefined);
79
+ if (hasNewDependencies) {
80
+ const command = getPackageManagerInstallCommand(packageManager);
81
+ execShellString(command, verbose);
82
+ if (!dryRun) {
83
+ gitCommitAllAndPush("chore: update dependencies", verbose);
84
+ }
85
+ }
86
+ }
87
+ function incrementVersion(options, typeScript) {
88
+ const { skipIncrement, verbose } = options;
89
+ if (skipIncrement) {
90
+ return;
91
+ }
92
+ const versionCommandArgument = getVersionCommandArgument(options);
93
+ // We always use `npm` here to avoid differences with the version command between package
94
+ // managers. The "--no-git-tag-version" flag will prevent npm from both making a commit and adding
95
+ // a tag.
96
+ execShell("npm", ["version", versionCommandArgument, "--no-git-tag-version"], verbose);
97
+ if (!typeScript) {
98
+ const version = getPackageJSONVersion(undefined);
99
+ writeVersionToConstantsTS(version);
100
+ writeVersionToMetadataXML(version);
101
+ writeVersionToVersionTXT(version);
102
+ }
103
+ }
104
+ function getVersionCommandArgument(options) {
105
+ if (options.setVersion !== undefined) {
106
+ // They want to use a specific version, which was manually specified.
107
+ return options.setVersion;
108
+ }
109
+ if (options.major) {
110
+ return "major";
111
+ }
112
+ if (options.minor) {
113
+ return "minor";
114
+ }
115
+ if (options.patch) {
116
+ return "patch";
117
+ }
118
+ // Default to a patch version.
119
+ return "patch";
120
+ }
121
+ function writeVersionToConstantsTS(version) {
122
+ if (!isFile(CONSTANTS_TS_PATH)) {
123
+ console.log('Skipping writing the version to "constants.ts" since it was not found.');
124
+ return;
125
+ }
126
+ const constantsTS = readFile(CONSTANTS_TS_PATH);
127
+ const newConstantsTS = constantsTS.replace(/const VERSION = ".+"/, `const VERSION = "${version}"`);
128
+ writeFile(CONSTANTS_TS_PATH, newConstantsTS);
129
+ console.log(`The version of ${version} was written to: ${CONSTANTS_TS_PATH}`);
130
+ }
131
+ function writeVersionToMetadataXML(version) {
132
+ const metadataXML = readFile(METADATA_XML_PATH);
133
+ const newMetadataXML = metadataXML.replace(/<version>.+<\/version>/, `<version>${version}</version>`);
134
+ writeFile(METADATA_XML_PATH, newMetadataXML);
135
+ console.log(`The version of ${version} was written to: ${METADATA_XML_PATH}`);
136
+ }
137
+ function writeVersionToVersionTXT(version) {
138
+ writeFile(VERSION_TXT_PATH, version);
139
+ console.log(`The version of ${version} was written to: ${VERSION_TXT_PATH}`);
140
+ }
141
+ function tryRunNPMScript(scriptName, verbose) {
142
+ console.log(`Running: ${scriptName}`);
143
+ const { exitStatus, stdout } = execShell("npm", ["run", scriptName], verbose, true);
144
+ if (exitStatus !== 0) {
145
+ execShellString("git reset --hard", verbose); // Revert the version changes.
146
+ fatalError(`Failed to run "${scriptName}":`, stdout);
147
+ }
148
+ }
149
+ function publishTypeScriptProject(dryRun, verbose) {
20
150
  const projectName = getPackageJSONField(undefined, "name");
21
151
  const version = getPackageJSONVersion(undefined);
22
152
  if (dryRun) {
@@ -25,15 +155,9 @@ async function publishTypeScriptProject(args) {
25
155
  else {
26
156
  const releaseGitCommitMessage = getReleaseGitCommitMessage(version);
27
157
  gitCommitAllAndPush(releaseGitCommitMessage, verbose);
28
- let command = "npm publish --access=public";
29
- if (args.otp === true) {
30
- const otpCode = await getInputString("Type in the two-factor OTP code tied to the npm account. (Just press enter if you do not have 2FA enabled on your npm account.)");
31
- if (otpCode !== "") {
32
- command += ` --otp=${otpCode}`;
33
- }
34
- }
35
- execShellString(command, verbose);
158
+ execShellString("npm publish --access=public", verbose);
36
159
  }
37
160
  const dryRunSuffix = dryRun ? " (dry-run)" : "";
38
161
  console.log(`Published ${projectName} version ${version} successfully${dryRunSuffix}.`);
39
162
  }
163
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../../src/commands/publish/publish.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export function validate(typeScript, setVersion, verbose) {
13
13
  fatalError(`Failed to find the "${PACKAGE_JSON}" file in the current working directory.`);
14
14
  }
15
15
  if (setVersion !== undefined && /^\d+\.\d+\.\d+$/.exec(setVersion) === null) {
16
- fatalError(chalk.red(`The version of "${setVersion}" does not match the semantic versioning format.`));
16
+ fatalError(chalk.red(`The version of "${setVersion}" does not match the semantic versioning format of: #.#.#`));
17
17
  }
18
18
  if (typeScript) {
19
19
  validateTypeScriptProject();
@@ -44,3 +44,4 @@ function validateIsaacScriptOtherCopiesNotRunning(verbose) {
44
44
  fatalError(chalk.red(`Other copies of ${PROJECT_NAME} appear to be running. You must close those copies before publishing.`));
45
45
  }
46
46
  }
47
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../../src/commands/publish/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,UAAU,QAAQ,CACtB,UAAmB,EACnB,UAA8B,EAC9B,OAAgB;IAEhB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;QACzB,UAAU,CACR,0FAA0F,CAC3F,CAAC;KACH;IAED,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE;QAC9B,UAAU,CACR,2KAA2K,CAC5K,CAAC;KACH;IAED,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;QACzB,UAAU,CACR,uBAAuB,YAAY,0CAA0C,CAC9E,CAAC;KACH;IAED,IAAI,UAAU,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;QAC3E,UAAU,CACR,KAAK,CAAC,GAAG,CACP,mBAAmB,UAAU,2DAA2D,CACzF,CACF,CAAC;KACH;IAED,IAAI,UAAU,EAAE;QACd,yBAAyB,EAAE,CAAC;KAC7B;SAAM;QACL,sBAAsB,CAAC,OAAO,CAAC,CAAC;KACjC;AACH,CAAC;AAED,SAAS,yBAAyB;IAChC,IAAI,CAAC,eAAe,EAAE,EAAE;QACtB,UAAU,CACR,8EAA8E,CAC/E,CAAC;KACH;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAgB;IAC9C,wCAAwC,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,wCAAwC,CAAC,OAAgB;IAChE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QAChC,OAAO;KACR;IAED,4FAA4F;IAC5F,MAAM,MAAM,GAAG,cAAc,CAC3B,uGAAuG,EACvG,OAAO,CACR,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,+BAA+B,GAAG,KAAK,CAAC,MAAM,CAClD,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5B,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CACxC,CAAC;IACF,IAAI,+BAA+B,CAAC,MAAM,GAAG,CAAC,EAAE;QAC9C,UAAU,CACR,KAAK,CAAC,GAAG,CACP,mBAAmB,YAAY,uEAAuE,CACvG,CACF,CAAC;KACH;AACH,CAAC"}
package/dist/common.js CHANGED
@@ -63,3 +63,4 @@ function addFlag(flags, ...flagsToAdd) {
63
63
  }
64
64
  return flags;
65
65
  }
66
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/common.ts"],"names":[],"mappings":"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"}