semantic-release-minecraft 2.0.9 → 2.0.11
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/.releaserc.json +11 -11
- package/CHANGELOG.md +21 -0
- package/dist/curseforge.d.ts.map +1 -1
- package/dist/curseforge.js +16 -14
- package/dist/curseforge.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -9
- package/dist/index.js.map +1 -1
- package/dist/modrinth.d.ts.map +1 -1
- package/dist/modrinth.js +23 -26
- package/dist/modrinth.js.map +1 -1
- package/dist/prepare.d.ts +1 -1
- package/dist/prepare.d.ts.map +1 -1
- package/dist/prepare.js +31 -22
- package/dist/prepare.js.map +1 -1
- package/package.json +1 -1
- package/src/curseforge.ts +29 -31
- package/src/index.ts +9 -17
- package/src/modrinth.ts +33 -43
- package/src/prepare.ts +80 -69
package/.releaserc.json
CHANGED
|
@@ -10,16 +10,16 @@
|
|
|
10
10
|
"preset": "conventionalcommits",
|
|
11
11
|
"presetConfig": {
|
|
12
12
|
"types": [
|
|
13
|
-
{ "type": "feat", "section": "✨
|
|
14
|
-
{ "type": "fix", "section": "🐛 Bug
|
|
15
|
-
{ "type": "docs", "section": "📚
|
|
16
|
-
{ "type": "style", "section": "💄
|
|
17
|
-
{ "type": "
|
|
18
|
-
{ "type": "perf", "section": "⚡
|
|
19
|
-
{ "type": "test", "section": "✅
|
|
20
|
-
{ "type": "build", "section": "📦
|
|
13
|
+
{ "type": "feat", "section": "✨ Features" },
|
|
14
|
+
{ "type": "fix", "section": "🐛 Bug Fixes" },
|
|
15
|
+
{ "type": "docs", "section": "📚 Documentation" },
|
|
16
|
+
{ "type": "style", "section": "💄 Style Improvements" },
|
|
17
|
+
{ "type": "ref", "section": "♻️ Code Refactoring" },
|
|
18
|
+
{ "type": "perf", "section": "⚡ Performance Improvements" },
|
|
19
|
+
{ "type": "test", "section": "✅ Tests" },
|
|
20
|
+
{ "type": "build", "section": "📦 Build System" },
|
|
21
21
|
{ "type": "ci", "section": "👷 CI/CD" },
|
|
22
|
-
{ "type": "chore", "section": "🔧
|
|
22
|
+
{ "type": "chore", "section": "🔧 Miscellaneous Changes" }
|
|
23
23
|
]
|
|
24
24
|
},
|
|
25
25
|
"parserOpts": {
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
}
|
|
42
42
|
]
|
|
43
43
|
],
|
|
44
|
-
"preset": "
|
|
44
|
+
"preset": "conventionalcommits",
|
|
45
45
|
"releaseRules": [
|
|
46
46
|
{
|
|
47
|
-
"type": "
|
|
47
|
+
"type": "ref",
|
|
48
48
|
"release": "patch"
|
|
49
49
|
},
|
|
50
50
|
{
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
## [2.0.11](https://github.com/pynickle/semantic-release-minecraft/compare/v2.0.10...v2.0.11) (2025-10-21)
|
|
2
|
+
|
|
3
|
+
### 🐛 Bug Fixes
|
|
4
|
+
|
|
5
|
+
* fix publish return value error ([7903c65](https://github.com/pynickle/semantic-release-minecraft/commit/7903c65076b0dfe634a35acec455011fc4127a98))
|
|
6
|
+
|
|
7
|
+
### 🔧 Miscellaneous Changes
|
|
8
|
+
|
|
9
|
+
* change changelog language to english ([454ddd0](https://github.com/pynickle/semantic-release-minecraft/commit/454ddd0ec58d3205ed5c97b73e954304d72b59d9))
|
|
10
|
+
|
|
11
|
+
## [2.0.10](https://github.com/pynickle/semantic-release-minecraft/compare/v2.0.9...v2.0.10) (2025-10-21)
|
|
12
|
+
|
|
13
|
+
### ♻️ 代码重构
|
|
14
|
+
|
|
15
|
+
* refactor code to make better understanding and performance ([f9f12da](https://github.com/pynickle/semantic-release-minecraft/commit/f9f12daac890b238848047e316b558fbc5d59389))
|
|
16
|
+
|
|
17
|
+
### 🔧 其他更改
|
|
18
|
+
|
|
19
|
+
* change preset to conventional commits and fix missing change of refactor ([06136f4](https://github.com/pynickle/semantic-release-minecraft/commit/06136f4c29e1ab6abe7101f130e734c05051a091))
|
|
20
|
+
* change refactor to ref ([c93ccb7](https://github.com/pynickle/semantic-release-minecraft/commit/c93ccb761452525e4a765137acdbbdd36b4fa18e))
|
|
21
|
+
|
|
1
22
|
## [2.0.9](https://github.com/pynickle/semantic-release-minecraft/compare/v2.0.8...v2.0.9) (2025-10-20)
|
|
2
23
|
|
|
3
24
|
### 🐛 Bug修复
|
package/dist/curseforge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curseforge.d.ts","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAO9D;;GAEG;AACH,wBAAsB,mBAAmB,CACrC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,wBAAwB,CAAC,EAAE,MAAM,EAAE,GACpC,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"curseforge.d.ts","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAO9D;;GAEG;AACH,wBAAsB,mBAAmB,CACrC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,wBAAwB,CAAC,EAAE,MAAM,EAAE,GACpC,OAAO,CAAC,MAAM,CAAC,CA6CjB"}
|
package/dist/curseforge.js
CHANGED
|
@@ -13,33 +13,35 @@ export async function publishToCurseforge(pluginConfig, context, strategy, curse
|
|
|
13
13
|
const projectId = curseforge.project_id;
|
|
14
14
|
const { files, primaryFile } = await findFilesAndPrimaryFile(pluginConfig, context, strategy, 'curseforge');
|
|
15
15
|
logger.log(`Publishing ${files.length} file(s) to CurseForge project ${projectId}...`);
|
|
16
|
-
|
|
16
|
+
const metadata = prepareMetadata(pluginConfig, context, strategy, curseforgeGameVersionIds);
|
|
17
|
+
let primaryFileId = await uploadCurseForgeFile(pluginConfig, context, metadata, primaryFile);
|
|
17
18
|
for (const filePath of files) {
|
|
18
19
|
if (filePath === primaryFile) {
|
|
19
20
|
continue;
|
|
20
21
|
}
|
|
21
|
-
await uploadCurseForgeFile(pluginConfig, context,
|
|
22
|
+
await uploadCurseForgeFile(pluginConfig, context, metadata, filePath, primaryFileId);
|
|
22
23
|
}
|
|
23
24
|
return primaryFileId;
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
27
|
* Uploads a single file to CurseForge.
|
|
27
28
|
*/
|
|
28
|
-
async function uploadCurseForgeFile(pluginConfig, context,
|
|
29
|
+
async function uploadCurseForgeFile(pluginConfig, context, metadata, filePath, primaryFileId) {
|
|
29
30
|
const { env, logger } = context;
|
|
30
31
|
const { curseforge } = pluginConfig;
|
|
31
32
|
const apiKey = env.CURSEFORGE_TOKEN;
|
|
32
33
|
const projectId = curseforge.project_id;
|
|
34
|
+
// add file to form data
|
|
33
35
|
const form = new FormData();
|
|
34
36
|
const file = readFileSync(filePath);
|
|
35
37
|
form.append('file', file, {
|
|
36
38
|
filename: basename(filePath),
|
|
37
39
|
});
|
|
38
|
-
const metadata = prepareMetadata(pluginConfig, context, strategy, curseforgeGameVersionIds);
|
|
39
40
|
if (primaryFileId) {
|
|
40
41
|
metadata.parentFileID = primaryFileId;
|
|
41
42
|
}
|
|
42
43
|
form.append('metadata', JSON.stringify(metadata));
|
|
44
|
+
// post to CurseForge API
|
|
43
45
|
const response = await axios.post(`https://upload.curseforge.com/api/projects/${projectId}/upload-file`, form, {
|
|
44
46
|
headers: {
|
|
45
47
|
...form.getHeaders(),
|
|
@@ -69,16 +71,16 @@ function prepareMetadata(pluginConfig, context, strategy, curseforgeGameVersionI
|
|
|
69
71
|
isMarkedForManualRelease: curseforge?.is_marked_for_manual_release || false,
|
|
70
72
|
relations: curseforge?.relations || [],
|
|
71
73
|
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
74
|
+
metadata.displayName =
|
|
75
|
+
resolveAndRenderTemplate([curseforge?.display_name, pluginConfig.display_name], {
|
|
76
|
+
nextRelease,
|
|
77
|
+
...strategy,
|
|
78
|
+
}) || context.nextRelease.name;
|
|
79
|
+
metadata.modLoaders =
|
|
80
|
+
resolveAndRenderTemplates([pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders], {
|
|
81
|
+
nextRelease,
|
|
82
|
+
...strategy,
|
|
83
|
+
}) || [];
|
|
82
84
|
return metadata;
|
|
83
85
|
}
|
|
84
86
|
//# sourceMappingURL=curseforge.js.map
|
package/dist/curseforge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curseforge.js","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACH,wBAAwB,EACxB,yBAAyB,GAC5B,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,YAA0B,EAC1B,OAAuB,EACvB,QAAgC,EAChC,wBAAmC;IAEnC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;IAEpC,MAAM,SAAS,GAAG,UAAW,CAAC,UAAW,CAAC;IAE1C,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,uBAAuB,CACxD,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,YAAY,CACf,CAAC;IACF,MAAM,CAAC,GAAG,CACN,cAAc,KAAK,CAAC,MAAM,kCAAkC,SAAS,KAAK,CAC7E,CAAC;IAEF,IAAI,aAAa,GAAG,MAAM,oBAAoB,CAC1C,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"curseforge.js","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,11 @@ import { PluginConfig } from './definitions/plugin-config.js';
|
|
|
3
3
|
export declare function verifyConditions(pluginConfig: PluginConfig, context: VerifyConditionsContext): Promise<void>;
|
|
4
4
|
export declare function prepare(pluginConfig: PluginConfig, context: PrepareContext): Promise<void>;
|
|
5
5
|
export declare function publish(pluginConfig: PluginConfig, context: PublishContext): Promise<{
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
curseforge: {
|
|
7
|
+
url: string;
|
|
8
|
+
}[];
|
|
9
|
+
modrinth: {
|
|
10
|
+
url: string;
|
|
11
|
+
}[];
|
|
12
|
+
}>;
|
|
8
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,cAAc,EACd,uBAAuB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAO9D,wBAAsB,gBAAgB,CAClC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,uBAAuB,iBAWnC;AAED,wBAAsB,OAAO,CACzB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,cAAc,EACd,uBAAuB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAO9D,wBAAsB,gBAAgB,CAClC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,uBAAuB,iBAWnC;AAED,wBAAsB,OAAO,CACzB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc,iBAe1B;AAED,wBAAsB,OAAO,CACzB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc;gBAGM;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE;cAAY;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE;GAsC9E"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { publishToCurseforge } from './curseforge.js';
|
|
|
2
2
|
import { publishToModrinth } from './modrinth.js';
|
|
3
3
|
import { getCurseForgeGameVersionIds } from './prepare.js';
|
|
4
4
|
// Game version IDs transformed from user's input, used during publishing to CurseForge
|
|
5
|
-
let
|
|
5
|
+
let curseforgeGameVersionsIdsPerStrategy = [];
|
|
6
6
|
export async function verifyConditions(pluginConfig, context) {
|
|
7
7
|
const { env } = context;
|
|
8
8
|
if (env.CURSEFORGE_TOKEN && !pluginConfig.curseforge?.project_id) {
|
|
@@ -17,19 +17,18 @@ export async function prepare(pluginConfig, context) {
|
|
|
17
17
|
if (env.CURSEFORGE_TOKEN) {
|
|
18
18
|
const apiToken = env.CURSEFORGE_TOKEN;
|
|
19
19
|
logger.log('Fetching CurseForge game versions and types...');
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
logger.log(`Successfully transform into ${Object.keys(curseforgeGameVersionsIds[0]).length} CurseForge game versions for every strategy`);
|
|
20
|
+
curseforgeGameVersionsIdsPerStrategy =
|
|
21
|
+
await getCurseForgeGameVersionIds(apiToken, pluginConfig, context);
|
|
22
|
+
logger.log(`Successfully transform into ${Object.keys(curseforgeGameVersionsIdsPerStrategy[0]).length} CurseForge game versions for each strategy`);
|
|
24
23
|
}
|
|
25
24
|
}
|
|
26
25
|
export async function publish(pluginConfig, context) {
|
|
27
26
|
const { env, logger } = context;
|
|
28
|
-
const results = [];
|
|
27
|
+
const results = { curseforge: [], modrinth: [] };
|
|
29
28
|
for (const [index, strategy] of (pluginConfig.strategies || [{}]).entries()) {
|
|
30
29
|
if (env.CURSEFORGE_TOKEN) {
|
|
31
|
-
const curseforgeId = await publishToCurseforge(pluginConfig, context, strategy,
|
|
32
|
-
results.push({
|
|
30
|
+
const curseforgeId = await publishToCurseforge(pluginConfig, context, strategy, curseforgeGameVersionsIdsPerStrategy[index]);
|
|
31
|
+
results.curseforge.push({
|
|
33
32
|
url: `https://www.curseforge.com/minecraft/mc-mods/${pluginConfig.curseforge.project_id}/files/${curseforgeId}`,
|
|
34
33
|
});
|
|
35
34
|
}
|
|
@@ -38,7 +37,7 @@ export async function publish(pluginConfig, context) {
|
|
|
38
37
|
}
|
|
39
38
|
if (env.MODRINTH_TOKEN) {
|
|
40
39
|
const modrinthId = await publishToModrinth(pluginConfig, context, strategy);
|
|
41
|
-
results.push({
|
|
40
|
+
results.modrinth.push({
|
|
42
41
|
url: `https://modrinth.com/mod/${pluginConfig.modrinth.project_id}/version/${modrinthId}`,
|
|
43
42
|
});
|
|
44
43
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAE3D,uFAAuF;AACvF,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAE3D,uFAAuF;AACvF,IAAI,oCAAoC,GAAoB,EAAE,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,YAA0B,EAC1B,OAAgC;IAEhC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAExB,IAAI,GAAG,CAAC,gBAAgB,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,GAAG,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CACzB,YAA0B,EAC1B,OAAuB;IAEvB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEhC,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAE7D,oCAAoC;YAChC,MAAM,2BAA2B,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAEvE,MAAM,CAAC,GAAG,CACN,+BAA+B,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,6CAA6C,CAC1I,CAAC;IACN,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CACzB,YAA0B,EAC1B,OAAuB;IAEvB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAChC,MAAM,OAAO,GAAkE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAEhH,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAC5B,YAAY,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,CAClC,CAAC,OAAO,EAAE,EAAE,CAAC;QACV,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAC1C,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,oCAAoC,CAAC,KAAK,CAAC,CAC9C,CAAC;YACF,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,GAAG,EAAE,gDAAgD,YAAY,CAAC,UAAW,CAAC,UAAU,UAAU,YAAY,EAAE;aACnH,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,GAAG,CACN,oFAAoF,CACvF,CAAC;QACN,CAAC;QAED,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CACtC,YAAY,EACZ,OAAO,EACP,QAAQ,CACX,CAAC;YACF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAClB,GAAG,EAAE,4BAA4B,YAAY,CAAC,QAAS,CAAC,UAAU,YAAY,UAAU,EAAE;aAC7F,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,GAAG,CACN,gFAAgF,CACnF,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
|
package/dist/modrinth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modrinth.d.ts","sourceRoot":"","sources":["../src/modrinth.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAO9D;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"modrinth.d.ts","sourceRoot":"","sources":["../src/modrinth.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAO9D;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,CAmJjB"}
|
package/dist/modrinth.js
CHANGED
|
@@ -51,26 +51,26 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
|
|
|
51
51
|
if (changelog) {
|
|
52
52
|
versionData.changelog = changelog;
|
|
53
53
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
54
|
+
versionData.name =
|
|
55
|
+
resolveAndRenderTemplate([modrinth?.display_name, pluginConfig.display_name], {
|
|
56
|
+
nextRelease,
|
|
57
|
+
...strategy,
|
|
58
|
+
}) || nextRelease.name;
|
|
59
|
+
versionData.version_number =
|
|
60
|
+
resolveAndRenderTemplate([modrinth?.version_number], {
|
|
61
|
+
nextRelease,
|
|
62
|
+
...strategy,
|
|
63
|
+
}) || nextRelease.version;
|
|
64
|
+
versionData.game_versions =
|
|
65
|
+
resolveAndRenderTemplates([modrinth?.game_versions, pluginConfig.game_versions], {
|
|
66
|
+
nextRelease,
|
|
67
|
+
...strategy,
|
|
68
|
+
}) || [];
|
|
69
|
+
versionData.loaders =
|
|
70
|
+
resolveAndRenderTemplates([modrinth?.mod_loaders, pluginConfig.mod_loaders], {
|
|
71
|
+
nextRelease,
|
|
72
|
+
...strategy,
|
|
73
|
+
}) || [];
|
|
74
74
|
form.append('data', JSON.stringify(versionData), {
|
|
75
75
|
contentType: 'application/json',
|
|
76
76
|
});
|
|
@@ -82,10 +82,6 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
|
|
|
82
82
|
}
|
|
83
83
|
const headers = form.getHeaders();
|
|
84
84
|
headers['Content-Length'] = form.getLengthSync();
|
|
85
|
-
for (const [key, value] of Object.entries(versionData)) {
|
|
86
|
-
logger.log(key, value);
|
|
87
|
-
}
|
|
88
|
-
logger.log(JSON.stringify(versionData));
|
|
89
85
|
const versionResponse = await axios.post('https://api.modrinth.com/v2/version', form, {
|
|
90
86
|
headers: {
|
|
91
87
|
...headers,
|
|
@@ -93,7 +89,6 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
|
|
|
93
89
|
},
|
|
94
90
|
validateStatus: (status) => status < 500,
|
|
95
91
|
});
|
|
96
|
-
form.append('data', JSON.stringify(versionData));
|
|
97
92
|
const resData = versionResponse.data;
|
|
98
93
|
if (versionResponse.status === 200) {
|
|
99
94
|
logger.log(`Successfully published to Modrinth: ${resData.project_id} (File ID: ${resData.file_id})`);
|
|
@@ -104,7 +99,9 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
|
|
|
104
99
|
throw new Error(`Failed to publish to Modrinth (${versionResponse.status}): ${resData.error}\n${resData.description}`);
|
|
105
100
|
}
|
|
106
101
|
else {
|
|
107
|
-
|
|
102
|
+
logger.log('Headers:', versionResponse.headers);
|
|
103
|
+
logger.log('Data:', resData);
|
|
104
|
+
throw new Error(`Failed to publish to Modrinth (${versionResponse.status}): ${versionResponse.statusText}`);
|
|
108
105
|
}
|
|
109
106
|
}
|
|
110
107
|
//# sourceMappingURL=modrinth.js.map
|
package/dist/modrinth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modrinth.js","sourceRoot":"","sources":["../src/modrinth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACH,wBAAwB,EACxB,yBAAyB,GAC5B,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,YAA0B,EAC1B,OAAuB,EACvB,QAAgC;IAEhC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,cAAe,CAAC;IAClC,MAAM,SAAS,GAAG,QAAQ,EAAE,UAAW,CAAC;IAExC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,uBAAuB,CACxD,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,UAAU,CACb,CAAC;IACF,MAAM,CAAC,GAAG,CACN,cAAc,KAAK,CAAC,MAAM,gCAAgC,SAAS,KAAK,CAC3E,CAAC;IAEF,2DAA2D;IAC3D,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAE5B,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,mBAAmB,GAAuB,SAAS,CAAC;IACxD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzB,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC;QAEjC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEjC,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC3B,mBAAmB,GAAG,YAAY,CAAC;QACvC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAQ;QACrB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,YAAY,CAAC,YAAY,IAAI,SAAS;QACpD,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,EAAE;QAC1C,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,KAAK;QACrC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,QAAQ;QACpC,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,IAAI,QAAQ;KAC3D,CAAC;IAEF,IAAI,mBAAmB,EAAE,CAAC;QACtB,WAAW,CAAC,YAAY,GAAG,mBAAmB,CAAC;IACnD,CAAC;IAED,MAAM,SAAS,GAAG,wBAAwB,CACtC,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,EACxC;QACI,WAAW;QACX,GAAG,QAAQ;KACd,CACJ,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACZ,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"modrinth.js","sourceRoot":"","sources":["../src/modrinth.ts"],"names":[],"mappings":"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"}
|
package/dist/prepare.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ import { PluginConfig } from './definitions/plugin-config.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Get CurseForge game version IDs based on the plugin configuration.
|
|
5
5
|
*/
|
|
6
|
-
export declare function getCurseForgeGameVersionIds(apiToken: string, pluginConfig: PluginConfig, context: PrepareContext
|
|
6
|
+
export declare function getCurseForgeGameVersionIds(apiToken: string, pluginConfig: PluginConfig, context: PrepareContext): Promise<Array<number[]>>;
|
|
7
7
|
//# sourceMappingURL=prepare.d.ts.map
|
package/dist/prepare.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOlD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI9D;;GAEG;AACH,wBAAsB,2BAA2B,CAC7C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOlD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI9D;;GAEG;AACH,wBAAsB,2BAA2B,CAC7C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAqF1B"}
|
package/dist/prepare.js
CHANGED
|
@@ -5,31 +5,40 @@ import { toArray } from './utils/utils.js';
|
|
|
5
5
|
/**
|
|
6
6
|
* Get CurseForge game version IDs based on the plugin configuration.
|
|
7
7
|
*/
|
|
8
|
-
export async function getCurseForgeGameVersionIds(apiToken, pluginConfig, context
|
|
8
|
+
export async function getCurseForgeGameVersionIds(apiToken, pluginConfig, context) {
|
|
9
9
|
const { nextRelease } = context;
|
|
10
10
|
const curseforgeConfig = pluginConfig.curseforge;
|
|
11
|
-
const modLoaders = resolveAndRenderTemplates([pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders], {
|
|
12
|
-
nextRelease,
|
|
13
|
-
...strategy,
|
|
14
|
-
}) || [];
|
|
15
|
-
const javaVersions = toArray(curseforgeConfig.java_versions);
|
|
16
|
-
const gameVersions = toArray(curseforgeConfig.game_versions || pluginConfig.game_versions);
|
|
17
|
-
const pluginGameVersions = toArray(curseforgeConfig.game_versions_for_plugins);
|
|
18
|
-
const addonGameVersions = toArray(curseforgeConfig.game_versions_for_addon);
|
|
19
|
-
const environments = toArray(curseforgeConfig.environments);
|
|
20
11
|
const map = await createCurseForgeGameVersionMap(apiToken);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
12
|
+
let curseforgeGameVersionsIdsPerStrategy = [];
|
|
13
|
+
for (const strategy of pluginConfig.strategies || [{}]) {
|
|
14
|
+
// fetch plugin config values with template rendering
|
|
15
|
+
const modLoaders = resolveAndRenderTemplates([
|
|
16
|
+
pluginConfig.curseforge?.mod_loaders,
|
|
17
|
+
pluginConfig.mod_loaders,
|
|
18
|
+
], {
|
|
19
|
+
nextRelease,
|
|
20
|
+
...strategy,
|
|
21
|
+
}) || [];
|
|
22
|
+
const javaVersions = toArray(curseforgeConfig.java_versions);
|
|
23
|
+
const gameVersions = toArray(curseforgeConfig.game_versions || pluginConfig.game_versions);
|
|
24
|
+
const pluginGameVersions = toArray(curseforgeConfig.game_versions_for_plugins);
|
|
25
|
+
const addonGameVersions = toArray(curseforgeConfig.game_versions_for_addon);
|
|
26
|
+
const environments = toArray(curseforgeConfig.environments);
|
|
27
|
+
const javaVersionNames = javaVersions.map((javaVersion) => `Java ${javaVersion}`);
|
|
28
|
+
// TODO: Modrinth 和 CurseForge 的游戏版本命名格式转化,以 Modrinth 为基准
|
|
29
|
+
// const gameVersionNames = gameVersions.map(x => formatCurseForgeGameVersionSnapshot(x));
|
|
30
|
+
// get CurseForge game version IDs from mapped game versions
|
|
31
|
+
const gameVersionIds = findCurseForgeGameVersionIdsByNames(map.game_versions, gameVersions);
|
|
32
|
+
const loaderIds = findCurseForgeGameVersionIdsByNames(map.loaders, modLoaders);
|
|
33
|
+
const javaIds = findCurseForgeGameVersionIdsByNames(map.java_versions, javaVersionNames);
|
|
34
|
+
const pluginGameVersionIds = findCurseForgeGameVersionIdsByNames(map.game_versions_for_plugins, pluginGameVersions);
|
|
35
|
+
const addonGameVersionIds = findCurseForgeGameVersionIdsByNames(map.game_versions_for_addons, addonGameVersions);
|
|
36
|
+
const environmentIds = findCurseForgeGameVersionIdsByNames(map.environments, environments);
|
|
37
|
+
const curseforgeGameVersionIds = [];
|
|
38
|
+
curseforgeGameVersionIds.push(...gameVersionIds, ...loaderIds, ...javaIds, ...pluginGameVersionIds, ...addonGameVersionIds, ...environmentIds);
|
|
39
|
+
curseforgeGameVersionsIdsPerStrategy.push(curseforgeGameVersionIds);
|
|
40
|
+
}
|
|
41
|
+
return curseforgeGameVersionsIdsPerStrategy;
|
|
33
42
|
}
|
|
34
43
|
/**
|
|
35
44
|
* Create a CurseForge game version map by categorizing game versions based on their type names.
|
package/dist/prepare.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACH,wBAAwB,GAI3B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC7C,QAAgB,EAChB,YAA0B,EAC1B,OAAuB
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/curseforge.ts
CHANGED
|
@@ -34,11 +34,17 @@ export async function publishToCurseforge(
|
|
|
34
34
|
`Publishing ${files.length} file(s) to CurseForge project ${projectId}...`
|
|
35
35
|
);
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
const metadata = prepareMetadata(
|
|
38
38
|
pluginConfig,
|
|
39
39
|
context,
|
|
40
40
|
strategy,
|
|
41
|
-
curseforgeGameVersionIds
|
|
41
|
+
curseforgeGameVersionIds
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
let primaryFileId = await uploadCurseForgeFile(
|
|
45
|
+
pluginConfig,
|
|
46
|
+
context,
|
|
47
|
+
metadata,
|
|
42
48
|
primaryFile
|
|
43
49
|
);
|
|
44
50
|
|
|
@@ -50,8 +56,7 @@ export async function publishToCurseforge(
|
|
|
50
56
|
await uploadCurseForgeFile(
|
|
51
57
|
pluginConfig,
|
|
52
58
|
context,
|
|
53
|
-
|
|
54
|
-
curseforgeGameVersionIds,
|
|
59
|
+
metadata,
|
|
55
60
|
filePath,
|
|
56
61
|
primaryFileId
|
|
57
62
|
);
|
|
@@ -66,8 +71,7 @@ export async function publishToCurseforge(
|
|
|
66
71
|
async function uploadCurseForgeFile(
|
|
67
72
|
pluginConfig: PluginConfig,
|
|
68
73
|
context: PublishContext,
|
|
69
|
-
|
|
70
|
-
curseforgeGameVersionIds: number[] | undefined,
|
|
74
|
+
metadata: any,
|
|
71
75
|
filePath: string,
|
|
72
76
|
primaryFileId?: number
|
|
73
77
|
): Promise<number> {
|
|
@@ -77,25 +81,20 @@ async function uploadCurseForgeFile(
|
|
|
77
81
|
const apiKey = env.CURSEFORGE_TOKEN!;
|
|
78
82
|
const projectId = curseforge!.project_id!;
|
|
79
83
|
|
|
84
|
+
// add file to form data
|
|
80
85
|
const form = new FormData();
|
|
81
86
|
const file = readFileSync(filePath);
|
|
82
87
|
form.append('file', file, {
|
|
83
88
|
filename: basename(filePath),
|
|
84
89
|
});
|
|
85
90
|
|
|
86
|
-
const metadata = prepareMetadata(
|
|
87
|
-
pluginConfig,
|
|
88
|
-
context,
|
|
89
|
-
strategy,
|
|
90
|
-
curseforgeGameVersionIds
|
|
91
|
-
);
|
|
92
|
-
|
|
93
91
|
if (primaryFileId) {
|
|
94
92
|
metadata.parentFileID = primaryFileId;
|
|
95
93
|
}
|
|
96
94
|
|
|
97
95
|
form.append('metadata', JSON.stringify(metadata));
|
|
98
96
|
|
|
97
|
+
// post to CurseForge API
|
|
99
98
|
const response = await axios.post(
|
|
100
99
|
`https://upload.curseforge.com/api/projects/${projectId}/upload-file`,
|
|
101
100
|
form,
|
|
@@ -142,24 +141,23 @@ function prepareMetadata(
|
|
|
142
141
|
relations: curseforge?.relations || [],
|
|
143
142
|
};
|
|
144
143
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
metadata.modLoaders = modLoaders || [];
|
|
144
|
+
metadata.displayName =
|
|
145
|
+
resolveAndRenderTemplate(
|
|
146
|
+
[curseforge?.display_name, pluginConfig.display_name],
|
|
147
|
+
{
|
|
148
|
+
nextRelease,
|
|
149
|
+
...strategy,
|
|
150
|
+
}
|
|
151
|
+
) || context.nextRelease.name;
|
|
152
|
+
|
|
153
|
+
metadata.modLoaders =
|
|
154
|
+
resolveAndRenderTemplates(
|
|
155
|
+
[pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders],
|
|
156
|
+
{
|
|
157
|
+
nextRelease,
|
|
158
|
+
...strategy,
|
|
159
|
+
}
|
|
160
|
+
) || [];
|
|
163
161
|
|
|
164
162
|
return metadata;
|
|
165
163
|
}
|
package/src/index.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { publishToModrinth } from './modrinth.js';
|
|
|
9
9
|
import { getCurseForgeGameVersionIds } from './prepare.js';
|
|
10
10
|
|
|
11
11
|
// Game version IDs transformed from user's input, used during publishing to CurseForge
|
|
12
|
-
let
|
|
12
|
+
let curseforgeGameVersionsIdsPerStrategy: Array<number[]> = [];
|
|
13
13
|
|
|
14
14
|
export async function verifyConditions(
|
|
15
15
|
pluginConfig: PluginConfig,
|
|
@@ -36,19 +36,11 @@ export async function prepare(
|
|
|
36
36
|
const apiToken = env.CURSEFORGE_TOKEN;
|
|
37
37
|
logger.log('Fetching CurseForge game versions and types...');
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
await getCurseForgeGameVersionIds(
|
|
42
|
-
apiToken,
|
|
43
|
-
pluginConfig,
|
|
44
|
-
context,
|
|
45
|
-
strategy
|
|
46
|
-
)
|
|
47
|
-
);
|
|
48
|
-
}
|
|
39
|
+
curseforgeGameVersionsIdsPerStrategy =
|
|
40
|
+
await getCurseForgeGameVersionIds(apiToken, pluginConfig, context);
|
|
49
41
|
|
|
50
42
|
logger.log(
|
|
51
|
-
`Successfully transform into ${Object.keys(
|
|
43
|
+
`Successfully transform into ${Object.keys(curseforgeGameVersionsIdsPerStrategy[0]).length} CurseForge game versions for each strategy`
|
|
52
44
|
);
|
|
53
45
|
}
|
|
54
46
|
}
|
|
@@ -56,9 +48,9 @@ export async function prepare(
|
|
|
56
48
|
export async function publish(
|
|
57
49
|
pluginConfig: PluginConfig,
|
|
58
50
|
context: PublishContext
|
|
59
|
-
)
|
|
51
|
+
) {
|
|
60
52
|
const { env, logger } = context;
|
|
61
|
-
const results: { url: string }[] = [];
|
|
53
|
+
const results: { curseforge: { url: string }[], modrinth: { url: string }[]} = { curseforge: [], modrinth: [] };
|
|
62
54
|
|
|
63
55
|
for (const [index, strategy] of (
|
|
64
56
|
pluginConfig.strategies || [{}]
|
|
@@ -68,9 +60,9 @@ export async function publish(
|
|
|
68
60
|
pluginConfig,
|
|
69
61
|
context,
|
|
70
62
|
strategy,
|
|
71
|
-
|
|
63
|
+
curseforgeGameVersionsIdsPerStrategy[index]
|
|
72
64
|
);
|
|
73
|
-
results.push({
|
|
65
|
+
results.curseforge.push({
|
|
74
66
|
url: `https://www.curseforge.com/minecraft/mc-mods/${pluginConfig.curseforge!.project_id}/files/${curseforgeId}`,
|
|
75
67
|
});
|
|
76
68
|
} else {
|
|
@@ -85,7 +77,7 @@ export async function publish(
|
|
|
85
77
|
context,
|
|
86
78
|
strategy
|
|
87
79
|
);
|
|
88
|
-
results.push({
|
|
80
|
+
results.modrinth.push({
|
|
89
81
|
url: `https://modrinth.com/mod/${pluginConfig.modrinth!.project_id}/version/${modrinthId}`,
|
|
90
82
|
});
|
|
91
83
|
} else {
|
package/src/modrinth.ts
CHANGED
|
@@ -83,42 +83,38 @@ export async function publishToModrinth(
|
|
|
83
83
|
versionData.changelog = changelog;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
nextRelease,
|
|
98
|
-
...strategy,
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
versionData.version_number = versionNumber || nextRelease.version;
|
|
102
|
-
|
|
103
|
-
const gameVersions = resolveAndRenderTemplates(
|
|
104
|
-
[modrinth?.game_versions, pluginConfig.game_versions],
|
|
105
|
-
{
|
|
106
|
-
nextRelease,
|
|
107
|
-
...strategy,
|
|
108
|
-
}
|
|
109
|
-
);
|
|
110
|
-
|
|
111
|
-
versionData.game_versions = gameVersions || [];
|
|
112
|
-
|
|
113
|
-
const modLoaders = resolveAndRenderTemplates(
|
|
114
|
-
[modrinth?.mod_loaders, pluginConfig.mod_loaders],
|
|
115
|
-
{
|
|
86
|
+
versionData.name =
|
|
87
|
+
resolveAndRenderTemplate(
|
|
88
|
+
[modrinth?.display_name, pluginConfig.display_name],
|
|
89
|
+
{
|
|
90
|
+
nextRelease,
|
|
91
|
+
...strategy,
|
|
92
|
+
}
|
|
93
|
+
) || nextRelease.name;
|
|
94
|
+
|
|
95
|
+
versionData.version_number =
|
|
96
|
+
resolveAndRenderTemplate([modrinth?.version_number], {
|
|
116
97
|
nextRelease,
|
|
117
98
|
...strategy,
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
99
|
+
}) || nextRelease.version;
|
|
100
|
+
|
|
101
|
+
versionData.game_versions =
|
|
102
|
+
resolveAndRenderTemplates(
|
|
103
|
+
[modrinth?.game_versions, pluginConfig.game_versions],
|
|
104
|
+
{
|
|
105
|
+
nextRelease,
|
|
106
|
+
...strategy,
|
|
107
|
+
}
|
|
108
|
+
) || [];
|
|
109
|
+
|
|
110
|
+
versionData.loaders =
|
|
111
|
+
resolveAndRenderTemplates(
|
|
112
|
+
[modrinth?.mod_loaders, pluginConfig.mod_loaders],
|
|
113
|
+
{
|
|
114
|
+
nextRelease,
|
|
115
|
+
...strategy,
|
|
116
|
+
}
|
|
117
|
+
) || [];
|
|
122
118
|
|
|
123
119
|
form.append('data', JSON.stringify(versionData), {
|
|
124
120
|
contentType: 'application/json',
|
|
@@ -135,12 +131,6 @@ export async function publishToModrinth(
|
|
|
135
131
|
const headers = form.getHeaders();
|
|
136
132
|
headers['Content-Length'] = form.getLengthSync();
|
|
137
133
|
|
|
138
|
-
for (const [key, value] of Object.entries(versionData)) {
|
|
139
|
-
logger.log(key, value);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
logger.log(JSON.stringify(versionData));
|
|
143
|
-
|
|
144
134
|
const versionResponse = await axios.post(
|
|
145
135
|
'https://api.modrinth.com/v2/version',
|
|
146
136
|
form,
|
|
@@ -153,8 +143,6 @@ export async function publishToModrinth(
|
|
|
153
143
|
}
|
|
154
144
|
);
|
|
155
145
|
|
|
156
|
-
form.append('data', JSON.stringify(versionData));
|
|
157
|
-
|
|
158
146
|
const resData = versionResponse.data;
|
|
159
147
|
|
|
160
148
|
if (versionResponse.status === 200) {
|
|
@@ -170,8 +158,10 @@ export async function publishToModrinth(
|
|
|
170
158
|
`Failed to publish to Modrinth (${versionResponse.status}): ${resData.error}\n${resData.description}`
|
|
171
159
|
);
|
|
172
160
|
} else {
|
|
161
|
+
logger.log('Headers:', versionResponse.headers);
|
|
162
|
+
logger.log('Data:', resData);
|
|
173
163
|
throw new Error(
|
|
174
|
-
`Failed to publish to Modrinth (${versionResponse.status}): ${
|
|
164
|
+
`Failed to publish to Modrinth (${versionResponse.status}): ${versionResponse.statusText}`
|
|
175
165
|
);
|
|
176
166
|
}
|
|
177
167
|
}
|
package/src/prepare.ts
CHANGED
|
@@ -16,81 +16,92 @@ import { toArray } from './utils/utils.js';
|
|
|
16
16
|
export async function getCurseForgeGameVersionIds(
|
|
17
17
|
apiToken: string,
|
|
18
18
|
pluginConfig: PluginConfig,
|
|
19
|
-
context: PrepareContext
|
|
20
|
-
|
|
21
|
-
): Promise<number[]> {
|
|
19
|
+
context: PrepareContext
|
|
20
|
+
): Promise<Array<number[]>> {
|
|
22
21
|
const { nextRelease } = context;
|
|
23
22
|
|
|
24
23
|
const curseforgeConfig = pluginConfig.curseforge!;
|
|
25
24
|
|
|
26
|
-
const modLoaders =
|
|
27
|
-
resolveAndRenderTemplates(
|
|
28
|
-
[pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders],
|
|
29
|
-
{
|
|
30
|
-
nextRelease,
|
|
31
|
-
...strategy,
|
|
32
|
-
}
|
|
33
|
-
) || [];
|
|
34
|
-
|
|
35
|
-
const javaVersions = toArray(curseforgeConfig.java_versions);
|
|
36
|
-
const gameVersions = toArray(
|
|
37
|
-
curseforgeConfig.game_versions || pluginConfig.game_versions
|
|
38
|
-
);
|
|
39
|
-
const pluginGameVersions = toArray(
|
|
40
|
-
curseforgeConfig.game_versions_for_plugins
|
|
41
|
-
);
|
|
42
|
-
const addonGameVersions = toArray(curseforgeConfig.game_versions_for_addon);
|
|
43
|
-
const environments = toArray(curseforgeConfig.environments);
|
|
44
|
-
|
|
45
25
|
const map = await createCurseForgeGameVersionMap(apiToken);
|
|
46
26
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
map
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
map
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
27
|
+
let curseforgeGameVersionsIdsPerStrategy: Array<number[]> = [];
|
|
28
|
+
|
|
29
|
+
for (const strategy of pluginConfig.strategies || [{}]) {
|
|
30
|
+
// fetch plugin config values with template rendering
|
|
31
|
+
const modLoaders =
|
|
32
|
+
resolveAndRenderTemplates(
|
|
33
|
+
[
|
|
34
|
+
pluginConfig.curseforge?.mod_loaders,
|
|
35
|
+
pluginConfig.mod_loaders,
|
|
36
|
+
],
|
|
37
|
+
{
|
|
38
|
+
nextRelease,
|
|
39
|
+
...strategy,
|
|
40
|
+
}
|
|
41
|
+
) || [];
|
|
42
|
+
|
|
43
|
+
const javaVersions = toArray(curseforgeConfig.java_versions);
|
|
44
|
+
const gameVersions = toArray(
|
|
45
|
+
curseforgeConfig.game_versions || pluginConfig.game_versions
|
|
46
|
+
);
|
|
47
|
+
const pluginGameVersions = toArray(
|
|
48
|
+
curseforgeConfig.game_versions_for_plugins
|
|
49
|
+
);
|
|
50
|
+
const addonGameVersions = toArray(
|
|
51
|
+
curseforgeConfig.game_versions_for_addon
|
|
52
|
+
);
|
|
53
|
+
const environments = toArray(curseforgeConfig.environments);
|
|
54
|
+
|
|
55
|
+
const javaVersionNames = javaVersions.map(
|
|
56
|
+
(javaVersion: string) => `Java ${javaVersion}`
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
// TODO: Modrinth 和 CurseForge 的游戏版本命名格式转化,以 Modrinth 为基准
|
|
60
|
+
// const gameVersionNames = gameVersions.map(x => formatCurseForgeGameVersionSnapshot(x));
|
|
61
|
+
|
|
62
|
+
// get CurseForge game version IDs from mapped game versions
|
|
63
|
+
const gameVersionIds = findCurseForgeGameVersionIdsByNames(
|
|
64
|
+
map.game_versions,
|
|
65
|
+
gameVersions
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
const loaderIds = findCurseForgeGameVersionIdsByNames(
|
|
69
|
+
map.loaders,
|
|
70
|
+
modLoaders
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const javaIds = findCurseForgeGameVersionIdsByNames(
|
|
74
|
+
map.java_versions,
|
|
75
|
+
javaVersionNames
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
const pluginGameVersionIds = findCurseForgeGameVersionIdsByNames(
|
|
79
|
+
map.game_versions_for_plugins,
|
|
80
|
+
pluginGameVersions
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
const addonGameVersionIds = findCurseForgeGameVersionIdsByNames(
|
|
84
|
+
map.game_versions_for_addons,
|
|
85
|
+
addonGameVersions
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
const environmentIds = findCurseForgeGameVersionIdsByNames(
|
|
89
|
+
map.environments,
|
|
90
|
+
environments
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
const curseforgeGameVersionIds: number[] = [];
|
|
94
|
+
curseforgeGameVersionIds.push(
|
|
95
|
+
...gameVersionIds,
|
|
96
|
+
...loaderIds,
|
|
97
|
+
...javaIds,
|
|
98
|
+
...pluginGameVersionIds,
|
|
99
|
+
...addonGameVersionIds,
|
|
100
|
+
...environmentIds
|
|
101
|
+
);
|
|
102
|
+
curseforgeGameVersionsIdsPerStrategy.push(curseforgeGameVersionIds);
|
|
103
|
+
}
|
|
104
|
+
return curseforgeGameVersionsIdsPerStrategy;
|
|
94
105
|
}
|
|
95
106
|
|
|
96
107
|
/**
|