isaacscript 2.0.14-dev.1 → 2.0.14-dev.10

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 (131) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +4 -6
  3. package/file-templates/dynamic/README.md +3 -0
  4. package/file-templates/dynamic/gitignore +144 -0
  5. package/file-templates/dynamic/main.ts +19 -0
  6. package/file-templates/dynamic/metadata.vdf +6 -0
  7. package/file-templates/dynamic/metadata.xml +8 -0
  8. package/file-templates/dynamic/package.json +20 -0
  9. package/file-templates/static/.cspell.json.template +21 -0
  10. package/file-templates/static/.env_template +2 -0
  11. package/file-templates/static/.eslintrc.js.template +24 -0
  12. package/file-templates/static/.gitattributes +9 -0
  13. package/file-templates/static/.github/workflows/ci.yml +54 -0
  14. package/file-templates/static/.prettierignore +14 -0
  15. package/file-templates/static/.prettierrc.js +42 -0
  16. package/file-templates/static/.vscode/extensions.json +10 -0
  17. package/file-templates/static/.vscode/settings.json +79 -0
  18. package/file-templates/static/LICENSE +674 -0
  19. package/file-templates/static/build.sh +15 -0
  20. package/file-templates/static/check-orphaned-words.sh +58 -0
  21. package/file-templates/static/lint.sh +39 -0
  22. package/file-templates/static/nuke.sh +18 -0
  23. package/file-templates/static/plugins/addCrashDebugStatements.ts +40 -0
  24. package/file-templates/static/plugins/addIsaacScriptCommentHeader.ts +37 -0
  25. package/file-templates/static/plugins/noExtendedEnums.ts +69 -0
  26. package/file-templates/static/publish.sh +10 -0
  27. package/file-templates/static/run.sh +10 -0
  28. package/file-templates/static/src/bundleEntry.ts +10 -0
  29. package/file-templates/static/tsconfig.eslint.json +11 -0
  30. package/file-templates/static/tsconfig.json +33 -0
  31. package/file-templates/static/update.sh +21 -0
  32. package/file-templates/static-alt/.prettierignore-base +5 -0
  33. package/file-templates/static-alt/.prettierrc-base.js +30 -0
  34. package/file-templates/static-alt/.vscode/extensions-typescript.json +9 -0
  35. package/file-templates/static-alt/.vscode/settings-typescript.json +66 -0
  36. package/file-templates/static-alt/check-file-updates.sh +67 -0
  37. package/isaacscript-watcher/.luacheckrc +96 -0
  38. package/isaacscript-watcher/README.md +8 -0
  39. package/isaacscript-watcher/main.lua +270 -0
  40. package/isaacscript-watcher/metadata.xml +7 -0
  41. package/isaacscript-watcher/resources/gfx/logo.anm2 +27 -0
  42. package/isaacscript-watcher/resources/gfx/logo.png +0 -0
  43. package/package.json +39 -2
  44. package/src/checkForWindowsTerminalBugs.js +75 -79
  45. package/src/checkForWindowsTerminalBugs.js.map +1 -1
  46. package/src/commands/copy/copy.js +32 -32
  47. package/src/commands/init/checkIfProjectPathExists.js +27 -29
  48. package/src/commands/init/checkIfProjectPathExists.js.map +1 -1
  49. package/src/commands/init/checkModSubdirectory.js +15 -15
  50. package/src/commands/init/checkModTargetDirectory.js +30 -32
  51. package/src/commands/init/checkModTargetDirectory.js.map +1 -1
  52. package/src/commands/init/createMod.js +142 -137
  53. package/src/commands/init/createMod.js.map +1 -1
  54. package/src/commands/init/getModsDir.js +55 -57
  55. package/src/commands/init/getModsDir.js.map +1 -1
  56. package/src/commands/init/getProjectPath.js +88 -92
  57. package/src/commands/init/getProjectPath.js.map +1 -1
  58. package/src/commands/init/git.js +150 -152
  59. package/src/commands/init/git.js.map +1 -1
  60. package/src/commands/init/init.js +65 -69
  61. package/src/commands/init/init.js.map +1 -1
  62. package/src/commands/init/installVSCodeExtensions.js +32 -32
  63. package/src/commands/init/promptSaveSlot.js +21 -24
  64. package/src/commands/init/promptSaveSlot.js.map +1 -1
  65. package/src/commands/init/promptVSCode.js +24 -26
  66. package/src/commands/init/promptVSCode.js.map +1 -1
  67. package/src/commands/monitor/constants.js +4 -4
  68. package/src/commands/monitor/copyWatcherMod.js +38 -38
  69. package/src/commands/monitor/modDirectorySyncer/modDirectorySyncer.js +49 -49
  70. package/src/commands/monitor/monitor.js +146 -146
  71. package/src/commands/monitor/notifyGame.js +57 -57
  72. package/src/commands/monitor/saveDatWriter/saveDatWriter.js +116 -116
  73. package/src/commands/monitor/saveDatWriter/types.js +2 -2
  74. package/src/commands/monitor/spawnSaveDatWriter.js +34 -34
  75. package/src/commands/monitor/touchWatcherSaveDatFiles.js +20 -20
  76. package/src/commands/publish/publish.js +220 -220
  77. package/src/configFile.js +63 -65
  78. package/src/configFile.js.map +1 -1
  79. package/src/constants.js +59 -59
  80. package/src/constants.js.map +1 -1
  81. package/src/exec.js +95 -95
  82. package/src/file.js +193 -193
  83. package/src/main.js +117 -121
  84. package/src/main.js.map +1 -1
  85. package/src/parseArgs.js +106 -106
  86. package/src/prompt.js +86 -92
  87. package/src/prompt.js.map +1 -1
  88. package/src/types/Command.js +4 -4
  89. package/src/types/Config.js +12 -12
  90. package/src/types/GitHubCLIHostsYAML.js +2 -2
  91. package/src/utils.js +81 -81
  92. package/src/validateInIsaacScriptProject.js +26 -26
  93. package/src/validateNodeVersion.js +24 -24
  94. package/src/validateOS.js +16 -16
  95. package/src/checkForWindowsTerminalBugs.d.ts +0 -5
  96. package/src/commands/copy/copy.d.ts +0 -3
  97. package/src/commands/init/checkIfProjectPathExists.d.ts +0 -1
  98. package/src/commands/init/checkModSubdirectory.d.ts +0 -1
  99. package/src/commands/init/checkModTargetDirectory.d.ts +0 -1
  100. package/src/commands/init/createMod.d.ts +0 -1
  101. package/src/commands/init/getModsDir.d.ts +0 -1
  102. package/src/commands/init/getProjectPath.d.ts +0 -1
  103. package/src/commands/init/git.d.ts +0 -4
  104. package/src/commands/init/init.d.ts +0 -1
  105. package/src/commands/init/installVSCodeExtensions.d.ts +0 -1
  106. package/src/commands/init/promptSaveSlot.d.ts +0 -1
  107. package/src/commands/init/promptVSCode.d.ts +0 -1
  108. package/src/commands/monitor/constants.d.ts +0 -1
  109. package/src/commands/monitor/copyWatcherMod.d.ts +0 -2
  110. package/src/commands/monitor/modDirectorySyncer/modDirectorySyncer.d.ts +0 -1
  111. package/src/commands/monitor/monitor.d.ts +0 -2
  112. package/src/commands/monitor/notifyGame.d.ts +0 -3
  113. package/src/commands/monitor/saveDatWriter/saveDatWriter.d.ts +0 -1
  114. package/src/commands/monitor/saveDatWriter/types.d.ts +0 -5
  115. package/src/commands/monitor/spawnSaveDatWriter.d.ts +0 -4
  116. package/src/commands/monitor/touchWatcherSaveDatFiles.d.ts +0 -2
  117. package/src/commands/publish/publish.d.ts +0 -2
  118. package/src/configFile.d.ts +0 -4
  119. package/src/constants.d.ts +0 -34
  120. package/src/exec.d.ts +0 -4
  121. package/src/file.d.ts +0 -12
  122. package/src/main.d.ts +0 -2
  123. package/src/parseArgs.d.ts +0 -1
  124. package/src/prompt.d.ts +0 -5
  125. package/src/types/Command.d.ts +0 -2
  126. package/src/types/Config.d.ts +0 -18
  127. package/src/types/GitHubCLIHostsYAML.d.ts +0 -7
  128. package/src/utils.d.ts +0 -13
  129. package/src/validateInIsaacScriptProject.d.ts +0 -1
  130. package/src/validateNodeVersion.d.ts +0 -5
  131. package/src/validateOS.d.ts +0 -1
@@ -1,16 +1,16 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkModSubdirectory = void 0;
4
- const tslib_1 = require("tslib");
5
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
- const constants_1 = require("../../constants");
7
- const file = tslib_1.__importStar(require("../../file"));
8
- const utils_1 = require("../../utils");
9
- function checkModSubdirectory(projectPath, modsDirectory) {
10
- if (file.isSubDirOf(constants_1.CWD, modsDirectory)) {
11
- console.error(`Error: The project directory of "${chalk_1.default.green(projectPath)}" is a subdirectory of "${chalk_1.default.green(modsDirectory)}".`);
12
- (0, utils_1.error)('You are supposed to have your project folder somewhere else on the system than the Isaac mods directory. (This is because we don\'t want to upload the ".git" folder or the TypeScript files to the Steam Workshop.) Exiting.');
13
- }
14
- }
15
- exports.checkModSubdirectory = checkModSubdirectory;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkModSubdirectory = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
+ const constants_1 = require("../../constants");
7
+ const file = tslib_1.__importStar(require("../../file"));
8
+ const utils_1 = require("../../utils");
9
+ function checkModSubdirectory(projectPath, modsDirectory) {
10
+ if (file.isSubDirOf(constants_1.CWD, modsDirectory)) {
11
+ console.error(`Error: The project directory of "${chalk_1.default.green(projectPath)}" is a subdirectory of "${chalk_1.default.green(modsDirectory)}".`);
12
+ (0, utils_1.error)('You are supposed to have your project folder somewhere else on the system than the Isaac mods directory. (This is because we don\'t want to upload the ".git" folder or the TypeScript files to the Steam Workshop.) Exiting.');
13
+ }
14
+ }
15
+ exports.checkModSubdirectory = checkModSubdirectory;
16
16
  //# sourceMappingURL=checkModSubdirectory.js.map
@@ -1,33 +1,31 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkModTargetDirectory = void 0;
4
- const tslib_1 = require("tslib");
5
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
- const path_1 = tslib_1.__importDefault(require("path"));
7
- const constants_1 = require("../../constants");
8
- const file = tslib_1.__importStar(require("../../file"));
9
- const prompt_1 = require("../../prompt");
10
- const utils_1 = require("../../utils");
11
- function checkModTargetDirectory(modsDirectory, projectName, yes, verbose) {
12
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
13
- const modTargetPath = path_1.default.join(modsDirectory, projectName);
14
- if (!file.exists(modTargetPath, verbose)) {
15
- return;
16
- }
17
- const fileType = file.isDir(modTargetPath, verbose) ? "directory" : "file";
18
- if (yes) {
19
- file.deleteFileOrDirectory(modTargetPath, verbose);
20
- console.log(`Deleted ${fileType}: ${chalk_1.default.green(modTargetPath)}`);
21
- return;
22
- }
23
- console.log(`A ${fileType} already exists at at the mod path of: ${chalk_1.default.green(modTargetPath)}`);
24
- console.log(`${constants_1.PROJECT_NAME} will need to sync your project folder with this directory.`);
25
- const shouldDelete = yield (0, prompt_1.getInputYesNo)("Do you want me to delete it?");
26
- if (!shouldDelete) {
27
- (0, utils_1.error)("Ok then. Goodbye.");
28
- }
29
- file.deleteFileOrDirectory(modTargetPath, verbose);
30
- });
31
- }
32
- exports.checkModTargetDirectory = checkModTargetDirectory;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkModTargetDirectory = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
+ const path_1 = tslib_1.__importDefault(require("path"));
7
+ const constants_1 = require("../../constants");
8
+ const file = tslib_1.__importStar(require("../../file"));
9
+ const prompt_1 = require("../../prompt");
10
+ const utils_1 = require("../../utils");
11
+ async function checkModTargetDirectory(modsDirectory, projectName, yes, verbose) {
12
+ const modTargetPath = path_1.default.join(modsDirectory, projectName);
13
+ if (!file.exists(modTargetPath, verbose)) {
14
+ return;
15
+ }
16
+ const fileType = file.isDir(modTargetPath, verbose) ? "directory" : "file";
17
+ if (yes) {
18
+ file.deleteFileOrDirectory(modTargetPath, verbose);
19
+ console.log(`Deleted ${fileType}: ${chalk_1.default.green(modTargetPath)}`);
20
+ return;
21
+ }
22
+ console.log(`A ${fileType} already exists at at the mod path of: ${chalk_1.default.green(modTargetPath)}`);
23
+ console.log(`${constants_1.PROJECT_NAME} will need to sync your project folder with this directory.`);
24
+ const shouldDelete = await (0, prompt_1.getInputYesNo)("Do you want me to delete it?");
25
+ if (!shouldDelete) {
26
+ (0, utils_1.error)("Ok then. Goodbye.");
27
+ }
28
+ file.deleteFileOrDirectory(modTargetPath, verbose);
29
+ }
30
+ exports.checkModTargetDirectory = checkModTargetDirectory;
33
31
  //# sourceMappingURL=checkModTargetDirectory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkModTargetDirectory.js","sourceRoot":"","sources":["../../../../../../packages/isaacscript-cli/src/commands/init/checkModTargetDirectory.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,wDAAwB;AACxB,+CAA+C;AAC/C,yDAAmC;AACnC,yCAA6C;AAC7C,uCAAoC;AAEpC,SAAsB,uBAAuB,CAC3C,aAAqB,EACrB,WAAmB,EACnB,GAAY,EACZ,OAAgB;;QAEhB,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;YACxC,OAAO;SACR;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QAE3E,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,KAAK,eAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAClE,OAAO;SACR;QAED,OAAO,CAAC,GAAG,CACT,KAAK,QAAQ,0CAA0C,eAAK,CAAC,KAAK,CAChE,aAAa,CACd,EAAE,CACJ,CAAC;QACF,OAAO,CAAC,GAAG,CACT,GAAG,wBAAY,6DAA6D,CAC7E,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,IAAA,sBAAa,EAAC,8BAA8B,CAAC,CAAC;QAEzE,IAAI,CAAC,YAAY,EAAE;YACjB,IAAA,aAAK,EAAC,mBAAmB,CAAC,CAAC;SAC5B;QAED,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;CAAA;AAlCD,0DAkCC"}
1
+ {"version":3,"file":"checkModTargetDirectory.js","sourceRoot":"","sources":["../../../../../../packages/isaacscript-cli/src/commands/init/checkModTargetDirectory.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,wDAAwB;AACxB,+CAA+C;AAC/C,yDAAmC;AACnC,yCAA6C;AAC7C,uCAAoC;AAE7B,KAAK,UAAU,uBAAuB,CAC3C,aAAqB,EACrB,WAAmB,EACnB,GAAY,EACZ,OAAgB;IAEhB,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;QACxC,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3E,IAAI,GAAG,EAAE;QACP,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,KAAK,eAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAClE,OAAO;KACR;IAED,OAAO,CAAC,GAAG,CACT,KAAK,QAAQ,0CAA0C,eAAK,CAAC,KAAK,CAChE,aAAa,CACd,EAAE,CACJ,CAAC;IACF,OAAO,CAAC,GAAG,CACT,GAAG,wBAAY,6DAA6D,CAC7E,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,IAAA,sBAAa,EAAC,8BAA8B,CAAC,CAAC;IAEzE,IAAI,CAAC,YAAY,EAAE;QACjB,IAAA,aAAK,EAAC,mBAAmB,CAAC,CAAC;KAC5B;IAED,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAlCD,0DAkCC"}
@@ -1,138 +1,143 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createMod = void 0;
4
- const tslib_1 = require("tslib");
5
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
- const path_1 = tslib_1.__importDefault(require("path"));
7
- const configFile = tslib_1.__importStar(require("../../configFile"));
8
- const constants_1 = require("../../constants");
9
- const exec_1 = require("../../exec");
10
- const file = tslib_1.__importStar(require("../../file"));
11
- const git_1 = require("./git");
12
- function createMod(projectName, projectPath, createNewDir, modsDirectory, saveSlot, gitRemoteURL, skipNPMInstall, verbose) {
13
- if (createNewDir) {
14
- file.makeDir(projectPath, verbose);
15
- }
16
- const config = configFile.createObject(modsDirectory, saveSlot);
17
- configFile.createFile(projectPath, config, verbose);
18
- const targetModDirectory = path_1.default.join(config.modsDirectory, projectName);
19
- makeSubdirectories(projectPath, verbose);
20
- copyStaticFiles(projectPath, verbose);
21
- copyDynamicFiles(projectName, projectPath, targetModDirectory, verbose);
22
- updateNodeModules(projectPath, verbose);
23
- installNodeModules(projectPath, skipNPMInstall, verbose);
24
- formatFiles(projectPath, verbose);
25
- // Only make the initial commit once all of the files have been copied and formatted.
26
- (0, git_1.initGitRepository)(projectPath, gitRemoteURL, verbose);
27
- console.log(`Successfully created mod: ${chalk_1.default.green(projectName)}`);
28
- }
29
- exports.createMod = createMod;
30
- function makeSubdirectories(projectPath, verbose) {
31
- // The "src" directory is created during copying of static files.
32
- for (const subdirectory of ["mod"]) {
33
- const srcPath = path_1.default.join(projectPath, subdirectory);
34
- file.makeDir(srcPath, verbose);
35
- }
36
- }
37
- /** Copy static files, like ".eslintrc.js", "tsconfig.json", etc. */
38
- function copyStaticFiles(projectPath, verbose) {
39
- const staticFileList = file.getDirList(constants_1.TEMPLATES_STATIC_DIR, verbose);
40
- staticFileList.forEach((fileName) => {
41
- const templateFilePath = path_1.default.join(constants_1.TEMPLATES_STATIC_DIR, fileName);
42
- const destinationFilePath = path_1.default.join(projectPath, fileName);
43
- if (!file.exists(destinationFilePath, verbose)) {
44
- file.copy(templateFilePath, destinationFilePath, verbose);
45
- }
46
- });
47
- // Rename ".cspell.json.template" to ".cspell.json.template". (If it is kept as ".cspell.json",
48
- // then local spell checking will fail.)
49
- const cSpellConfigPath = path_1.default.join(projectPath, ".cspell.json.template");
50
- const correctCSpellConfigPath = path_1.default.join(projectPath, ".cspell.json");
51
- file.rename(cSpellConfigPath, correctCSpellConfigPath, verbose);
52
- }
53
- /** Copy files that need to have text replaced inside of them. */
54
- function copyDynamicFiles(projectName, projectPath, targetModDirectory, verbose) {
55
- // `.gitignore`
56
- {
57
- const fileName = constants_1.GITIGNORE;
58
- const templatePath = constants_1.GITIGNORE_TEMPLATE_PATH;
59
- const template = file.read(templatePath, verbose);
60
- // Prepend a header with the project name.
61
- let separatorLine = "# ";
62
- for (let i = 0; i < projectName.length; i++) {
63
- separatorLine += "-";
64
- }
65
- separatorLine += "\n";
66
- const gitignoreHeader = `${separatorLine}# ${projectName}\n${separatorLine}\n`;
67
- const gitignore = gitignoreHeader + template;
68
- const destinationPath = path_1.default.join(projectPath, `.${fileName}`); // We need to prepend a period
69
- file.write(destinationPath, gitignore, verbose);
70
- }
71
- // `package.json`
72
- {
73
- // Modify and copy the file.
74
- const fileName = constants_1.PACKAGE_JSON;
75
- const templatePath = constants_1.PACKAGE_JSON_TEMPLATE_PATH;
76
- const template = file.read(templatePath, verbose);
77
- const packageJSON = template.replace(/MOD-NAME-TO-REPLACE/g, projectName);
78
- const destinationPath = path_1.default.join(projectPath, fileName);
79
- file.write(destinationPath, packageJSON, verbose);
80
- }
81
- // `README.md`
82
- {
83
- const fileName = constants_1.README_MD;
84
- const templatePath = constants_1.README_MD_TEMPLATES_PATH;
85
- const template = file.read(templatePath, verbose);
86
- const readmeMD = template.replace(/MOD-NAME-TO-REPLACE/g, projectName);
87
- const destinationPath = path_1.default.join(projectPath, fileName);
88
- file.write(destinationPath, readmeMD, verbose);
89
- }
90
- // `mod/metadata.xml`
91
- {
92
- const fileName = constants_1.METADATA_XML;
93
- const templatePath = constants_1.METADATA_XML_TEMPLATE_PATH;
94
- const template = file.read(templatePath, verbose);
95
- const metadataXML = template.replace(/MOD-NAME-TO-REPLACE/g, projectName);
96
- const modPath = path_1.default.join(projectPath, "mod");
97
- const destinationPath = path_1.default.join(modPath, fileName);
98
- file.write(destinationPath, metadataXML, verbose);
99
- }
100
- // `mod/metadata.vdf`
101
- {
102
- const fileName = constants_1.METADATA_VDF;
103
- const templatePath = constants_1.METADATA_VDF_TEMPLATE_PATH;
104
- const template = file.read(templatePath, verbose);
105
- const metadataVDF = template.replace(/MOD-TARGET-DIR/g, targetModDirectory);
106
- const modPath = path_1.default.join(projectPath, "mod");
107
- const destinationPath = path_1.default.join(modPath, fileName);
108
- file.write(destinationPath, metadataVDF, verbose);
109
- }
110
- // `src/main.ts`
111
- {
112
- // Convert snake_case and kebab-case to camelCase. (Kebab-case in particular will make the
113
- // example TypeScript file fail to compile.)
114
- const srcPath = path_1.default.join(projectPath, "src");
115
- const fileName = constants_1.MAIN_TS;
116
- const templatePath = constants_1.MAIN_TS_TEMPLATE_PATH;
117
- const template = file.read(templatePath, verbose);
118
- const mainTS = template.replace(/MOD-NAME-TO-REPLACE/g, projectName);
119
- const destinationPath = path_1.default.join(srcPath, fileName);
120
- file.write(destinationPath, mainTS, verbose);
121
- }
122
- }
123
- /** The "package.json" file has to be copied first before this step. */
124
- function updateNodeModules(projectPath, verbose) {
125
- console.log("Finding out the latest versions of the NPM packages...");
126
- (0, exec_1.execShell)("npx", ["npm-check-updates", "--upgrade", "--packageFile", "package.json"], verbose, false, projectPath);
127
- }
128
- function installNodeModules(projectPath, skipNPMInstall, verbose) {
129
- if (skipNPMInstall) {
130
- return;
131
- }
132
- console.log("Installing node modules... (This can take a long time.)");
133
- (0, exec_1.execShell)("npm", ["install"], verbose, false, projectPath);
134
- }
135
- function formatFiles(projectPath, verbose) {
136
- (0, exec_1.execShell)("npx", ["prettier", "--write", projectPath], verbose, false, projectPath);
137
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMod = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
+ const path_1 = tslib_1.__importDefault(require("path"));
7
+ const configFile = tslib_1.__importStar(require("../../configFile"));
8
+ const constants_1 = require("../../constants");
9
+ const exec_1 = require("../../exec");
10
+ const file = tslib_1.__importStar(require("../../file"));
11
+ const git_1 = require("./git");
12
+ function createMod(projectName, projectPath, createNewDir, modsDirectory, saveSlot, gitRemoteURL, skipNPMInstall, verbose) {
13
+ if (createNewDir) {
14
+ file.makeDir(projectPath, verbose);
15
+ }
16
+ const config = configFile.createObject(modsDirectory, saveSlot);
17
+ configFile.createFile(projectPath, config, verbose);
18
+ const targetModDirectory = path_1.default.join(config.modsDirectory, projectName);
19
+ makeSubdirectories(projectPath, verbose);
20
+ copyStaticFiles(projectPath, verbose);
21
+ copyDynamicFiles(projectName, projectPath, targetModDirectory, verbose);
22
+ updateNodeModules(projectPath, verbose);
23
+ installNodeModules(projectPath, skipNPMInstall, verbose);
24
+ formatFiles(projectPath, verbose);
25
+ // Only make the initial commit once all of the files have been copied and formatted.
26
+ (0, git_1.initGitRepository)(projectPath, gitRemoteURL, verbose);
27
+ console.log(`Successfully created mod: ${chalk_1.default.green(projectName)}`);
28
+ }
29
+ exports.createMod = createMod;
30
+ function makeSubdirectories(projectPath, verbose) {
31
+ // The "src" directory is created during copying of static files.
32
+ for (const subdirectory of ["mod"]) {
33
+ const srcPath = path_1.default.join(projectPath, subdirectory);
34
+ file.makeDir(srcPath, verbose);
35
+ }
36
+ }
37
+ /** Copy static files, like ".eslintrc.js", "tsconfig.json", etc. */
38
+ function copyStaticFiles(projectPath, verbose) {
39
+ const staticFileList = file.getDirList(constants_1.TEMPLATES_STATIC_DIR, verbose);
40
+ staticFileList.forEach((fileName) => {
41
+ const templateFilePath = path_1.default.join(constants_1.TEMPLATES_STATIC_DIR, fileName);
42
+ const destinationFilePath = path_1.default.join(projectPath, fileName);
43
+ if (!file.exists(destinationFilePath, verbose)) {
44
+ file.copy(templateFilePath, destinationFilePath, verbose);
45
+ }
46
+ });
47
+ // Rename ".cspell.json.template" to ".cspell.json". (If it is kept as ".cspell.json", then local
48
+ // spell checking will fail.)
49
+ const cSpellConfigPath = path_1.default.join(projectPath, ".cspell.json.template");
50
+ const correctCSpellConfigPath = path_1.default.join(projectPath, ".cspell.json");
51
+ file.rename(cSpellConfigPath, correctCSpellConfigPath, verbose);
52
+ // Rename ".eslintrc.js.template" to ".eslintrc.js". (If it is kept as ".eslintrc.js", then local
53
+ // linting will fail.)
54
+ const ESLintConfigPath = path_1.default.join(projectPath, ".eslintrc.js.template");
55
+ const correctESLintConfigPath = path_1.default.join(projectPath, ".eslintrc.js");
56
+ file.rename(ESLintConfigPath, correctESLintConfigPath, verbose);
57
+ }
58
+ /** Copy files that need to have text replaced inside of them. */
59
+ function copyDynamicFiles(projectName, projectPath, targetModDirectory, verbose) {
60
+ // `.gitignore`
61
+ {
62
+ const fileName = constants_1.GITIGNORE;
63
+ const templatePath = constants_1.GITIGNORE_TEMPLATE_PATH;
64
+ const template = file.read(templatePath, verbose);
65
+ // Prepend a header with the project name.
66
+ let separatorLine = "# ";
67
+ for (let i = 0; i < projectName.length; i++) {
68
+ separatorLine += "-";
69
+ }
70
+ separatorLine += "\n";
71
+ const gitignoreHeader = `${separatorLine}# ${projectName}\n${separatorLine}\n`;
72
+ const gitignore = gitignoreHeader + template;
73
+ const destinationPath = path_1.default.join(projectPath, `.${fileName}`); // We need to prepend a period
74
+ file.write(destinationPath, gitignore, verbose);
75
+ }
76
+ // `package.json`
77
+ {
78
+ // Modify and copy the file.
79
+ const fileName = constants_1.PACKAGE_JSON;
80
+ const templatePath = constants_1.PACKAGE_JSON_TEMPLATE_PATH;
81
+ const template = file.read(templatePath, verbose);
82
+ const packageJSON = template.replace(/MOD-NAME-TO-REPLACE/g, projectName);
83
+ const destinationPath = path_1.default.join(projectPath, fileName);
84
+ file.write(destinationPath, packageJSON, verbose);
85
+ }
86
+ // `README.md`
87
+ {
88
+ const fileName = constants_1.README_MD;
89
+ const templatePath = constants_1.README_MD_TEMPLATES_PATH;
90
+ const template = file.read(templatePath, verbose);
91
+ const readmeMD = template.replace(/MOD-NAME-TO-REPLACE/g, projectName);
92
+ const destinationPath = path_1.default.join(projectPath, fileName);
93
+ file.write(destinationPath, readmeMD, verbose);
94
+ }
95
+ // `mod/metadata.xml`
96
+ {
97
+ const fileName = constants_1.METADATA_XML;
98
+ const templatePath = constants_1.METADATA_XML_TEMPLATE_PATH;
99
+ const template = file.read(templatePath, verbose);
100
+ const metadataXML = template.replace(/MOD-NAME-TO-REPLACE/g, projectName);
101
+ const modPath = path_1.default.join(projectPath, "mod");
102
+ const destinationPath = path_1.default.join(modPath, fileName);
103
+ file.write(destinationPath, metadataXML, verbose);
104
+ }
105
+ // `mod/metadata.vdf`
106
+ {
107
+ const fileName = constants_1.METADATA_VDF;
108
+ const templatePath = constants_1.METADATA_VDF_TEMPLATE_PATH;
109
+ const template = file.read(templatePath, verbose);
110
+ const metadataVDF = template.replace(/MOD-TARGET-DIR/g, targetModDirectory);
111
+ const modPath = path_1.default.join(projectPath, "mod");
112
+ const destinationPath = path_1.default.join(modPath, fileName);
113
+ file.write(destinationPath, metadataVDF, verbose);
114
+ }
115
+ // `src/main.ts`
116
+ {
117
+ // Convert snake_case and kebab-case to camelCase. (Kebab-case in particular will make the
118
+ // example TypeScript file fail to compile.)
119
+ const srcPath = path_1.default.join(projectPath, "src");
120
+ const fileName = constants_1.MAIN_TS;
121
+ const templatePath = constants_1.MAIN_TS_TEMPLATE_PATH;
122
+ const template = file.read(templatePath, verbose);
123
+ const mainTS = template.replace(/MOD-NAME-TO-REPLACE/g, projectName);
124
+ const destinationPath = path_1.default.join(srcPath, fileName);
125
+ file.write(destinationPath, mainTS, verbose);
126
+ }
127
+ }
128
+ /** The "package.json" file has to be copied first before this step. */
129
+ function updateNodeModules(projectPath, verbose) {
130
+ console.log("Finding out the latest versions of the NPM packages...");
131
+ (0, exec_1.execShell)("npx", ["npm-check-updates", "--upgrade", "--packageFile", "package.json"], verbose, false, projectPath);
132
+ }
133
+ function installNodeModules(projectPath, skipNPMInstall, verbose) {
134
+ if (skipNPMInstall) {
135
+ return;
136
+ }
137
+ console.log("Installing node modules... (This can take a long time.)");
138
+ (0, exec_1.execShell)("npm", ["install"], verbose, false, projectPath);
139
+ }
140
+ function formatFiles(projectPath, verbose) {
141
+ (0, exec_1.execShell)("npx", ["prettier", "--write", projectPath], verbose, false, projectPath);
142
+ }
138
143
  //# sourceMappingURL=createMod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createMod.js","sourceRoot":"","sources":["../../../../../../packages/isaacscript-cli/src/commands/init/createMod.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,wDAAwB;AACxB,qEAA+C;AAC/C,+CAcyB;AACzB,qCAAuC;AACvC,yDAAmC;AACnC,+BAA0C;AAE1C,SAAgB,SAAS,CACvB,WAAmB,EACnB,WAAmB,EACnB,YAAqB,EACrB,aAAqB,EACrB,QAAgB,EAChB,YAAgC,EAChC,cAAuB,EACvB,OAAgB;IAEhB,IAAI,YAAY,EAAE;QAChB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;KACpC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAChE,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAExE,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtC,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACxE,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACxC,kBAAkB,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IACzD,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAElC,qFAAqF;IACrF,IAAA,uBAAiB,EAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAEtD,OAAO,CAAC,GAAG,CAAC,6BAA6B,eAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AA7BD,8BA6BC;AAED,SAAS,kBAAkB,CAAC,WAAmB,EAAE,OAAgB;IAC/D,iEAAiE;IACjE,KAAK,MAAM,YAAY,IAAI,CAAC,KAAK,CAAC,EAAE;QAClC,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAChC;AACH,CAAC;AAED,oEAAoE;AACpE,SAAS,eAAe,CAAC,WAAmB,EAAE,OAAgB;IAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,gCAAoB,EAAE,OAAO,CAAC,CAAC;IACtE,cAAc,CAAC,OAAO,CAAC,CAAC,QAAgB,EAAE,EAAE;QAC1C,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,gCAAoB,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;SAC3D;IACH,CAAC,CAAC,CAAC;IAEH,+FAA+F;IAC/F,wCAAwC;IACxC,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IACzE,MAAM,uBAAuB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC;AAED,iEAAiE;AACjE,SAAS,gBAAgB,CACvB,WAAmB,EACnB,WAAmB,EACnB,kBAA0B,EAC1B,OAAgB;IAEhB,eAAe;IACf;QACE,MAAM,QAAQ,GAAG,qBAAS,CAAC;QAC3B,MAAM,YAAY,GAAG,mCAAuB,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAElD,0CAA0C;QAC1C,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,aAAa,IAAI,GAAG,CAAC;SACtB;QACD,aAAa,IAAI,IAAI,CAAC;QACtB,MAAM,eAAe,GAAG,GAAG,aAAa,KAAK,WAAW,KAAK,aAAa,IAAI,CAAC;QAC/E,MAAM,SAAS,GAAG,eAAe,GAAG,QAAQ,CAAC;QAE7C,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,8BAA8B;QAC9F,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KACjD;IAED,iBAAiB;IACjB;QACE,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,wBAAY,CAAC;QAC9B,MAAM,YAAY,GAAG,sCAA0B,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;KACnD;IAED,cAAc;IACd;QACE,MAAM,QAAQ,GAAG,qBAAS,CAAC;QAC3B,MAAM,YAAY,GAAG,oCAAwB,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;KAChD;IAED,qBAAqB;IACrB;QACE,MAAM,QAAQ,GAAG,wBAAY,CAAC;QAC9B,MAAM,YAAY,GAAG,sCAA0B,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;KACnD;IAED,qBAAqB;IACrB;QACE,MAAM,QAAQ,GAAG,wBAAY,CAAC;QAC9B,MAAM,YAAY,GAAG,sCAA0B,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;KACnD;IAED,gBAAgB;IAChB;QACE,0FAA0F;QAC1F,4CAA4C;QAC5C,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,mBAAO,CAAC;QACzB,MAAM,YAAY,GAAG,iCAAqB,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAC9C;AACH,CAAC;AAED,uEAAuE;AACvE,SAAS,iBAAiB,CAAC,WAAmB,EAAE,OAAgB;IAC9D,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,IAAA,gBAAS,EACP,KAAK,EACL,CAAC,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,CAAC,EACnE,OAAO,EACP,KAAK,EACL,WAAW,CACZ,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,WAAmB,EACnB,cAAuB,EACvB,OAAgB;IAEhB,IAAI,cAAc,EAAE;QAClB,OAAO;KACR;IAED,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,IAAA,gBAAS,EAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB,EAAE,OAAgB;IACxD,IAAA,gBAAS,EACP,KAAK,EACL,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,EACpC,OAAO,EACP,KAAK,EACL,WAAW,CACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"createMod.js","sourceRoot":"","sources":["../../../../../../packages/isaacscript-cli/src/commands/init/createMod.ts"],"names":[],"mappings":"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"}
@@ -1,58 +1,56 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getModsDir = void 0;
4
- const tslib_1 = require("tslib");
5
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
- const path_1 = tslib_1.__importDefault(require("path"));
7
- const constants_1 = require("../../constants");
8
- const file = tslib_1.__importStar(require("../../file"));
9
- const prompt_1 = require("../../prompt");
10
- const utils_1 = require("../../utils");
11
- const MODS = "mods";
12
- const DEFAULT_MODS_PATH_WINDOWS = path_1.default.join("C:", "Program Files (x86)", "Steam", "steamapps", "common", "The Binding of Isaac Rebirth", MODS);
13
- /** This is a subdirectory of `$HOME`. */
14
- const DEFAULT_MODS_PATH_LINUX = path_1.default.join(constants_1.HOME_DIR, ".local", "share", "Steam", "steamapps", "common", "The Binding of Isaac Rebirth", MODS);
15
- function getModsDir(argv, verbose) {
16
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
17
- if (argv["modsDirectory"] !== undefined) {
18
- // They specified the "--mods-directory" command-line flag, so there is no need to prompt the
19
- // user for it.
20
- return argv["modsDirectory"];
21
- }
22
- const defaultModsPath = getDefaultModsPath(process.platform);
23
- if (file.exists(defaultModsPath, verbose) &&
24
- file.isDir(defaultModsPath, verbose)) {
25
- return defaultModsPath;
26
- }
27
- console.error(`Failed to find your mods directory at: ${chalk_1.default.green(defaultModsPath)}`);
28
- const modsDir = yield (0, prompt_1.getInputString)(`Enter the full path to the "${MODS}" directory on your system, which should be next to your "isaac-ng.exe" program:`);
29
- if (modsDir === "") {
30
- (0, utils_1.error)("Error: You did not provide a response; exiting.");
31
- }
32
- if (!file.exists(modsDir, verbose)) {
33
- (0, utils_1.error)(`Error: The directory of "${chalk_1.default.green(modsDir)}" does not exist. Exiting.`);
34
- }
35
- if (!file.isDir(modsDir, verbose)) {
36
- (0, utils_1.error)(`Error: The path of "${chalk_1.default.green(modsDir)}" is not a directory. Exiting.`);
37
- }
38
- if (path_1.default.basename(modsDir) !== MODS) {
39
- (0, utils_1.error)(`Error: You entered a path of "${chalk_1.default.green(modsDir)}", but you need to input a directory with a name of "${MODS}" at the end. Exiting.`);
40
- }
41
- return modsDir;
42
- });
43
- }
44
- exports.getModsDir = getModsDir;
45
- function getDefaultModsPath(platform) {
46
- switch (platform) {
47
- case "win32": {
48
- return DEFAULT_MODS_PATH_WINDOWS;
49
- }
50
- case "linux": {
51
- return DEFAULT_MODS_PATH_LINUX;
52
- }
53
- default: {
54
- return (0, utils_1.error)(`There does not exist a default mod path for the platform of: ${chalk_1.default.green(platform)}`);
55
- }
56
- }
57
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getModsDir = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
+ const path_1 = tslib_1.__importDefault(require("path"));
7
+ const constants_1 = require("../../constants");
8
+ const file = tslib_1.__importStar(require("../../file"));
9
+ const prompt_1 = require("../../prompt");
10
+ const utils_1 = require("../../utils");
11
+ const MODS = "mods";
12
+ const DEFAULT_MODS_PATH_WINDOWS = path_1.default.join("C:", "Program Files (x86)", "Steam", "steamapps", "common", "The Binding of Isaac Rebirth", MODS);
13
+ /** This is a subdirectory of `$HOME`. */
14
+ const DEFAULT_MODS_PATH_LINUX = path_1.default.join(constants_1.HOME_DIR, ".local", "share", "Steam", "steamapps", "common", "The Binding of Isaac Rebirth", MODS);
15
+ async function getModsDir(argv, verbose) {
16
+ if (argv["modsDirectory"] !== undefined) {
17
+ // They specified the "--mods-directory" command-line flag, so there is no need to prompt the
18
+ // user for it.
19
+ return argv["modsDirectory"];
20
+ }
21
+ const defaultModsPath = getDefaultModsPath(process.platform);
22
+ if (file.exists(defaultModsPath, verbose) &&
23
+ file.isDir(defaultModsPath, verbose)) {
24
+ return defaultModsPath;
25
+ }
26
+ console.error(`Failed to find your mods directory at: ${chalk_1.default.green(defaultModsPath)}`);
27
+ const modsDir = await (0, prompt_1.getInputString)(`Enter the full path to the "${MODS}" directory on your system, which should be next to your "isaac-ng.exe" program:`);
28
+ if (modsDir === "") {
29
+ (0, utils_1.error)("Error: You did not provide a response; exiting.");
30
+ }
31
+ if (!file.exists(modsDir, verbose)) {
32
+ (0, utils_1.error)(`Error: The directory of "${chalk_1.default.green(modsDir)}" does not exist. Exiting.`);
33
+ }
34
+ if (!file.isDir(modsDir, verbose)) {
35
+ (0, utils_1.error)(`Error: The path of "${chalk_1.default.green(modsDir)}" is not a directory. Exiting.`);
36
+ }
37
+ if (path_1.default.basename(modsDir) !== MODS) {
38
+ (0, utils_1.error)(`Error: You entered a path of "${chalk_1.default.green(modsDir)}", but you need to input a directory with a name of "${MODS}" at the end. Exiting.`);
39
+ }
40
+ return modsDir;
41
+ }
42
+ exports.getModsDir = getModsDir;
43
+ function getDefaultModsPath(platform) {
44
+ switch (platform) {
45
+ case "win32": {
46
+ return DEFAULT_MODS_PATH_WINDOWS;
47
+ }
48
+ case "linux": {
49
+ return DEFAULT_MODS_PATH_LINUX;
50
+ }
51
+ default: {
52
+ return (0, utils_1.error)(`There does not exist a default mod path for the platform of: ${chalk_1.default.green(platform)}`);
53
+ }
54
+ }
55
+ }
58
56
  //# sourceMappingURL=getModsDir.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getModsDir.js","sourceRoot":"","sources":["../../../../../../packages/isaacscript-cli/src/commands/init/getModsDir.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,wDAAwB;AACxB,+CAA2C;AAC3C,yDAAmC;AACnC,yCAA8C;AAC9C,uCAAoC;AAEpC,MAAM,IAAI,GAAG,MAAM,CAAC;AAEpB,MAAM,yBAAyB,GAAG,cAAI,CAAC,IAAI,CACzC,IAAI,EACJ,qBAAqB,EACrB,OAAO,EACP,WAAW,EACX,QAAQ,EACR,8BAA8B,EAC9B,IAAI,CACL,CAAC;AAEF,yCAAyC;AACzC,MAAM,uBAAuB,GAAG,cAAI,CAAC,IAAI,CACvC,oBAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,EACX,QAAQ,EACR,8BAA8B,EAC9B,IAAI,CACL,CAAC;AAEF,SAAsB,UAAU,CAC9B,IAA6B,EAC7B,OAAgB;;QAEhB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,SAAS,EAAE;YACvC,6FAA6F;YAC7F,eAAe;YACf,OAAO,IAAI,CAAC,eAAe,CAAW,CAAC;SACxC;QAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE7D,IACE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,EACpC;YACA,OAAO,eAAe,CAAC;SACxB;QAED,OAAO,CAAC,KAAK,CACX,0CAA0C,eAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CACzE,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAc,EAClC,+BAA+B,IAAI,kFAAkF,CACtH,CAAC;QAEF,IAAI,OAAO,KAAK,EAAE,EAAE;YAClB,IAAA,aAAK,EAAC,iDAAiD,CAAC,CAAC;SAC1D;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;YAClC,IAAA,aAAK,EACH,4BAA4B,eAAK,CAAC,KAAK,CACrC,OAAO,CACR,4BAA4B,CAC9B,CAAC;SACH;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;YACjC,IAAA,aAAK,EACH,uBAAuB,eAAK,CAAC,KAAK,CAChC,OAAO,CACR,gCAAgC,CAClC,CAAC;SACH;QAED,IAAI,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YACnC,IAAA,aAAK,EACH,iCAAiC,eAAK,CAAC,KAAK,CAC1C,OAAO,CACR,wDAAwD,IAAI,wBAAwB,CACtF,CAAC;SACH;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CAAA;AAvDD,gCAuDC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,QAAQ,QAAQ,EAAE;QAChB,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,yBAAyB,CAAC;SAClC;QAED,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,uBAAuB,CAAC;SAChC;QAED,OAAO,CAAC,CAAC;YACP,OAAO,IAAA,aAAK,EACV,gEAAgE,eAAK,CAAC,KAAK,CACzE,QAAQ,CACT,EAAE,CACJ,CAAC;SACH;KACF;AACH,CAAC"}
1
+ {"version":3,"file":"getModsDir.js","sourceRoot":"","sources":["../../../../../../packages/isaacscript-cli/src/commands/init/getModsDir.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,wDAAwB;AACxB,+CAA2C;AAC3C,yDAAmC;AACnC,yCAA8C;AAC9C,uCAAoC;AAEpC,MAAM,IAAI,GAAG,MAAM,CAAC;AAEpB,MAAM,yBAAyB,GAAG,cAAI,CAAC,IAAI,CACzC,IAAI,EACJ,qBAAqB,EACrB,OAAO,EACP,WAAW,EACX,QAAQ,EACR,8BAA8B,EAC9B,IAAI,CACL,CAAC;AAEF,yCAAyC;AACzC,MAAM,uBAAuB,GAAG,cAAI,CAAC,IAAI,CACvC,oBAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,EACX,QAAQ,EACR,8BAA8B,EAC9B,IAAI,CACL,CAAC;AAEK,KAAK,UAAU,UAAU,CAC9B,IAA6B,EAC7B,OAAgB;IAEhB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,SAAS,EAAE;QACvC,6FAA6F;QAC7F,eAAe;QACf,OAAO,IAAI,CAAC,eAAe,CAAW,CAAC;KACxC;IAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7D,IACE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,EACpC;QACA,OAAO,eAAe,CAAC;KACxB;IAED,OAAO,CAAC,KAAK,CACX,0CAA0C,eAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CACzE,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAc,EAClC,+BAA+B,IAAI,kFAAkF,CACtH,CAAC;IAEF,IAAI,OAAO,KAAK,EAAE,EAAE;QAClB,IAAA,aAAK,EAAC,iDAAiD,CAAC,CAAC;KAC1D;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;QAClC,IAAA,aAAK,EACH,4BAA4B,eAAK,CAAC,KAAK,CACrC,OAAO,CACR,4BAA4B,CAC9B,CAAC;KACH;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;QACjC,IAAA,aAAK,EACH,uBAAuB,eAAK,CAAC,KAAK,CAChC,OAAO,CACR,gCAAgC,CAClC,CAAC;KACH;IAED,IAAI,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;QACnC,IAAA,aAAK,EACH,iCAAiC,eAAK,CAAC,KAAK,CAC1C,OAAO,CACR,wDAAwD,IAAI,wBAAwB,CACtF,CAAC;KACH;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAvDD,gCAuDC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,QAAQ,QAAQ,EAAE;QAChB,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,yBAAyB,CAAC;SAClC;QAED,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,uBAAuB,CAAC;SAChC;QAED,OAAO,CAAC,CAAC;YACP,OAAO,IAAA,aAAK,EACV,gEAAgE,eAAK,CAAC,KAAK,CACzE,QAAQ,CACT,EAAE,CACJ,CAAC;SACH;KACF;AACH,CAAC"}