semantic-release-minecraft 2.0.2 → 2.0.4
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/CHANGELOG.md +13 -0
- package/dist/curseforge.d.ts.map +1 -1
- package/dist/curseforge.js +19 -13
- package/dist/curseforge.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/modrinth.js +3 -3
- 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 +6 -3
- package/dist/prepare.js.map +1 -1
- package/dist/utils/template-utils.d.ts.map +1 -1
- package/dist/utils/template-utils.js +1 -1
- package/dist/utils/template-utils.js.map +1 -1
- package/package.json +1 -1
- package/src/curseforge.ts +25 -8
- package/src/index.ts +16 -9
- package/src/modrinth.ts +3 -3
- package/src/prepare.ts +11 -3
- package/src/utils/template-utils.ts +1 -4
- package/dist/utils/platform/curseforge-utils.d.ts +0 -4
- package/dist/utils/platform/curseforge-utils.d.ts.map +0 -1
- package/dist/utils/platform/curseforge-utils.js +0 -7
- package/dist/utils/platform/curseforge-utils.js.map +0 -1
- package/src/utils/platform/curseforge-utils.ts +0 -17
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
## [2.0.4](https://github.com/pynickle/semantic-release-minecraft/compare/v2.0.3...v2.0.4) (2025-10-20)
|
|
2
|
+
|
|
3
|
+
### 🐛 Bug修复
|
|
4
|
+
|
|
5
|
+
* fix form data error ([44eaf76](https://github.com/pynickle/semantic-release-minecraft/commit/44eaf76c6eeedbc63ebc4d7602a68a09ed4352e1))
|
|
6
|
+
|
|
7
|
+
## [2.0.3](https://github.com/pynickle/semantic-release-minecraft/compare/v2.0.2...v2.0.3) (2025-10-20)
|
|
8
|
+
|
|
9
|
+
### 🐛 Bug修复
|
|
10
|
+
|
|
11
|
+
* fix import error ([7d49ea7](https://github.com/pynickle/semantic-release-minecraft/commit/7d49ea7e7841f7b44a46d7009dcd9a32a23b4ba6))
|
|
12
|
+
* fix mod loaders are not parsed with strategy ([5f0527e](https://github.com/pynickle/semantic-release-minecraft/commit/5f0527e45729983e067cf8bd5e701ea2d5d151ee))
|
|
13
|
+
|
|
1
14
|
## [2.0.2](https://github.com/pynickle/semantic-release-minecraft/compare/v2.0.1...v2.0.2) (2025-10-20)
|
|
2
15
|
|
|
3
16
|
### 🐛 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;
|
|
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,CAwCjB"}
|
package/dist/curseforge.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import FormData from 'form-data';
|
|
3
|
-
import {
|
|
3
|
+
import { createReadStream } from 'node:fs';
|
|
4
4
|
import { basename } from 'path';
|
|
5
|
-
import { getCurseForgeModLoaders } from './utils/platform/curseforge-utils.js';
|
|
6
5
|
import { findFilesAndPrimaryFile } from './utils/platform/utils.js';
|
|
7
|
-
import { resolveAndRenderTemplate } from './utils/template-utils.js';
|
|
6
|
+
import { resolveAndRenderTemplate, resolveAndRenderTemplates, } from './utils/template-utils.js';
|
|
8
7
|
/**
|
|
9
8
|
* Publishes files to CurseForge.
|
|
10
9
|
*/
|
|
@@ -14,33 +13,33 @@ export async function publishToCurseforge(pluginConfig, context, strategy, curse
|
|
|
14
13
|
const projectId = curseforge.project_id;
|
|
15
14
|
const { files, primaryFile } = await findFilesAndPrimaryFile(pluginConfig, context, strategy, 'curseforge');
|
|
16
15
|
logger.log(`Publishing ${files.length} file(s) to CurseForge project ${projectId}...`);
|
|
17
|
-
let primaryFileId = await uploadCurseForgeFile(pluginConfig, context, curseforgeGameVersionIds, primaryFile);
|
|
16
|
+
let primaryFileId = await uploadCurseForgeFile(pluginConfig, context, strategy, curseforgeGameVersionIds, primaryFile);
|
|
18
17
|
for (const filePath of files) {
|
|
19
18
|
if (filePath === primaryFile) {
|
|
20
19
|
continue;
|
|
21
20
|
}
|
|
22
|
-
await uploadCurseForgeFile(pluginConfig, context, curseforgeGameVersionIds, filePath, primaryFileId);
|
|
21
|
+
await uploadCurseForgeFile(pluginConfig, context, strategy, curseforgeGameVersionIds, filePath, primaryFileId);
|
|
23
22
|
}
|
|
24
23
|
return primaryFileId;
|
|
25
24
|
}
|
|
26
25
|
/**
|
|
27
26
|
* Uploads a single file to CurseForge.
|
|
28
27
|
*/
|
|
29
|
-
async function uploadCurseForgeFile(pluginConfig, context, curseforgeGameVersionIds, filePath, primaryFileId) {
|
|
28
|
+
async function uploadCurseForgeFile(pluginConfig, context, strategy, curseforgeGameVersionIds, filePath, primaryFileId) {
|
|
30
29
|
const { env, logger } = context;
|
|
31
30
|
const { curseforge } = pluginConfig;
|
|
32
31
|
const apiKey = env.CURSEFORGE_TOKEN;
|
|
33
32
|
const projectId = curseforge.project_id;
|
|
34
33
|
const form = new FormData();
|
|
35
|
-
const file =
|
|
34
|
+
const file = createReadStream(filePath);
|
|
36
35
|
form.append('file', file, {
|
|
37
36
|
filename: basename(filePath),
|
|
38
37
|
});
|
|
39
|
-
const metadata = prepareMetadata(pluginConfig, context, curseforgeGameVersionIds);
|
|
38
|
+
const metadata = prepareMetadata(pluginConfig, context, strategy, curseforgeGameVersionIds);
|
|
40
39
|
if (primaryFileId) {
|
|
41
40
|
metadata.parentFileID = primaryFileId;
|
|
42
41
|
}
|
|
43
|
-
form.append('metadata', metadata);
|
|
42
|
+
form.append('metadata', JSON.stringify(metadata));
|
|
44
43
|
const response = await axios.post(`https://upload.curseforge.com/api/projects/${projectId}/upload-file`, form, {
|
|
45
44
|
headers: {
|
|
46
45
|
...form.getHeaders(),
|
|
@@ -59,7 +58,7 @@ async function uploadCurseForgeFile(pluginConfig, context, curseforgeGameVersion
|
|
|
59
58
|
/**
|
|
60
59
|
* Prepares metadata for the CurseForge file upload.
|
|
61
60
|
*/
|
|
62
|
-
function prepareMetadata(pluginConfig, context, curseforgeGameVersionIds) {
|
|
61
|
+
function prepareMetadata(pluginConfig, context, strategy, curseforgeGameVersionIds) {
|
|
63
62
|
const { nextRelease } = context;
|
|
64
63
|
const { curseforge } = pluginConfig;
|
|
65
64
|
const metadata = {
|
|
@@ -70,9 +69,16 @@ function prepareMetadata(pluginConfig, context, curseforgeGameVersionIds) {
|
|
|
70
69
|
isMarkedForManualRelease: curseforge?.is_marked_for_manual_release || false,
|
|
71
70
|
relations: curseforge?.relations || [],
|
|
72
71
|
};
|
|
73
|
-
const displayName = resolveAndRenderTemplate([curseforge?.display_name, pluginConfig.display_name], {
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
const displayName = resolveAndRenderTemplate([curseforge?.display_name, pluginConfig.display_name], {
|
|
73
|
+
nextRelease,
|
|
74
|
+
...strategy,
|
|
75
|
+
});
|
|
76
|
+
metadata.displayName = displayName || context.nextRelease.name;
|
|
77
|
+
const modLoaders = resolveAndRenderTemplates([pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders], {
|
|
78
|
+
nextRelease,
|
|
79
|
+
...strategy,
|
|
80
|
+
});
|
|
81
|
+
metadata.modLoaders = modLoaders || [];
|
|
76
82
|
return metadata;
|
|
77
83
|
}
|
|
78
84
|
//# 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,
|
|
1
|
+
{"version":3,"file":"curseforge.js","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"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"}
|
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,iBAuB1B;AAED,wBAAsB,OAAO,CACzB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAwC5B"}
|
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 curseforgeGameVersionsIds;
|
|
5
|
+
let curseforgeGameVersionsIds = [];
|
|
6
6
|
export async function verifyConditions(pluginConfig, context) {
|
|
7
7
|
const { env } = context;
|
|
8
8
|
if (env.CURSEFORGE_TOKEN && !pluginConfig.curseforge?.project_id) {
|
|
@@ -17,16 +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
|
-
|
|
20
|
+
for (const strategy of pluginConfig.strategies || [{}]) {
|
|
21
|
+
curseforgeGameVersionsIds?.push(await getCurseForgeGameVersionIds(apiToken, pluginConfig, context, strategy));
|
|
22
|
+
}
|
|
23
|
+
logger.log(`Successfully transform into ${Object.keys(curseforgeGameVersionsIds[0]).length} CurseForge game versions for every strategy`);
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
26
|
export async function publish(pluginConfig, context) {
|
|
25
27
|
const { env, logger } = context;
|
|
26
28
|
const results = [];
|
|
27
|
-
for (const strategy of pluginConfig.strategies || [{}]) {
|
|
29
|
+
for (const [index, strategy] of (pluginConfig.strategies || [{}]).entries()) {
|
|
28
30
|
if (env.CURSEFORGE_TOKEN) {
|
|
29
|
-
const curseforgeId = await publishToCurseforge(pluginConfig, context, strategy, curseforgeGameVersionsIds);
|
|
31
|
+
const curseforgeId = await publishToCurseforge(pluginConfig, context, strategy, curseforgeGameVersionsIds[index]);
|
|
30
32
|
results.push({
|
|
31
33
|
url: `https://www.curseforge.com/minecraft/mc-mods/${pluginConfig.curseforge.project_id}/files/${curseforgeId}`,
|
|
32
34
|
});
|
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,yBAAyB,GAAoB,EAAE,CAAC;AAEpD,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,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACrD,yBAAyB,EAAE,IAAI,CAC3B,MAAM,2BAA2B,CAC7B,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,QAAQ,CACX,CACJ,CAAC;QACN,CAAC;QAED,MAAM,CAAC,GAAG,CACN,+BAA+B,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,8CAA8C,CAChI,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,GAAsB,EAAE,CAAC;IAEtC,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,yBAAyB,CAAC,KAAK,CAAC,CACnC,CAAC;YACF,OAAO,CAAC,IAAI,CAAC;gBACT,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,IAAI,CAAC;gBACT,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.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import FormData from 'form-data';
|
|
3
|
-
import {
|
|
3
|
+
import { createReadStream } from 'node:fs';
|
|
4
4
|
import { basename } from 'path';
|
|
5
5
|
import { findFilesAndPrimaryFile } from './utils/platform/utils.js';
|
|
6
6
|
import { resolveAndRenderTemplate, resolveAndRenderTemplates, } from './utils/template-utils.js';
|
|
@@ -20,7 +20,7 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
|
|
|
20
20
|
let primaryFilePartName = undefined;
|
|
21
21
|
for (let i = 0; i < files.length; i++) {
|
|
22
22
|
const filePath = files[i];
|
|
23
|
-
const file =
|
|
23
|
+
const file = createReadStream(filePath);
|
|
24
24
|
const fileName = basename(filePath);
|
|
25
25
|
const filePartName = `file-${i}`;
|
|
26
26
|
form.append(filePartName, file, { filename: fileName });
|
|
@@ -61,7 +61,7 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
|
|
|
61
61
|
...strategy,
|
|
62
62
|
});
|
|
63
63
|
versionData.mod_loaders = modLoaders || [];
|
|
64
|
-
form.append('data', versionData);
|
|
64
|
+
form.append('data', JSON.stringify(versionData));
|
|
65
65
|
const versionResponse = await axios.post('https://api.modrinth.com/v2/version', form, {
|
|
66
66
|
headers: {
|
|
67
67
|
...form.getHeaders(),
|
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,
|
|
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): Promise<number[]>;
|
|
6
|
+
export declare function getCurseForgeGameVersionIds(apiToken: string, pluginConfig: PluginConfig, context: PrepareContext, strategy: Record<string, string>): Promise<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,EACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC,CAyEnB"}
|
package/dist/prepare.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { BUKKIT_GAME_VERSION_TYPE, } from './definitions/curseforge.js';
|
|
3
|
-
import {
|
|
3
|
+
import { resolveAndRenderTemplates } from './utils/template-utils.js';
|
|
4
4
|
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, strategy) {
|
|
9
9
|
const { nextRelease } = context;
|
|
10
10
|
const curseforgeConfig = pluginConfig.curseforge;
|
|
11
|
-
const modLoaders =
|
|
11
|
+
const modLoaders = resolveAndRenderTemplates([pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders], {
|
|
12
|
+
nextRelease,
|
|
13
|
+
...strategy,
|
|
14
|
+
}) || [];
|
|
12
15
|
const javaVersions = toArray(curseforgeConfig.java_versions);
|
|
13
16
|
const gameVersions = toArray(curseforgeConfig.game_versions || pluginConfig.game_versions);
|
|
14
17
|
const pluginGameVersions = toArray(curseforgeConfig.game_versions_for_plugins);
|
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,
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-utils.d.ts","sourceRoot":"","sources":["../../src/utils/template-utils.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC3B,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM,EAAE,CAEV;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM,GAAG,SAAS,CAKpB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACrC,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,EACpD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM,EAAE,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"template-utils.d.ts","sourceRoot":"","sources":["../../src/utils/template-utils.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC3B,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM,EAAE,CAEV;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM,GAAG,SAAS,CAKpB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACrC,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,EACpD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM,EAAE,GAAG,SAAS,CAKtB"}
|
|
@@ -35,6 +35,6 @@ export function resolveAndRenderTemplates(sources, context) {
|
|
|
35
35
|
const source = sources.find(Boolean);
|
|
36
36
|
if (!source)
|
|
37
37
|
return undefined;
|
|
38
|
-
return renderTemplates(
|
|
38
|
+
return renderTemplates(source, context);
|
|
39
39
|
}
|
|
40
40
|
//# sourceMappingURL=template-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-utils.js","sourceRoot":"","sources":["../../src/utils/template-utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC3B,SAA4B,EAC5B,OAA4B;IAE5B,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACpC,OAAyC,EACzC,OAA4B;IAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACrC,OAAoD,EACpD,OAA4B;IAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,OAAO,eAAe,
|
|
1
|
+
{"version":3,"file":"template-utils.js","sourceRoot":"","sources":["../../src/utils/template-utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC3B,SAA4B,EAC5B,OAA4B;IAE5B,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACpC,OAAyC,EACzC,OAA4B;IAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACrC,OAAoD,EACpD,OAA4B;IAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,OAAO,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC"}
|
package/package.json
CHANGED
package/src/curseforge.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import FormData from 'form-data';
|
|
3
|
-
import {
|
|
3
|
+
import { createReadStream } from 'node:fs';
|
|
4
4
|
import { basename } from 'path';
|
|
5
5
|
import { PublishContext } from 'semantic-release';
|
|
6
6
|
import { PluginConfig } from './definitions/plugin-config.js';
|
|
7
|
-
import { getCurseForgeModLoaders } from './utils/platform/curseforge-utils.js';
|
|
8
7
|
import { findFilesAndPrimaryFile } from './utils/platform/utils.js';
|
|
9
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
resolveAndRenderTemplate,
|
|
10
|
+
resolveAndRenderTemplates,
|
|
11
|
+
} from './utils/template-utils.js';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* Publishes files to CurseForge.
|
|
@@ -35,6 +37,7 @@ export async function publishToCurseforge(
|
|
|
35
37
|
let primaryFileId = await uploadCurseForgeFile(
|
|
36
38
|
pluginConfig,
|
|
37
39
|
context,
|
|
40
|
+
strategy,
|
|
38
41
|
curseforgeGameVersionIds,
|
|
39
42
|
primaryFile
|
|
40
43
|
);
|
|
@@ -47,6 +50,7 @@ export async function publishToCurseforge(
|
|
|
47
50
|
await uploadCurseForgeFile(
|
|
48
51
|
pluginConfig,
|
|
49
52
|
context,
|
|
53
|
+
strategy,
|
|
50
54
|
curseforgeGameVersionIds,
|
|
51
55
|
filePath,
|
|
52
56
|
primaryFileId
|
|
@@ -62,6 +66,7 @@ export async function publishToCurseforge(
|
|
|
62
66
|
async function uploadCurseForgeFile(
|
|
63
67
|
pluginConfig: PluginConfig,
|
|
64
68
|
context: PublishContext,
|
|
69
|
+
strategy: Record<string, string>,
|
|
65
70
|
curseforgeGameVersionIds: number[] | undefined,
|
|
66
71
|
filePath: string,
|
|
67
72
|
primaryFileId?: number
|
|
@@ -73,7 +78,7 @@ async function uploadCurseForgeFile(
|
|
|
73
78
|
const projectId = curseforge!.project_id!;
|
|
74
79
|
|
|
75
80
|
const form = new FormData();
|
|
76
|
-
const file =
|
|
81
|
+
const file = createReadStream(filePath);
|
|
77
82
|
form.append('file', file, {
|
|
78
83
|
filename: basename(filePath),
|
|
79
84
|
});
|
|
@@ -81,6 +86,7 @@ async function uploadCurseForgeFile(
|
|
|
81
86
|
const metadata = prepareMetadata(
|
|
82
87
|
pluginConfig,
|
|
83
88
|
context,
|
|
89
|
+
strategy,
|
|
84
90
|
curseforgeGameVersionIds
|
|
85
91
|
);
|
|
86
92
|
|
|
@@ -88,7 +94,7 @@ async function uploadCurseForgeFile(
|
|
|
88
94
|
metadata.parentFileID = primaryFileId;
|
|
89
95
|
}
|
|
90
96
|
|
|
91
|
-
form.append('metadata', metadata);
|
|
97
|
+
form.append('metadata', JSON.stringify(metadata));
|
|
92
98
|
|
|
93
99
|
const response = await axios.post(
|
|
94
100
|
`https://upload.curseforge.com/api/projects/${projectId}/upload-file`,
|
|
@@ -121,6 +127,7 @@ async function uploadCurseForgeFile(
|
|
|
121
127
|
function prepareMetadata(
|
|
122
128
|
pluginConfig: PluginConfig,
|
|
123
129
|
context: PublishContext,
|
|
130
|
+
strategy: Record<string, string>,
|
|
124
131
|
curseforgeGameVersionIds: number[] | undefined
|
|
125
132
|
) {
|
|
126
133
|
const { nextRelease } = context;
|
|
@@ -137,12 +144,22 @@ function prepareMetadata(
|
|
|
137
144
|
|
|
138
145
|
const displayName = resolveAndRenderTemplate(
|
|
139
146
|
[curseforge?.display_name, pluginConfig.display_name],
|
|
140
|
-
{
|
|
147
|
+
{
|
|
148
|
+
nextRelease,
|
|
149
|
+
...strategy,
|
|
150
|
+
}
|
|
141
151
|
);
|
|
142
152
|
|
|
143
|
-
metadata.
|
|
153
|
+
metadata.displayName = displayName || context.nextRelease.name;
|
|
144
154
|
|
|
145
|
-
|
|
155
|
+
const modLoaders = resolveAndRenderTemplates(
|
|
156
|
+
[pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders],
|
|
157
|
+
{
|
|
158
|
+
nextRelease,
|
|
159
|
+
...strategy,
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
metadata.modLoaders = modLoaders || [];
|
|
146
163
|
|
|
147
164
|
return metadata;
|
|
148
165
|
}
|
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 curseforgeGameVersionsIds: number[]
|
|
12
|
+
let curseforgeGameVersionsIds: Array<number[]> = [];
|
|
13
13
|
|
|
14
14
|
export async function verifyConditions(
|
|
15
15
|
pluginConfig: PluginConfig,
|
|
@@ -36,14 +36,19 @@ 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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
for (const strategy of pluginConfig.strategies || [{}]) {
|
|
40
|
+
curseforgeGameVersionsIds?.push(
|
|
41
|
+
await getCurseForgeGameVersionIds(
|
|
42
|
+
apiToken,
|
|
43
|
+
pluginConfig,
|
|
44
|
+
context,
|
|
45
|
+
strategy
|
|
46
|
+
)
|
|
47
|
+
);
|
|
48
|
+
}
|
|
44
49
|
|
|
45
50
|
logger.log(
|
|
46
|
-
`Successfully transform into ${Object.keys(curseforgeGameVersionsIds).length} CurseForge game versions`
|
|
51
|
+
`Successfully transform into ${Object.keys(curseforgeGameVersionsIds[0]).length} CurseForge game versions for every strategy`
|
|
47
52
|
);
|
|
48
53
|
}
|
|
49
54
|
}
|
|
@@ -55,13 +60,15 @@ export async function publish(
|
|
|
55
60
|
const { env, logger } = context;
|
|
56
61
|
const results: { url: string }[] = [];
|
|
57
62
|
|
|
58
|
-
for (const strategy of
|
|
63
|
+
for (const [index, strategy] of (
|
|
64
|
+
pluginConfig.strategies || [{}]
|
|
65
|
+
).entries()) {
|
|
59
66
|
if (env.CURSEFORGE_TOKEN) {
|
|
60
67
|
const curseforgeId = await publishToCurseforge(
|
|
61
68
|
pluginConfig,
|
|
62
69
|
context,
|
|
63
70
|
strategy,
|
|
64
|
-
curseforgeGameVersionsIds
|
|
71
|
+
curseforgeGameVersionsIds[index]
|
|
65
72
|
);
|
|
66
73
|
results.push({
|
|
67
74
|
url: `https://www.curseforge.com/minecraft/mc-mods/${pluginConfig.curseforge!.project_id}/files/${curseforgeId}`,
|
package/src/modrinth.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import FormData from 'form-data';
|
|
3
|
-
import {
|
|
3
|
+
import { createReadStream } from 'node:fs';
|
|
4
4
|
import { basename } from 'path';
|
|
5
5
|
import { PublishContext } from 'semantic-release';
|
|
6
6
|
import { PluginConfig } from './definitions/plugin-config.js';
|
|
@@ -40,7 +40,7 @@ export async function publishToModrinth(
|
|
|
40
40
|
|
|
41
41
|
for (let i = 0; i < files.length; i++) {
|
|
42
42
|
const filePath = files[i];
|
|
43
|
-
const file =
|
|
43
|
+
const file = createReadStream(filePath);
|
|
44
44
|
const fileName = basename(filePath);
|
|
45
45
|
|
|
46
46
|
const filePartName = `file-${i}`;
|
|
@@ -103,7 +103,7 @@ export async function publishToModrinth(
|
|
|
103
103
|
|
|
104
104
|
versionData.mod_loaders = modLoaders || [];
|
|
105
105
|
|
|
106
|
-
form.append('data', versionData);
|
|
106
|
+
form.append('data', JSON.stringify(versionData));
|
|
107
107
|
|
|
108
108
|
const versionResponse = await axios.post(
|
|
109
109
|
'https://api.modrinth.com/v2/version',
|
package/src/prepare.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
CurseForgeGameVersionType,
|
|
8
8
|
} from './definitions/curseforge.js';
|
|
9
9
|
import { PluginConfig } from './definitions/plugin-config.js';
|
|
10
|
-
import {
|
|
10
|
+
import { resolveAndRenderTemplates } from './utils/template-utils.js';
|
|
11
11
|
import { toArray } from './utils/utils.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -16,13 +16,21 @@ import { toArray } from './utils/utils.js';
|
|
|
16
16
|
export async function getCurseForgeGameVersionIds(
|
|
17
17
|
apiToken: string,
|
|
18
18
|
pluginConfig: PluginConfig,
|
|
19
|
-
context: PrepareContext
|
|
19
|
+
context: PrepareContext,
|
|
20
|
+
strategy: Record<string, string>
|
|
20
21
|
): Promise<number[]> {
|
|
21
22
|
const { nextRelease } = context;
|
|
22
23
|
|
|
23
24
|
const curseforgeConfig = pluginConfig.curseforge!;
|
|
24
25
|
|
|
25
|
-
const modLoaders =
|
|
26
|
+
const modLoaders =
|
|
27
|
+
resolveAndRenderTemplates(
|
|
28
|
+
[pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders],
|
|
29
|
+
{
|
|
30
|
+
nextRelease,
|
|
31
|
+
...strategy,
|
|
32
|
+
}
|
|
33
|
+
) || [];
|
|
26
34
|
|
|
27
35
|
const javaVersions = toArray(curseforgeConfig.java_versions);
|
|
28
36
|
const gameVersions = toArray(
|
|
@@ -47,8 +47,5 @@ export function resolveAndRenderTemplates(
|
|
|
47
47
|
const source = sources.find(Boolean);
|
|
48
48
|
if (!source) return undefined;
|
|
49
49
|
|
|
50
|
-
return renderTemplates(
|
|
51
|
-
typeof source === 'string' ? toArray(source) : source,
|
|
52
|
-
context
|
|
53
|
-
);
|
|
50
|
+
return renderTemplates(source, context);
|
|
54
51
|
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { NextRelease } from 'semantic-release';
|
|
2
|
-
import { PluginConfig } from '../../definitions/plugin-config.js';
|
|
3
|
-
export declare function getCurseForgeModLoaders(pluginConfig: PluginConfig, nextRelease: NextRelease): string[];
|
|
4
|
-
//# sourceMappingURL=curseforge-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"curseforge-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/platform/curseforge-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGlE,wBAAgB,uBAAuB,CACnC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,GACzB,MAAM,EAAE,CASV"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { resolveAndRenderTemplates } from '../template-utils.js';
|
|
2
|
-
export function getCurseForgeModLoaders(pluginConfig, nextRelease) {
|
|
3
|
-
return (resolveAndRenderTemplates([pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders], {
|
|
4
|
-
nextRelease,
|
|
5
|
-
}) || []);
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=curseforge-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"curseforge-utils.js","sourceRoot":"","sources":["../../../src/utils/platform/curseforge-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,UAAU,uBAAuB,CACnC,YAA0B,EAC1B,WAAwB;IAExB,OAAO,CACH,yBAAyB,CACrB,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,EAChE;QACI,WAAW;KACd,CACJ,IAAI,EAAE,CACV,CAAC;AACN,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { NextRelease } from 'semantic-release';
|
|
2
|
-
import { PluginConfig } from '../../definitions/plugin-config.js';
|
|
3
|
-
import { resolveAndRenderTemplates } from '../template-utils.js';
|
|
4
|
-
|
|
5
|
-
export function getCurseForgeModLoaders(
|
|
6
|
-
pluginConfig: PluginConfig,
|
|
7
|
-
nextRelease: NextRelease
|
|
8
|
-
): string[] {
|
|
9
|
-
return (
|
|
10
|
-
resolveAndRenderTemplates(
|
|
11
|
-
[pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders],
|
|
12
|
-
{
|
|
13
|
-
nextRelease,
|
|
14
|
-
}
|
|
15
|
-
) || []
|
|
16
|
-
);
|
|
17
|
-
}
|