modpack-lock 0.6.2 → 0.8.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 (121) hide show
  1. package/README.md +24 -18
  2. package/build/cli.d.ts +3 -0
  3. package/build/cli.d.ts.map +1 -0
  4. package/build/cli.js +257 -0
  5. package/build/cli.js.map +1 -0
  6. package/build/config/api.d.ts +29 -0
  7. package/build/config/api.d.ts.map +1 -0
  8. package/{src → build}/config/api.js +4 -14
  9. package/build/config/api.js.map +1 -0
  10. package/build/config/constants.d.ts +17 -0
  11. package/build/config/constants.d.ts.map +1 -0
  12. package/{src → build}/config/constants.js +10 -10
  13. package/build/config/constants.js.map +1 -0
  14. package/build/config/defaults.d.ts +16 -0
  15. package/build/config/defaults.d.ts.map +1 -0
  16. package/build/config/defaults.js +60 -0
  17. package/build/config/defaults.js.map +1 -0
  18. package/build/config/files.d.ts +11 -0
  19. package/build/config/files.d.ts.map +1 -0
  20. package/{src → build}/config/files.js +1 -4
  21. package/build/config/files.js.map +1 -0
  22. package/build/config/index.d.ts +7 -0
  23. package/build/config/index.d.ts.map +1 -0
  24. package/{src → build}/config/index.js +1 -0
  25. package/build/config/index.js.map +1 -0
  26. package/build/config/options.d.ts +8 -0
  27. package/build/config/options.d.ts.map +1 -0
  28. package/{src → build}/config/options.js +7 -6
  29. package/build/config/options.js.map +1 -0
  30. package/build/config/strings.d.ts +35 -0
  31. package/build/config/strings.d.ts.map +1 -0
  32. package/{src → build}/config/strings.js +14 -19
  33. package/build/config/strings.js.map +1 -0
  34. package/build/directory_scanning.d.ts +26 -0
  35. package/build/directory_scanning.d.ts.map +1 -0
  36. package/{src → build}/directory_scanning.js +23 -36
  37. package/build/directory_scanning.js.map +1 -0
  38. package/build/generate_gitignore.d.ts +9 -0
  39. package/build/generate_gitignore.d.ts.map +1 -0
  40. package/{src → build}/generate_gitignore.js +21 -35
  41. package/build/generate_gitignore.js.map +1 -0
  42. package/build/generate_json.d.ts +18 -0
  43. package/build/generate_json.d.ts.map +1 -0
  44. package/build/generate_json.js +137 -0
  45. package/build/generate_json.js.map +1 -0
  46. package/build/generate_license.d.ts +11 -0
  47. package/build/generate_license.d.ts.map +1 -0
  48. package/build/generate_license.js +54 -0
  49. package/build/generate_license.js.map +1 -0
  50. package/build/generate_lockfile.d.ts +14 -0
  51. package/build/generate_lockfile.d.ts.map +1 -0
  52. package/{src → build}/generate_lockfile.js +19 -69
  53. package/build/generate_lockfile.js.map +1 -0
  54. package/build/generate_readme.d.ts +9 -0
  55. package/build/generate_readme.d.ts.map +1 -0
  56. package/{src → build}/generate_readme.js +46 -72
  57. package/build/generate_readme.js.map +1 -0
  58. package/build/github_interactions.d.ts +14 -0
  59. package/build/github_interactions.d.ts.map +1 -0
  60. package/{src → build}/github_interactions.js +16 -19
  61. package/build/github_interactions.js.map +1 -0
  62. package/build/logger.d.ts +96 -0
  63. package/build/logger.d.ts.map +1 -0
  64. package/{src → build}/logger.js +47 -55
  65. package/build/logger.js.map +1 -0
  66. package/build/modpack-lock.d.ts +25 -0
  67. package/build/modpack-lock.d.ts.map +1 -0
  68. package/build/modpack-lock.js +43 -0
  69. package/build/modpack-lock.js.map +1 -0
  70. package/build/modrinth_interactions.d.ts +31 -0
  71. package/build/modrinth_interactions.d.ts.map +1 -0
  72. package/{src → build}/modrinth_interactions.js +72 -55
  73. package/build/modrinth_interactions.js.map +1 -0
  74. package/build/types/Jsonfile.d.ts +26 -0
  75. package/build/types/Jsonfile.d.ts.map +1 -0
  76. package/build/types/Jsonfile.js +2 -0
  77. package/build/types/Jsonfile.js.map +1 -0
  78. package/build/types/Lockfile.d.ts +39 -0
  79. package/build/types/Lockfile.d.ts.map +1 -0
  80. package/build/types/Lockfile.js +2 -0
  81. package/build/types/Lockfile.js.map +1 -0
  82. package/build/types/ModpackInfo.d.ts +28 -0
  83. package/build/types/ModpackInfo.d.ts.map +1 -0
  84. package/build/types/ModpackInfo.js +2 -0
  85. package/build/types/ModpackInfo.js.map +1 -0
  86. package/build/types/OptionalFileOptions.d.ts +8 -0
  87. package/build/types/OptionalFileOptions.d.ts.map +1 -0
  88. package/build/types/OptionalFileOptions.js +2 -0
  89. package/build/types/OptionalFileOptions.js.map +1 -0
  90. package/build/types/contentFiles.d.ts +24 -0
  91. package/build/types/contentFiles.d.ts.map +1 -0
  92. package/build/types/contentFiles.js +2 -0
  93. package/build/types/contentFiles.js.map +1 -0
  94. package/build/types/githubResponses.d.ts +17 -0
  95. package/build/types/githubResponses.d.ts.map +1 -0
  96. package/build/types/githubResponses.js +2 -0
  97. package/build/types/githubResponses.js.map +1 -0
  98. package/build/types/index.d.ts +9 -0
  99. package/build/types/index.d.ts.map +1 -0
  100. package/build/types/index.js +2 -0
  101. package/build/types/index.js.map +1 -0
  102. package/build/types/modrinthResponses.d.ts +135 -0
  103. package/build/types/modrinthResponses.d.ts.map +1 -0
  104. package/build/types/modrinthResponses.js +2 -0
  105. package/build/types/modrinthResponses.js.map +1 -0
  106. package/build/types/options.d.ts +70 -0
  107. package/build/types/options.d.ts.map +1 -0
  108. package/build/types/options.js +2 -0
  109. package/build/types/options.js.map +1 -0
  110. package/build/user_prompts.d.ts +16 -0
  111. package/build/user_prompts.d.ts.map +1 -0
  112. package/build/user_prompts.js +132 -0
  113. package/build/user_prompts.js.map +1 -0
  114. package/package.json +13 -6
  115. package/src/cli.js +0 -310
  116. package/src/config/defaults.js +0 -66
  117. package/src/config/types.js +0 -76
  118. package/src/generate_json.js +0 -106
  119. package/src/generate_license.js +0 -54
  120. package/src/modpack-lock.js +0 -69
  121. package/src/modpack_info.js +0 -200
@@ -0,0 +1,137 @@
1
+ import fs from "fs/promises";
2
+ import path from "path";
3
+ import { getProjects } from "./modrinth_interactions.js";
4
+ import * as config from "./config/index.js";
5
+ import { logm } from "./logger.js";
6
+ /**
7
+ * Normalize dependencies from the legacy array-of-strings format to the
8
+ * current versioned-object format. Passes through objects unchanged.
9
+ * @param dependencies - The raw dependencies object from modpack.json
10
+ * @returns Normalized dependencies with {@link DependencyMap} entries per category
11
+ */
12
+ export function normalizeDependencies(dependencies) {
13
+ if (!dependencies || typeof dependencies !== "object")
14
+ return {};
15
+ const normalized = {};
16
+ for (const [key, entries] of Object.entries(dependencies)) {
17
+ const category = key;
18
+ if (Array.isArray(entries)) {
19
+ const map = {};
20
+ for (const entry of entries) {
21
+ map[entry] = "*";
22
+ }
23
+ normalized[category] = map;
24
+ }
25
+ else if (typeof entries === "object" && entries !== null) {
26
+ normalized[category] = entries;
27
+ }
28
+ else {
29
+ normalized[category] = {};
30
+ }
31
+ }
32
+ return normalized;
33
+ }
34
+ /**
35
+ * Create a JSON object from the modpack information and dependencies
36
+ */
37
+ function createModpackJson(modpackInfo, dependencies) {
38
+ return {
39
+ ...modpackInfo,
40
+ dependencies: dependencies,
41
+ };
42
+ }
43
+ /**
44
+ * Write modpack.json to disk
45
+ */
46
+ async function writeJson(jsonObject, outputPath) {
47
+ const content = JSON.stringify(jsonObject, null, 2);
48
+ await fs.writeFile(path.join(outputPath, config.MODPACK_JSON_NAME), content, "utf-8");
49
+ logm.generated(config.MODPACK_JSON_NAME, path.join(outputPath, config.MODPACK_JSON_NAME));
50
+ }
51
+ /**
52
+ * Generate a modpack.json file
53
+ * @param modpackInfo - The modpack information
54
+ * @param lockfile - The lockfile
55
+ * @param workingDir - The path to write the JSON object to
56
+ * @param options - The options object
57
+ * @returns The JSON file's object
58
+ */
59
+ export async function generateJson(modpackInfo, lockfile, workingDir, options = {}) {
60
+ logm.quietFromOptions(options);
61
+ // Validate modpack info
62
+ const missingFields = [];
63
+ for (const field of config.MODPACK_INFO_REQUIRED_FIELDS) {
64
+ if (!modpackInfo[field]) {
65
+ missingFields.push(field);
66
+ }
67
+ }
68
+ if (missingFields.length > 0) {
69
+ throw new Error(`Modpack info is missing required fields: ${missingFields.join(", ")}`);
70
+ }
71
+ //TODO: consider changing these to partial records and only initializing the categories that are present in the lockfile
72
+ const projectIds = {
73
+ mods: new Set(),
74
+ resourcepacks: new Set(),
75
+ datapacks: new Set(),
76
+ shaderpacks: new Set(),
77
+ };
78
+ const versionNumbers = {};
79
+ const packDependencies = {
80
+ mods: {},
81
+ resourcepacks: {},
82
+ datapacks: {},
83
+ shaderpacks: {},
84
+ };
85
+ // Collect project IDs and version numbers from lockfile
86
+ if (lockfile)
87
+ if (lockfile.dependencies) {
88
+ for (const category of config.DEPENDENCY_CATEGORIES) {
89
+ if (lockfile.dependencies[category]) {
90
+ // TODO: consider initializing the categories with an empty object/set here
91
+ for (const entry of lockfile.dependencies[category]) {
92
+ if (entry.version && entry.version.project_id) {
93
+ projectIds[category].add(entry.version.project_id);
94
+ versionNumbers[entry.version.project_id] = entry.version.version_number || "*";
95
+ }
96
+ else {
97
+ packDependencies[category][entry.path] = "*";
98
+ }
99
+ }
100
+ }
101
+ }
102
+ const allProjectIds = new Set();
103
+ for (const category of config.DEPENDENCY_CATEGORIES) {
104
+ for (const projectId of projectIds[category]) {
105
+ allProjectIds.add(projectId);
106
+ }
107
+ }
108
+ // Fetch projects from Modrinth
109
+ const projects = await getProjects(Array.from(allProjectIds));
110
+ const projectsMap = {};
111
+ for (const project of projects) {
112
+ if (project.id || project.slug) {
113
+ projectsMap[project.id] = project.slug || project.id;
114
+ }
115
+ }
116
+ // Add projects to dependencies by category with their version numbers
117
+ for (const category of config.DEPENDENCY_CATEGORIES) {
118
+ for (const projectId of projectIds[category]) {
119
+ const projectSlug = projectsMap[projectId];
120
+ if (projectSlug) {
121
+ packDependencies[category][projectSlug] = versionNumbers[projectId] || "*";
122
+ }
123
+ }
124
+ }
125
+ }
126
+ // Create modpack JSON object
127
+ const jsonObject = createModpackJson(modpackInfo, packDependencies);
128
+ // Write modpack JSON object to disk
129
+ if (options.dryRun) {
130
+ logm.debug(config.dryRunText(config.MODPACK_JSON_NAME, path.join(workingDir, config.MODPACK_JSON_NAME)));
131
+ }
132
+ else {
133
+ await writeJson(jsonObject, workingDir);
134
+ }
135
+ return jsonObject;
136
+ }
137
+ //# sourceMappingURL=generate_json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_json.js","sourceRoot":"","sources":["../src/generate_json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Jsonfile, Options, InitOptions } from "./types/index.js";
2
+ /**
3
+ * Generate a license file
4
+ * @param modpackInfo - The modpack information
5
+ * @param workingDir - The path to write the license to
6
+ * @param options - The options object
7
+ * @param licenseTextOverride - Text to override the license's default content
8
+ * @returns The license text or null if the license text could not be generated
9
+ */
10
+ export default function generateLicense(modpackInfo: Jsonfile, workingDir: string, options?: Options | InitOptions, licenseTextOverride?: string): Promise<string | null>;
11
+ //# sourceMappingURL=generate_license.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_license.d.ts","sourceRoot":"","sources":["../src/generate_license.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAOrE;;;;;;;GAOG;AACH,wBAA8B,eAAe,CACzC,WAAW,EAAE,QAAQ,EACrB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,OAAO,GAAG,WAAgB,EACnC,mBAAmB,CAAC,EAAE,MAAM,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuCxB"}
@@ -0,0 +1,54 @@
1
+ import fs from "fs/promises";
2
+ import path from "path";
3
+ import { getLicenseText } from "./github_interactions.js";
4
+ import * as config from "./config/index.js";
5
+ import { logm } from "./logger.js";
6
+ async function writeLicense(licenseText, outputPath) {
7
+ await fs.writeFile(path.join(outputPath, config.MODPACK_LICENSE_NAME), licenseText, "utf-8");
8
+ logm.generated(config.MODPACK_LICENSE_NAME, path.join(outputPath, config.MODPACK_LICENSE_NAME));
9
+ }
10
+ /**
11
+ * Generate a license file
12
+ * @param modpackInfo - The modpack information
13
+ * @param workingDir - The path to write the license to
14
+ * @param options - The options object
15
+ * @param licenseTextOverride - Text to override the license's default content
16
+ * @returns The license text or null if the license text could not be generated
17
+ */
18
+ export default async function generateLicense(modpackInfo, workingDir, options = {}, licenseTextOverride) {
19
+ logm.quietFromOptions(options);
20
+ try {
21
+ const spdxId = modpackInfo.license;
22
+ if (!spdxId) {
23
+ throw new Error("License ID is required to generate a license file");
24
+ }
25
+ let licenseText = licenseTextOverride || (await getLicenseText(spdxId));
26
+ if (!licenseText) {
27
+ throw new Error(`License text could not be generated for: ${spdxId}`);
28
+ }
29
+ licenseText = licenseText.replace("[year]", String(new Date().getFullYear()));
30
+ licenseText = licenseText.replace("{{year}}", String(new Date().getFullYear()));
31
+ if (modpackInfo.author) {
32
+ licenseText = licenseText.replace("[fullname]", modpackInfo.author);
33
+ licenseText = licenseText.replace("{{fullname}}", modpackInfo.author);
34
+ licenseText = licenseText.replace("[organization]", modpackInfo.author);
35
+ licenseText = licenseText.replace("{{organization}}", modpackInfo.author);
36
+ }
37
+ if (modpackInfo.name) {
38
+ licenseText = licenseText.replace("[project]", modpackInfo.name);
39
+ licenseText = licenseText.replace("{{project}}", modpackInfo.name);
40
+ }
41
+ if (options.dryRun) {
42
+ logm.debug(config.dryRunText(config.MODPACK_LICENSE_NAME, path.join(workingDir, config.MODPACK_LICENSE_NAME)));
43
+ }
44
+ else {
45
+ await writeLicense(licenseText, workingDir);
46
+ }
47
+ return licenseText;
48
+ }
49
+ catch {
50
+ logm.warn(`Unable to generate license for: ${modpackInfo.license}`);
51
+ return null;
52
+ }
53
+ }
54
+ //# sourceMappingURL=generate_license.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_license.js","sourceRoot":"","sources":["../src/generate_license.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Lockfile, Options, InitOptions } from "./types/index.js";
2
+ /**
3
+ * Generate the lockfile
4
+ * @param workingDir - The working directory
5
+ * @param options - The options object
6
+ * @returns The lockfile object
7
+ */
8
+ export declare function generateLockfile(workingDir: string, options?: Options | InitOptions): Promise<Lockfile>;
9
+ /**
10
+ * Print a summary of the lockfile contents
11
+ * @param lockfile - The lockfile object
12
+ */
13
+ export declare function printLockfileSummary(lockfile: Lockfile): void;
14
+ //# sourceMappingURL=generate_lockfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_lockfile.d.ts","sourceRoot":"","sources":["../src/generate_lockfile.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAER,QAAQ,EACR,OAAO,EACP,WAAW,EAId,MAAM,kBAAkB,CAAC;AA6D1B;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,GAAG,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqEjH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CA2B7D"}
@@ -1,16 +1,9 @@
1
1
  import fs from "fs/promises";
2
2
  import path from "path";
3
- import {getVersionsFromHashes} from "./modrinth_interactions.js";
4
- import {getScanDirectories, scanDirectory} from "./directory_scanning.js";
3
+ import { getVersionsFromHashes } from "./modrinth_interactions.js";
4
+ import { getScanDirectories, scanDirectory } from "./directory_scanning.js";
5
5
  import * as config from "./config/index.js";
6
- import {logm, styleText} from "./logger.js";
7
-
8
- /**
9
- * @typedef {import('./config/types.js').Options} Options
10
- * @typedef {import('./config/types.js').InitOptions} InitOptions
11
- * @typedef {import('./config/types.js').Lockfile} Lockfile
12
- */
13
-
6
+ import { logm, styleText } from "./logger.js";
14
7
  /**
15
8
  * Create empty lockfile structure
16
9
  */
@@ -23,44 +16,33 @@ function createEmptyLockfile() {
23
16
  dependencies: {},
24
17
  };
25
18
  }
26
-
27
19
  /**
28
20
  * Create lockfile structure from file info and version data
29
21
  */
30
22
  function createLockfile(fileEntries, versionData) {
31
23
  const lockfile = createEmptyLockfile();
32
-
33
24
  logm.newline();
34
25
  // Organize by category
35
26
  for (const fileInfo of fileEntries) {
36
27
  const version = versionData[fileInfo.hash];
37
-
38
28
  lockfile.dependencies[fileInfo.category] ||= [];
39
-
40
29
  const entry = {
41
30
  path: fileInfo.path,
42
31
  version: version || null,
43
32
  };
44
-
45
33
  if (!version) {
46
34
  logm.warn(`File ${fileInfo.path} not found on Modrinth`);
47
35
  }
48
-
49
- lockfile.dependencies[fileInfo.category].push(entry);
36
+ lockfile.dependencies[fileInfo.category]?.push(entry);
50
37
  }
51
-
52
38
  logm.header("Generating Lockfile");
53
-
54
39
  // Calculate counts for each category
55
40
  for (const [category, entries] of Object.entries(lockfile.dependencies)) {
56
41
  lockfile.counts[category] = entries.length;
57
42
  }
58
-
59
43
  lockfile.total = fileEntries.length;
60
-
61
44
  return lockfile;
62
45
  }
63
-
64
46
  /**
65
47
  * Write lockfile to disk
66
48
  */
@@ -69,39 +51,30 @@ async function writeLockfile(lockfile, outputPath) {
69
51
  await fs.writeFile(outputPath, content, "utf-8");
70
52
  logm.generated(config.MODPACK_LOCKFILE_NAME, outputPath);
71
53
  }
72
-
73
54
  /**
74
55
  * Generate the lockfile
75
- * @param {string} workingDir - The working directory
76
- * @param {Options} options - The options object
77
- * @returns {Lockfile} The lockfile object
56
+ * @param workingDir - The working directory
57
+ * @param options - The options object
58
+ * @returns The lockfile object
78
59
  */
79
60
  export async function generateLockfile(workingDir, options = {}) {
80
61
  logm.quietFromOptions(options);
81
-
82
62
  logm.header("Scanning Directories");
83
-
84
63
  // Scan all directories
85
64
  const allFileEntries = [];
86
65
  for (const dirInfo of getScanDirectories(workingDir)) {
87
66
  logm.info(styleText(["cyan"], `${dirInfo.name}/`));
88
67
  const fileEntries = await scanDirectory(dirInfo, workingDir);
89
- logm.info(
90
- styleText(["dim"], ` └─ Found`),
91
- styleText(["yellow"], `${fileEntries.length}`),
92
- styleText(["dim"], `file${fileEntries.length !== 1 ? "s" : ""}`),
93
- );
68
+ logm.info(styleText(["dim"], ` └─ Found`), styleText(["yellow"], `${fileEntries.length}`), styleText(["dim"], `file${fileEntries.length !== 1 ? "s" : ""}`));
94
69
  allFileEntries.push(...fileEntries);
95
70
  }
96
-
97
71
  // Sort file entries
98
72
  allFileEntries.sort((a, b) => {
99
73
  if (a.category !== b.category) {
100
- return a.category.localeCompare(b.category, "en", {sensitivity: "base"});
74
+ return a.category.localeCompare(b.category, "en", { sensitivity: "base" });
101
75
  }
102
- return a.path.localeCompare(b.path, "en", {numeric: true, sensitivity: "base"});
76
+ return a.path.localeCompare(b.path, "en", { numeric: true, sensitivity: "base" });
103
77
  });
104
-
105
78
  if (allFileEntries.length === 0) {
106
79
  logm.header("GENERATING LOCKFILE");
107
80
  logm.warn("No files found. Creating empty lockfile.");
@@ -109,70 +82,47 @@ export async function generateLockfile(workingDir, options = {}) {
109
82
  const outputPath = path.join(workingDir, config.MODPACK_LOCKFILE_NAME);
110
83
  if (options.dryRun) {
111
84
  logm.debug(config.dryRunText(config.MODPACK_LOCKFILE_NAME, outputPath));
112
- } else {
85
+ }
86
+ else {
113
87
  await writeLockfile(emptyLockfile, outputPath);
114
88
  }
115
89
  return emptyLockfile;
116
90
  }
117
-
118
91
  logm.info(styleText(["dim"], "Total:"), allFileEntries.length);
119
92
  logm.header("Querying Modrinth API");
120
-
121
93
  // Extract all hashes
122
94
  const hashes = allFileEntries.map((info) => info.hash);
123
-
124
95
  // Query Modrinth API
125
96
  const versionData = await getVersionsFromHashes(hashes);
126
-
127
97
  logm.info(styleText(["dim"], "Found version information for:"));
128
- logm.info(
129
- styleText(["dim"], " └─"),
130
- styleText(["green"], `${Object.keys(versionData).length}`),
131
- styleText(["dim"], "out of"),
132
- styleText(["yellow"], `${hashes.length}`),
133
- styleText(["dim"], "files"),
134
- );
135
-
98
+ logm.info(styleText(["dim"], " └─"), styleText(["green"], `${Object.keys(versionData).length}`), styleText(["dim"], "out of"), styleText(["yellow"], `${hashes.length}`), styleText(["dim"], "files"));
136
99
  // Create lockfile
137
100
  const lockfile = createLockfile(allFileEntries, versionData);
138
-
139
101
  // Write lockfile
140
102
  const outputPath = path.join(workingDir, config.MODPACK_LOCKFILE_NAME);
141
103
  if (options.dryRun) {
142
104
  logm.debug(config.dryRunText(config.MODPACK_LOCKFILE_NAME, outputPath));
143
- } else {
105
+ }
106
+ else {
144
107
  await writeLockfile(lockfile, outputPath);
145
108
  }
146
-
147
109
  return lockfile;
148
110
  }
149
-
150
111
  /**
151
112
  * Print a summary of the lockfile contents
152
- * @param {Lockfile} lockfile - The lockfile object
113
+ * @param lockfile - The lockfile object
153
114
  */
154
115
  export function printLockfileSummary(lockfile) {
155
116
  logm.header("Lockfile Summary");
156
-
157
117
  if (lockfile.total === 0) {
158
118
  logm.info(styleText(["dim"], "No files found. Empty lockfile created."));
159
119
  return;
160
120
  }
161
-
162
121
  for (const [category, entries] of Object.entries(lockfile.dependencies)) {
163
122
  const withVersion = entries.filter((e) => e.version !== null).length;
164
123
  const withoutVersion = entries.length - withVersion;
165
- logm.info(
166
- styleText(["bold"], `${category}:`),
167
- entries.length,
168
- styleText(["dim"], `file${entries.length !== 1 ? "s" : ""}`),
169
- );
170
- logm.info(
171
- styleText(["dim"], " └─"),
172
- styleText(["green"], String(withVersion)),
173
- styleText(["dim"], "found,"),
174
- styleText(["yellow"], String(withoutVersion)),
175
- styleText(["dim"], "unknown"),
176
- );
124
+ logm.info(styleText(["bold"], `${category}:`), entries.length, styleText(["dim"], `file${entries.length !== 1 ? "s" : ""}`));
125
+ logm.info(styleText(["dim"], " └─"), styleText(["green"], String(withVersion)), styleText(["dim"], "found,"), styleText(["yellow"], String(withoutVersion)), styleText(["dim"], "unknown"));
177
126
  }
178
127
  }
128
+ //# sourceMappingURL=generate_lockfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_lockfile.js","sourceRoot":"","sources":["../src/generate_lockfile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Options, InitOptions, Lockfile } from "./types/index.js";
2
+ /**
3
+ * Generate README.md files for each category
4
+ * @param lockfile - The lockfile object
5
+ * @param workingDir - The working directory
6
+ * @param options - The options object
7
+ */
8
+ export declare function generateReadmeFiles(lockfile: Lockfile, workingDir: string, options?: Options | InitOptions): Promise<void>;
9
+ //# sourceMappingURL=generate_readme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_readme.d.ts","sourceRoot":"","sources":["../src/generate_readme.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACR,OAAO,EACP,WAAW,EACX,QAAQ,EAMX,MAAM,kBAAkB,CAAC;AAuJ1B;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,OAAO,GAAG,WAAgB,GACpC,OAAO,CAAC,IAAI,CAAC,CAuEf"}