semantic-release-minecraft 2.0.8 → 2.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.releaserc.json CHANGED
@@ -14,7 +14,7 @@
14
14
  { "type": "fix", "section": "🐛 Bug修复" },
15
15
  { "type": "docs", "section": "📚 文档更新" },
16
16
  { "type": "style", "section": "💄 样式优化" },
17
- { "type": "refactor", "section": "♻️ 代码重构" },
17
+ { "type": "ref", "section": "♻️ 代码重构" },
18
18
  { "type": "perf", "section": "⚡ 性能优化" },
19
19
  { "type": "test", "section": "✅ 测试" },
20
20
  { "type": "build", "section": "📦 构建" },
@@ -34,16 +34,17 @@
34
34
  {
35
35
  "assets": [
36
36
  "CHANGELOG.md",
37
- "package.json"
37
+ "package.json",
38
+ "package-lock.json"
38
39
  ],
39
40
  "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
40
41
  }
41
42
  ]
42
43
  ],
43
- "preset": "angular",
44
+ "preset": "conventionalcommits",
44
45
  "releaseRules": [
45
46
  {
46
- "type": "refactor",
47
+ "type": "ref",
47
48
  "release": "patch"
48
49
  },
49
50
  {
package/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ ## [2.0.10](https://github.com/pynickle/semantic-release-minecraft/compare/v2.0.9...v2.0.10) (2025-10-21)
2
+
3
+ ### ♻️ 代码重构
4
+
5
+ * refactor code to make better understanding and performance ([f9f12da](https://github.com/pynickle/semantic-release-minecraft/commit/f9f12daac890b238848047e316b558fbc5d59389))
6
+
7
+ ### 🔧 其他更改
8
+
9
+ * change preset to conventional commits and fix missing change of refactor ([06136f4](https://github.com/pynickle/semantic-release-minecraft/commit/06136f4c29e1ab6abe7101f130e734c05051a091))
10
+ * change refactor to ref ([c93ccb7](https://github.com/pynickle/semantic-release-minecraft/commit/c93ccb761452525e4a765137acdbbdd36b4fa18e))
11
+
12
+ ## [2.0.9](https://github.com/pynickle/semantic-release-minecraft/compare/v2.0.8...v2.0.9) (2025-10-20)
13
+
14
+ ### 🐛 Bug修复
15
+
16
+ * try to fix modrinth upload error ([8751372](https://github.com/pynickle/semantic-release-minecraft/commit/875137212046de59dd422d0d56b40541c8c4a0d5))
17
+
1
18
  ## [2.0.8](https://github.com/pynickle/semantic-release-minecraft/compare/v2.0.7...v2.0.8) (2025-10-20)
2
19
 
3
20
  ### 🐛 Bug修复
@@ -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,CAwCjB"}
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"}
@@ -1,6 +1,6 @@
1
1
  import axios from 'axios';
2
2
  import FormData from 'form-data';
3
- import { createReadStream } from 'node:fs';
3
+ import { readFileSync } from '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';
@@ -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
- let primaryFileId = await uploadCurseForgeFile(pluginConfig, context, strategy, curseforgeGameVersionIds, primaryFile);
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, strategy, curseforgeGameVersionIds, filePath, primaryFileId);
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, strategy, curseforgeGameVersionIds, filePath, primaryFileId) {
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
- const file = createReadStream(filePath);
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
- 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 || [];
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
@@ -1 +1 @@
1
- {"version":3,"file":"curseforge.js","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"curseforge.js","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"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"}
@@ -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,iBAuB1B;AAED,wBAAsB,OAAO,CACzB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAwC5B"}
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,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 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,10 +17,9 @@ 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
- 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`);
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) {
@@ -28,7 +27,7 @@ export async function publish(pluginConfig, context) {
28
27
  const results = [];
29
28
  for (const [index, strategy] of (pluginConfig.strategies || [{}]).entries()) {
30
29
  if (env.CURSEFORGE_TOKEN) {
31
- const curseforgeId = await publishToCurseforge(pluginConfig, context, strategy, curseforgeGameVersionsIds[index]);
30
+ const curseforgeId = await publishToCurseforge(pluginConfig, context, strategy, curseforgeGameVersionsIdsPerStrategy[index]);
32
31
  results.push({
33
32
  url: `https://www.curseforge.com/minecraft/mc-mods/${pluginConfig.curseforge.project_id}/files/${curseforgeId}`,
34
33
  });
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,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"}
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,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,oCAAoC,CAAC,KAAK,CAAC,CAC9C,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"}
@@ -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,CAyIjB"}
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,CA2JjB"}
package/dist/modrinth.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import axios from 'axios';
2
2
  import FormData from 'form-data';
3
- import { createReadStream } from 'node:fs';
3
+ import { readFileSync } from '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';
@@ -18,12 +18,15 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
18
18
  const form = new FormData();
19
19
  const filePartNames = [];
20
20
  let primaryFilePartName = undefined;
21
+ const fileBuffers = [];
22
+ const fileNames = [];
21
23
  for (let i = 0; i < files.length; i++) {
22
24
  const filePath = files[i];
23
- const file = createReadStream(filePath);
25
+ const fileBuffer = readFileSync(filePath);
26
+ fileBuffers.push(fileBuffer);
24
27
  const fileName = basename(filePath);
28
+ fileNames.push(fileName);
25
29
  const filePartName = `file-${i}`;
26
- form.append(filePartName, file, { filename: fileName });
27
30
  filePartNames.push(filePartName);
28
31
  if (filePath === primaryFile) {
29
32
  primaryFilePartName = filePartName;
@@ -37,8 +40,10 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
37
40
  featured: modrinth?.featured || false,
38
41
  status: modrinth?.status || 'listed',
39
42
  requested_status: modrinth?.requested_status || 'listed',
40
- primary_file: primaryFilePartName,
41
43
  };
44
+ if (primaryFilePartName) {
45
+ versionData.primary_file = primaryFilePartName;
46
+ }
42
47
  const changelog = resolveAndRenderTemplate([modrinth?.changelog, nextRelease.notes], {
43
48
  nextRelease,
44
49
  ...strategy,
@@ -46,38 +51,49 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
46
51
  if (changelog) {
47
52
  versionData.changelog = changelog;
48
53
  }
49
- const displayName = resolveAndRenderTemplate([modrinth?.display_name, pluginConfig.display_name], {
50
- nextRelease,
51
- ...strategy,
52
- });
53
- versionData.name = displayName || nextRelease.name;
54
- const versionNumber = resolveAndRenderTemplate([modrinth?.version_number], {
55
- nextRelease,
56
- ...strategy,
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
+ form.append('data', JSON.stringify(versionData), {
75
+ contentType: 'application/json',
57
76
  });
58
- versionData.version_number = versionNumber || nextRelease.version;
59
- const gameVersions = resolveAndRenderTemplates([modrinth?.game_versions, pluginConfig.game_versions], {
60
- nextRelease,
61
- ...strategy,
62
- });
63
- versionData.game_versions = gameVersions || [];
64
- const modLoaders = resolveAndRenderTemplates([modrinth?.mod_loaders, pluginConfig.mod_loaders], {
65
- nextRelease,
66
- ...strategy,
67
- });
68
- versionData.loaders = modLoaders || [];
77
+ for (let i = 0; i < files.length; i++) {
78
+ const filePartName = filePartNames[i];
79
+ const fileBuffer = fileBuffers[i];
80
+ const fileName = fileNames[i];
81
+ form.append(filePartName, fileBuffer, { filename: fileName });
82
+ }
83
+ const headers = form.getHeaders();
84
+ headers['Content-Length'] = form.getLengthSync();
69
85
  for (const [key, value] of Object.entries(versionData)) {
70
86
  logger.log(key, value);
71
87
  }
72
88
  logger.log(JSON.stringify(versionData));
73
- form.append('data', JSON.stringify(versionData));
74
89
  const versionResponse = await axios.post('https://api.modrinth.com/v2/version', form, {
75
90
  headers: {
76
- ...form.getHeaders(),
91
+ ...headers,
77
92
  Authorization: token,
78
93
  },
79
94
  validateStatus: (status) => status < 500,
80
95
  });
96
+ // form.append('data', JSON.stringify(versionData));
81
97
  const resData = versionResponse.data;
82
98
  if (versionResponse.status === 200) {
83
99
  logger.log(`Successfully published to Modrinth: ${resData.project_id} (File ID: ${resData.file_id})`);
@@ -88,7 +104,9 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
88
104
  throw new Error(`Failed to publish to Modrinth (${versionResponse.status}): ${resData.error}\n${resData.description}`);
89
105
  }
90
106
  else {
91
- throw new Error(`Failed to publish to Modrinth (${versionResponse.status}): ${resData.error}\n${resData.description}`);
107
+ logger.log('Headers:', versionResponse.headers);
108
+ logger.log('Data:', resData);
109
+ throw new Error(`Failed to publish to Modrinth (${versionResponse.status}): ${versionResponse.statusText}`);
92
110
  }
93
111
  }
94
112
  //# sourceMappingURL=modrinth.js.map
@@ -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,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,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;IAC5B,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,mBAAmB,GAAuB,SAAS,CAAC;IAExD,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,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEpC,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC;QAEjC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,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;QACxD,YAAY,EAAE,mBAAmB;KACpC,CAAC;IAEF,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,MAAM,WAAW,GAAG,wBAAwB,CACxC,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,EACnD;QACI,WAAW;QACX,GAAG,QAAQ;KACd,CACJ,CAAC;IAEF,WAAW,CAAC,IAAI,GAAG,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC;IAEnD,MAAM,aAAa,GAAG,wBAAwB,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE;QACvE,WAAW;QACX,GAAG,QAAQ;KACd,CAAC,CAAC;IAEH,WAAW,CAAC,cAAc,GAAG,aAAa,IAAI,WAAW,CAAC,OAAO,CAAC;IAElE,MAAM,YAAY,GAAG,yBAAyB,CAC1C,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,aAAa,CAAC,EACrD;QACI,WAAW;QACX,GAAG,QAAQ;KACd,CACJ,CAAC;IAEF,WAAW,CAAC,aAAa,GAAG,YAAY,IAAI,EAAE,CAAC;IAE/C,MAAM,UAAU,GAAG,yBAAyB,CACxC,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,EACjD;QACI,WAAW;QACX,GAAG,QAAQ;KACd,CACJ,CAAC;IAEF,WAAW,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,GAAG,CACN,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC9B,CAAA;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAEjD,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,IAAI,CACpC,qCAAqC,EACrC,IAAI,EACJ;QACI,OAAO,EAAE;YACL,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,aAAa,EAAE,KAAK;SACvB;QACD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,GAAG;KAC3C,CACJ,CAAC;IAEF,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC;IAErC,IAAI,eAAe,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CACN,uCAAuC,OAAO,CAAC,UAAU,cAAc,OAAO,CAAC,OAAO,GAAG,CAC5F,CAAC;QACF,OAAO,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IACnC,CAAC;SAAM,IACH,eAAe,CAAC,MAAM,KAAK,GAAG;QAC9B,eAAe,CAAC,MAAM,KAAK,GAAG,EAChC,CAAC;QACC,MAAM,IAAI,KAAK,CACX,kCAAkC,eAAe,CAAC,MAAM,MAAM,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,EAAE,CACxG,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CACX,kCAAkC,eAAe,CAAC,MAAM,MAAM,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,EAAE,CACxG,CAAC;IACN,CAAC;AACL,CAAC"}
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, strategy: Record<string, string>): Promise<number[]>;
6
+ export declare function getCurseForgeGameVersionIds(apiToken: string, pluginConfig: PluginConfig, context: PrepareContext): Promise<Array<number[]>>;
7
7
  //# sourceMappingURL=prepare.d.ts.map
@@ -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,EACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC,CAyEnB"}
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, strategy) {
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
- const javaVersionNames = javaVersions.map((javaVersion) => `Java ${javaVersion}`);
22
- // TODO: Modrinth CurseForge 的游戏版本命名格式转化,以 Modrinth 为基准
23
- // const gameVersionNames = gameVersions.map(x => formatCurseForgeGameVersionSnapshot(x));
24
- const gameVersionIds = findCurseForgeGameVersionIdsByNames(map.game_versions, gameVersions);
25
- const loaderIds = findCurseForgeGameVersionIdsByNames(map.loaders, modLoaders);
26
- const javaIds = findCurseForgeGameVersionIdsByNames(map.java_versions, javaVersionNames);
27
- const pluginGameVersionIds = findCurseForgeGameVersionIdsByNames(map.game_versions_for_plugins, pluginGameVersions);
28
- const addonGameVersionIds = findCurseForgeGameVersionIdsByNames(map.game_versions_for_addons, addonGameVersions);
29
- const environmentIds = findCurseForgeGameVersionIdsByNames(map.environments, environments);
30
- const curseforgeGameVersionIds = [];
31
- curseforgeGameVersionIds.push(...gameVersionIds, ...loaderIds, ...javaIds, ...pluginGameVersionIds, ...addonGameVersionIds, ...environmentIds);
32
- return curseforgeGameVersionIds;
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.
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "semantic-release-minecraft",
3
- "version": "2.0.8",
3
+ "version": "2.0.10",
4
4
  "description": "Automated Release For Minecraft Project",
5
5
  "keywords": [
6
6
  "semantic-release",
package/src/curseforge.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import axios from 'axios';
2
2
  import FormData from 'form-data';
3
- import { createReadStream } from 'node:fs';
3
+ import { readFileSync } from 'fs';
4
4
  import { basename } from 'path';
5
5
  import { PublishContext } from 'semantic-release';
6
6
  import { PluginConfig } from './definitions/plugin-config.js';
@@ -34,11 +34,17 @@ export async function publishToCurseforge(
34
34
  `Publishing ${files.length} file(s) to CurseForge project ${projectId}...`
35
35
  );
36
36
 
37
- let primaryFileId = await uploadCurseForgeFile(
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
- strategy,
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
- strategy: Record<string, string>,
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
- const file = createReadStream(filePath);
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
- const displayName = resolveAndRenderTemplate(
146
- [curseforge?.display_name, pluginConfig.display_name],
147
- {
148
- nextRelease,
149
- ...strategy,
150
- }
151
- );
152
-
153
- metadata.displayName = displayName || context.nextRelease.name;
154
-
155
- const modLoaders = resolveAndRenderTemplates(
156
- [pluginConfig.curseforge?.mod_loaders, pluginConfig.mod_loaders],
157
- {
158
- nextRelease,
159
- ...strategy,
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 curseforgeGameVersionsIds: Array<number[]> = [];
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
- for (const strategy of pluginConfig.strategies || [{}]) {
40
- curseforgeGameVersionsIds?.push(
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(curseforgeGameVersionsIds[0]).length} CurseForge game versions for every strategy`
43
+ `Successfully transform into ${Object.keys(curseforgeGameVersionsIdsPerStrategy[0]).length} CurseForge game versions for each strategy`
52
44
  );
53
45
  }
54
46
  }
@@ -68,7 +60,7 @@ export async function publish(
68
60
  pluginConfig,
69
61
  context,
70
62
  strategy,
71
- curseforgeGameVersionsIds[index]
63
+ curseforgeGameVersionsIdsPerStrategy[index]
72
64
  );
73
65
  results.push({
74
66
  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 { createReadStream } from 'node:fs';
3
+ import { readFileSync } from 'fs';
4
4
  import { basename } from 'path';
5
5
  import { PublishContext } from 'semantic-release';
6
6
  import { PluginConfig } from './definitions/plugin-config.js';
@@ -35,17 +35,21 @@ export async function publishToModrinth(
35
35
 
36
36
  // use multipart/form-data to upload files and version data
37
37
  const form = new FormData();
38
+
38
39
  const filePartNames: string[] = [];
39
40
  let primaryFilePartName: string | undefined = undefined;
41
+ const fileBuffers: Buffer[] = [];
42
+ const fileNames: string[] = [];
40
43
 
41
44
  for (let i = 0; i < files.length; i++) {
42
45
  const filePath = files[i];
43
- const file = createReadStream(filePath);
46
+ const fileBuffer = readFileSync(filePath);
47
+ fileBuffers.push(fileBuffer);
44
48
  const fileName = basename(filePath);
49
+ fileNames.push(fileName);
45
50
 
46
51
  const filePartName = `file-${i}`;
47
52
 
48
- form.append(filePartName, file, { filename: fileName });
49
53
  filePartNames.push(filePartName);
50
54
 
51
55
  if (filePath === primaryFile) {
@@ -61,9 +65,12 @@ export async function publishToModrinth(
61
65
  featured: modrinth?.featured || false,
62
66
  status: modrinth?.status || 'listed',
63
67
  requested_status: modrinth?.requested_status || 'listed',
64
- primary_file: primaryFilePartName,
65
68
  };
66
69
 
70
+ if (primaryFilePartName) {
71
+ versionData.primary_file = primaryFilePartName;
72
+ }
73
+
67
74
  const changelog = resolveAndRenderTemplate(
68
75
  [modrinth?.changelog, nextRelease.notes],
69
76
  {
@@ -76,65 +83,74 @@ export async function publishToModrinth(
76
83
  versionData.changelog = changelog;
77
84
  }
78
85
 
79
- const displayName = resolveAndRenderTemplate(
80
- [modrinth?.display_name, pluginConfig.display_name],
81
- {
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], {
82
97
  nextRelease,
83
98
  ...strategy,
84
- }
85
- );
86
-
87
- versionData.name = displayName || nextRelease.name;
88
-
89
- const versionNumber = resolveAndRenderTemplate([modrinth?.version_number], {
90
- nextRelease,
91
- ...strategy,
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
+ ) || [];
118
+
119
+ form.append('data', JSON.stringify(versionData), {
120
+ contentType: 'application/json',
92
121
  });
93
122
 
94
- versionData.version_number = versionNumber || nextRelease.version;
95
-
96
- const gameVersions = resolveAndRenderTemplates(
97
- [modrinth?.game_versions, pluginConfig.game_versions],
98
- {
99
- nextRelease,
100
- ...strategy,
101
- }
102
- );
103
-
104
- versionData.game_versions = gameVersions || [];
123
+ for (let i = 0; i < files.length; i++) {
124
+ const filePartName = filePartNames[i];
125
+ const fileBuffer = fileBuffers[i];
126
+ const fileName = fileNames[i];
105
127
 
106
- const modLoaders = resolveAndRenderTemplates(
107
- [modrinth?.mod_loaders, pluginConfig.mod_loaders],
108
- {
109
- nextRelease,
110
- ...strategy,
111
- }
112
- );
128
+ form.append(filePartName, fileBuffer, { filename: fileName });
129
+ }
113
130
 
114
- versionData.loaders = modLoaders || [];
131
+ const headers = form.getHeaders();
132
+ headers['Content-Length'] = form.getLengthSync();
115
133
 
116
134
  for (const [key, value] of Object.entries(versionData)) {
117
135
  logger.log(key, value);
118
136
  }
119
137
 
120
- logger.log(
121
- JSON.stringify(versionData)
122
- )
123
-
124
- form.append('data', JSON.stringify(versionData));
138
+ logger.log(JSON.stringify(versionData));
125
139
 
126
140
  const versionResponse = await axios.post(
127
141
  'https://api.modrinth.com/v2/version',
128
142
  form,
129
143
  {
130
144
  headers: {
131
- ...form.getHeaders(),
145
+ ...headers,
132
146
  Authorization: token,
133
147
  },
134
148
  validateStatus: (status) => status < 500,
135
149
  }
136
150
  );
137
151
 
152
+ // form.append('data', JSON.stringify(versionData));
153
+
138
154
  const resData = versionResponse.data;
139
155
 
140
156
  if (versionResponse.status === 200) {
@@ -150,8 +166,10 @@ export async function publishToModrinth(
150
166
  `Failed to publish to Modrinth (${versionResponse.status}): ${resData.error}\n${resData.description}`
151
167
  );
152
168
  } else {
169
+ logger.log('Headers:', versionResponse.headers);
170
+ logger.log('Data:', resData);
153
171
  throw new Error(
154
- `Failed to publish to Modrinth (${versionResponse.status}): ${resData.error}\n${resData.description}`
172
+ `Failed to publish to Modrinth (${versionResponse.status}): ${versionResponse.statusText}`
155
173
  );
156
174
  }
157
175
  }
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
- strategy: Record<string, string>
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
- const javaVersionNames = javaVersions.map(
48
- (javaVersion: string) => `Java ${javaVersion}`
49
- );
50
-
51
- // TODO: Modrinth 和 CurseForge 的游戏版本命名格式转化,以 Modrinth 为基准
52
- // const gameVersionNames = gameVersions.map(x => formatCurseForgeGameVersionSnapshot(x));
53
-
54
- const gameVersionIds = findCurseForgeGameVersionIdsByNames(
55
- map.game_versions,
56
- gameVersions
57
- );
58
-
59
- const loaderIds = findCurseForgeGameVersionIdsByNames(
60
- map.loaders,
61
- modLoaders
62
- );
63
-
64
- const javaIds = findCurseForgeGameVersionIdsByNames(
65
- map.java_versions,
66
- javaVersionNames
67
- );
68
-
69
- const pluginGameVersionIds = findCurseForgeGameVersionIdsByNames(
70
- map.game_versions_for_plugins,
71
- pluginGameVersions
72
- );
73
-
74
- const addonGameVersionIds = findCurseForgeGameVersionIdsByNames(
75
- map.game_versions_for_addons,
76
- addonGameVersions
77
- );
78
-
79
- const environmentIds = findCurseForgeGameVersionIdsByNames(
80
- map.environments,
81
- environments
82
- );
83
-
84
- const curseforgeGameVersionIds: number[] = [];
85
- curseforgeGameVersionIds.push(
86
- ...gameVersionIds,
87
- ...loaderIds,
88
- ...javaIds,
89
- ...pluginGameVersionIds,
90
- ...addonGameVersionIds,
91
- ...environmentIds
92
- );
93
- return curseforgeGameVersionIds;
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
  /**