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.
- package/README.md +24 -18
- package/build/cli.d.ts +3 -0
- package/build/cli.d.ts.map +1 -0
- package/build/cli.js +257 -0
- package/build/cli.js.map +1 -0
- package/build/config/api.d.ts +29 -0
- package/build/config/api.d.ts.map +1 -0
- package/{src → build}/config/api.js +4 -14
- package/build/config/api.js.map +1 -0
- package/build/config/constants.d.ts +17 -0
- package/build/config/constants.d.ts.map +1 -0
- package/{src → build}/config/constants.js +10 -10
- package/build/config/constants.js.map +1 -0
- package/build/config/defaults.d.ts +16 -0
- package/build/config/defaults.d.ts.map +1 -0
- package/build/config/defaults.js +60 -0
- package/build/config/defaults.js.map +1 -0
- package/build/config/files.d.ts +11 -0
- package/build/config/files.d.ts.map +1 -0
- package/{src → build}/config/files.js +1 -4
- package/build/config/files.js.map +1 -0
- package/build/config/index.d.ts +7 -0
- package/build/config/index.d.ts.map +1 -0
- package/{src → build}/config/index.js +1 -0
- package/build/config/index.js.map +1 -0
- package/build/config/options.d.ts +8 -0
- package/build/config/options.d.ts.map +1 -0
- package/{src → build}/config/options.js +7 -6
- package/build/config/options.js.map +1 -0
- package/build/config/strings.d.ts +35 -0
- package/build/config/strings.d.ts.map +1 -0
- package/{src → build}/config/strings.js +14 -19
- package/build/config/strings.js.map +1 -0
- package/build/directory_scanning.d.ts +26 -0
- package/build/directory_scanning.d.ts.map +1 -0
- package/{src → build}/directory_scanning.js +23 -36
- package/build/directory_scanning.js.map +1 -0
- package/build/generate_gitignore.d.ts +9 -0
- package/build/generate_gitignore.d.ts.map +1 -0
- package/{src → build}/generate_gitignore.js +21 -35
- package/build/generate_gitignore.js.map +1 -0
- package/build/generate_json.d.ts +18 -0
- package/build/generate_json.d.ts.map +1 -0
- package/build/generate_json.js +137 -0
- package/build/generate_json.js.map +1 -0
- package/build/generate_license.d.ts +11 -0
- package/build/generate_license.d.ts.map +1 -0
- package/build/generate_license.js +54 -0
- package/build/generate_license.js.map +1 -0
- package/build/generate_lockfile.d.ts +14 -0
- package/build/generate_lockfile.d.ts.map +1 -0
- package/{src → build}/generate_lockfile.js +19 -69
- package/build/generate_lockfile.js.map +1 -0
- package/build/generate_readme.d.ts +9 -0
- package/build/generate_readme.d.ts.map +1 -0
- package/{src → build}/generate_readme.js +46 -72
- package/build/generate_readme.js.map +1 -0
- package/build/github_interactions.d.ts +14 -0
- package/build/github_interactions.d.ts.map +1 -0
- package/{src → build}/github_interactions.js +16 -19
- package/build/github_interactions.js.map +1 -0
- package/build/logger.d.ts +96 -0
- package/build/logger.d.ts.map +1 -0
- package/{src → build}/logger.js +47 -55
- package/build/logger.js.map +1 -0
- package/build/modpack-lock.d.ts +25 -0
- package/build/modpack-lock.d.ts.map +1 -0
- package/build/modpack-lock.js +43 -0
- package/build/modpack-lock.js.map +1 -0
- package/build/modrinth_interactions.d.ts +31 -0
- package/build/modrinth_interactions.d.ts.map +1 -0
- package/{src → build}/modrinth_interactions.js +72 -55
- package/build/modrinth_interactions.js.map +1 -0
- package/build/types/Jsonfile.d.ts +26 -0
- package/build/types/Jsonfile.d.ts.map +1 -0
- package/build/types/Jsonfile.js +2 -0
- package/build/types/Jsonfile.js.map +1 -0
- package/build/types/Lockfile.d.ts +39 -0
- package/build/types/Lockfile.d.ts.map +1 -0
- package/build/types/Lockfile.js +2 -0
- package/build/types/Lockfile.js.map +1 -0
- package/build/types/ModpackInfo.d.ts +28 -0
- package/build/types/ModpackInfo.d.ts.map +1 -0
- package/build/types/ModpackInfo.js +2 -0
- package/build/types/ModpackInfo.js.map +1 -0
- package/build/types/OptionalFileOptions.d.ts +8 -0
- package/build/types/OptionalFileOptions.d.ts.map +1 -0
- package/build/types/OptionalFileOptions.js +2 -0
- package/build/types/OptionalFileOptions.js.map +1 -0
- package/build/types/contentFiles.d.ts +24 -0
- package/build/types/contentFiles.d.ts.map +1 -0
- package/build/types/contentFiles.js +2 -0
- package/build/types/contentFiles.js.map +1 -0
- package/build/types/githubResponses.d.ts +17 -0
- package/build/types/githubResponses.d.ts.map +1 -0
- package/build/types/githubResponses.js +2 -0
- package/build/types/githubResponses.js.map +1 -0
- package/build/types/index.d.ts +9 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/index.js +2 -0
- package/build/types/index.js.map +1 -0
- package/build/types/modrinthResponses.d.ts +135 -0
- package/build/types/modrinthResponses.d.ts.map +1 -0
- package/build/types/modrinthResponses.js +2 -0
- package/build/types/modrinthResponses.js.map +1 -0
- package/build/types/options.d.ts +70 -0
- package/build/types/options.d.ts.map +1 -0
- package/build/types/options.js +2 -0
- package/build/types/options.js.map +1 -0
- package/build/user_prompts.d.ts +16 -0
- package/build/user_prompts.d.ts.map +1 -0
- package/build/user_prompts.js +132 -0
- package/build/user_prompts.js.map +1 -0
- package/package.json +13 -6
- package/src/cli.js +0 -310
- package/src/config/defaults.js +0 -66
- package/src/config/types.js +0 -76
- package/src/generate_json.js +0 -106
- package/src/generate_license.js +0 -54
- package/src/modpack-lock.js +0 -69
- 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":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AAGjC,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,UAAkB;IAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7F,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACpG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,eAAe,CACzC,WAAqB,EACrB,UAAkB,EAClB,UAAiC,EAAE,EACnC,mBAA4B;IAE5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE/B,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,WAAW,GAAG,mBAAmB,IAAI,CAAC,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4CAA4C,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC9E,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACrB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YACpE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YACtE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YACxE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;YACnB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACjE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CACN,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,CACrG,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACL,IAAI,CAAC,IAAI,CAAC,mCAAmC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
|
|
@@ -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
|
|
76
|
-
* @param
|
|
77
|
-
* @returns
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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
|
|
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
|
-
|
|
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"}
|