semantic-release-minecraft 2.2.1 β 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +32 -2
- package/dist/curseforge.d.ts.map +1 -1
- package/dist/curseforge.js +20 -1
- package/dist/curseforge.js.map +1 -1
- package/dist/definitions/curseforge.d.ts +7 -0
- package/dist/definitions/curseforge.d.ts.map +1 -1
- package/dist/definitions/curseforge.js +6 -0
- package/dist/definitions/curseforge.js.map +1 -1
- package/dist/definitions/plugin-config.d.ts +8 -1
- package/dist/definitions/plugin-config.d.ts.map +1 -1
- package/dist/modrinth.d.ts.map +1 -1
- package/dist/modrinth.js +32 -10
- package/dist/modrinth.js.map +1 -1
- package/package.json +1 -1
- package/src/curseforge.ts +23 -3
- package/src/definitions/curseforge.ts +13 -0
- package/src/definitions/plugin-config.ts +11 -3
- package/src/modrinth.ts +40 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
## [2.3.0](https://github.com/pynickle/semantic-release-minecraft/compare/v2.2.1...v2.3.0) (2025-10-22)
|
|
2
|
+
|
|
3
|
+
### β¨ Features
|
|
4
|
+
|
|
5
|
+
* add global dependency configuration ([c1d1700](https://github.com/pynickle/semantic-release-minecraft/commit/c1d17003faffe1d8754759db7a1bcfd6c5fd5ac4))
|
|
6
|
+
|
|
7
|
+
### π Documentation
|
|
8
|
+
|
|
9
|
+
* add missing platform api token configuration part ([833b18d](https://github.com/pynickle/semantic-release-minecraft/commit/833b18d59f64a0e786fe6adbf3c6be133c2043ff))
|
|
10
|
+
|
|
1
11
|
## [2.2.1](https://github.com/pynickle/semantic-release-minecraft/compare/v2.2.0...v2.2.1) (2025-10-21)
|
|
2
12
|
|
|
3
13
|
### π Bug Fixes
|
package/README.md
CHANGED
|
@@ -29,6 +29,25 @@ If you don't want to read through the lengthy configuration introduction below,
|
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
32
|
+
### π οΈ CI Secret Configuration
|
|
33
|
+
|
|
34
|
+
For Modrinth and CurseForge API token configuration, you can set them via environment variables in tools like GitHub Actions:
|
|
35
|
+
|
|
36
|
+
```yaml
|
|
37
|
+
CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_TOKEN }}
|
|
38
|
+
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Remember to configure the repository secrets in the repository settings.
|
|
42
|
+
|
|
43
|
+
Below are the links to obtain API tokens for CurseForge and Modrinth:
|
|
44
|
+
|
|
45
|
+
[CurseForge](https://authors-old.curseforge.com/account/api-tokens)
|
|
46
|
+
|
|
47
|
+
> Once obtained, your Modrinth API token can only be viewed once. Please ensure you save your API token securely.
|
|
48
|
+
|
|
49
|
+
[Modrinth](https://modrinth.com/settings/pats)
|
|
50
|
+
|
|
32
51
|
### π Global Configuration
|
|
33
52
|
|
|
34
53
|
| Field | Type | Description | Default | Example |
|
|
@@ -40,6 +59,17 @@ If you don't want to read through the lengthy configuration introduction below,
|
|
|
40
59
|
| `strategies` | `Record<any, any>[]` | Store an array of strategy configurations for each release. See explanation below. | `[{}]` | `[{ 'loader': 'fabric' }, { 'loader': 'neoforge' }]` |
|
|
41
60
|
| `glob` | `string \| string[]` | Glob patterns that matches all files requiring upload | `['build/libs/!(*-@(dev\|sources\|javadoc)).jar','build/libs/*-@(dev\|sources\|javadoc).jar',]` | - |
|
|
42
61
|
| `primary_file_glob` | `string \| string[]` | Glob pattern matching the primary file | - | - |
|
|
62
|
+
| `dependencies` | Array of Objects | Global Dependency relations. See sub-table below. | `[]` | ~~~ |
|
|
63
|
+
|
|
64
|
+
#### πΈοΈ Global Dependencies Sub-Configuration
|
|
65
|
+
|
|
66
|
+
| Field | Type | Description | Default | Example |
|
|
67
|
+
|-------------------------|------------------------------------------------------------|----------------------------------------|---------|--------------|
|
|
68
|
+
| `slug` | `string` | Project Slug of dependency (required). | - | `'yacl'` |
|
|
69
|
+
| `curseforge_project_id` | `string` | CurseForge Project ID of dependency. | - | ~~~ |
|
|
70
|
+
| `modrinth_project_id` | `string` | Modrinth Project ID of dependency. | - | ~~~ |
|
|
71
|
+
| `type` | `'required' \| 'optional' \| 'incompatible' \| 'embedded'` | Dependency type (required). | - | `'embedded'` |
|
|
72
|
+
|
|
43
73
|
|
|
44
74
|
### βοΈ Strategy (Template) Configuration
|
|
45
75
|
|
|
@@ -75,7 +105,7 @@ Configure under the `curseforge` object. Requires `project_id` to enable.
|
|
|
75
105
|
| `changelog_type` | `'text' \| 'html' \| 'markdown'` | Changelog format. | `'markdown'` | `'html'` |
|
|
76
106
|
| `display_name` | `string` | CurseForge-specific display name. | Global | `'Iris 1.9.6 for Fabric 1.21.10'` |
|
|
77
107
|
| `is_marked_for_manual_release` | `boolean` | Mark release as manual so you can choose when to release. | `false` | `true` |
|
|
78
|
-
| `relations` | Array of Objects | Dependency relations. See sub-table below. |
|
|
108
|
+
| `relations` | Array of Objects | Dependency relations. See sub-table below. | Global | - |
|
|
79
109
|
| `glob` | `string \| string[]` | CurseForge-specific file glob. | Global | ~~~ |
|
|
80
110
|
| `primary_file_glob` | `string \| string[]` | CurseForge-specific primary file. | Global | ~~~ |
|
|
81
111
|
|
|
@@ -99,7 +129,7 @@ Configure under the `modrinth` object. Requires `project_id` to enable.
|
|
|
99
129
|
| `game_versions` | `string[]` | Modrinth-specific game versions. | Global | `'1.12.2'` |
|
|
100
130
|
| `mod_loaders` | `string[]` | Modrinth-specific loaders. | Global | `'quilt'` |
|
|
101
131
|
| `changelog` | `string` | Custom changelog. | `nextRelease.notes` | `'See full changelog'` |
|
|
102
|
-
| `dependencies` | Array of Objects | Dependency relations. See sub-table below. |
|
|
132
|
+
| `dependencies` | Array of Objects | Dependency relations. See sub-table below. | Global | - |
|
|
103
133
|
| `featured` | `boolean` | Mark as featured version. | `false` | `true` |
|
|
104
134
|
| `status` | `'listed' \| 'archived' \| 'draft' \| 'unlisted' \| 'scheduled' \| 'unknown'` | Version visibility status. | `'listed'` | `'draft'` |
|
|
105
135
|
| `requested_status` | `'listed' \| 'archived' \| 'draft' \| 'unlisted'` | Requested status (for moderation). | `'listed'` | `'unlisted'` |
|
package/dist/curseforge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curseforge.d.ts","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"curseforge.d.ts","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,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
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import FormData from 'form-data';
|
|
3
3
|
import { readFileSync } from 'fs';
|
|
4
|
+
import lodash from 'lodash';
|
|
4
5
|
import { basename } from 'path';
|
|
6
|
+
import { DependencyTypeMap } from './definitions/curseforge.js';
|
|
5
7
|
import { findFilesAndPrimaryFile } from './utils/platform/utils.js';
|
|
6
8
|
import { resolveAndRenderTemplate, resolveAndRenderTemplates, } from './utils/template-utils.js';
|
|
7
|
-
import lodash from "lodash";
|
|
8
9
|
/**
|
|
9
10
|
* Publishes files to CurseForge.
|
|
10
11
|
*/
|
|
@@ -75,6 +76,24 @@ function prepareMetadata(pluginConfig, context, strategy, curseforgeGameVersionI
|
|
|
75
76
|
}
|
|
76
77
|
: {},
|
|
77
78
|
};
|
|
79
|
+
if (curseforge?.relations) {
|
|
80
|
+
metadata.relations = {
|
|
81
|
+
projects: curseforge?.relations,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
let projects = [];
|
|
86
|
+
for (const dependency of pluginConfig.dependencies || []) {
|
|
87
|
+
projects.push({
|
|
88
|
+
slug: dependency.slug,
|
|
89
|
+
project_id: dependency.curseforge_project_id,
|
|
90
|
+
type: DependencyTypeMap[dependency.type],
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
metadata.relations = {
|
|
94
|
+
projects,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
78
97
|
metadata.displayName =
|
|
79
98
|
resolveAndRenderTemplate([curseforge?.display_name, pluginConfig.display_name], {
|
|
80
99
|
...context,
|
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;
|
|
1
|
+
{"version":3,"file":"curseforge.js","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,4 +37,11 @@ export interface CurseForgeGameVersionMap {
|
|
|
37
37
|
environments: CurseForgeGameVersion[];
|
|
38
38
|
}
|
|
39
39
|
export declare const BUKKIT_GAME_VERSION_TYPE: CurseForgeGameVersionType;
|
|
40
|
+
export type GlobalDependencyType = 'required' | 'optional' | 'incompatible' | 'embedded';
|
|
41
|
+
export declare const DependencyTypeMap: {
|
|
42
|
+
required: string;
|
|
43
|
+
optional: string;
|
|
44
|
+
incompatible: string;
|
|
45
|
+
embedded: string;
|
|
46
|
+
};
|
|
40
47
|
//# sourceMappingURL=curseforge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curseforge.d.ts","sourceRoot":"","sources":["../../src/definitions/curseforge.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACrC;;OAEG;IACH,aAAa,EAAE,qBAAqB,EAAE,CAAC;IAEvC;;OAEG;IACH,yBAAyB,EAAE,qBAAqB,EAAE,CAAC;IAEnD;;OAEG;IACH,wBAAwB,EAAE,qBAAqB,EAAE,CAAC;IAElD;;OAEG;IACH,aAAa,EAAE,qBAAqB,EAAE,CAAC;IAEvC;;OAEG;IACH,OAAO,EAAE,qBAAqB,EAAE,CAAC;IAEjC;;OAEG;IACH,YAAY,EAAE,qBAAqB,EAAE,CAAC;CACzC;AAED,eAAO,MAAM,wBAAwB,EAAE,yBAItC,CAAC"}
|
|
1
|
+
{"version":3,"file":"curseforge.d.ts","sourceRoot":"","sources":["../../src/definitions/curseforge.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACrC;;OAEG;IACH,aAAa,EAAE,qBAAqB,EAAE,CAAC;IAEvC;;OAEG;IACH,yBAAyB,EAAE,qBAAqB,EAAE,CAAC;IAEnD;;OAEG;IACH,wBAAwB,EAAE,qBAAqB,EAAE,CAAC;IAElD;;OAEG;IACH,aAAa,EAAE,qBAAqB,EAAE,CAAC;IAEvC;;OAEG;IACH,OAAO,EAAE,qBAAqB,EAAE,CAAC;IAEjC;;OAEG;IACH,YAAY,EAAE,qBAAqB,EAAE,CAAC;CACzC;AAED,eAAO,MAAM,wBAAwB,EAAE,yBAItC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC1B,UAAU,GACV,UAAU,GACV,cAAc,GACd,UAAU,CAAC;AAEjB,eAAO,MAAM,iBAAiB;;;;;CAK7B,CAAC"}
|
|
@@ -3,4 +3,10 @@ export const BUKKIT_GAME_VERSION_TYPE = {
|
|
|
3
3
|
name: 'Bukkit',
|
|
4
4
|
slug: 'bukkit',
|
|
5
5
|
};
|
|
6
|
+
export const DependencyTypeMap = {
|
|
7
|
+
required: 'requiredDependency',
|
|
8
|
+
optional: 'optionalDependency',
|
|
9
|
+
incompatible: 'incompatible',
|
|
10
|
+
embedded: 'embeddedLibrary',
|
|
11
|
+
};
|
|
6
12
|
//# sourceMappingURL=curseforge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curseforge.js","sourceRoot":"","sources":["../../src/definitions/curseforge.ts"],"names":[],"mappings":"AA8CA,MAAM,CAAC,MAAM,wBAAwB,GAA8B;IAC/D,EAAE,EAAE,CAAC;IACL,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;CACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"curseforge.js","sourceRoot":"","sources":["../../src/definitions/curseforge.ts"],"names":[],"mappings":"AA8CA,MAAM,CAAC,MAAM,wBAAwB,GAA8B;IAC/D,EAAE,EAAE,CAAC;IACL,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;CACjB,CAAC;AAQF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,QAAQ,EAAE,oBAAoB;IAC9B,QAAQ,EAAE,oBAAoB;IAC9B,YAAY,EAAE,cAAc;IAC5B,QAAQ,EAAE,iBAAiB;CAC9B,CAAC"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
import { GlobalDependencyType } from './curseforge';
|
|
1
2
|
export type PluginConfig = {
|
|
2
3
|
release_type?: 'alpha' | 'beta' | 'release';
|
|
3
4
|
game_versions?: string | string[];
|
|
4
5
|
mod_loaders?: string | string[];
|
|
5
6
|
display_name?: string;
|
|
7
|
+
dependencies?: Array<{
|
|
8
|
+
slug: string;
|
|
9
|
+
curseforge_project_id?: string;
|
|
10
|
+
modrinth_project_id?: string;
|
|
11
|
+
type: GlobalDependencyType;
|
|
12
|
+
}>;
|
|
6
13
|
strategies?: Record<any, any>[];
|
|
7
14
|
glob?: string | string[];
|
|
8
15
|
primary_file_glob: string | string[];
|
|
@@ -21,7 +28,7 @@ export type PluginConfig = {
|
|
|
21
28
|
relations?: Array<{
|
|
22
29
|
slug: string;
|
|
23
30
|
project_id?: string;
|
|
24
|
-
type: '
|
|
31
|
+
type: 'embeddedLibrary' | 'incompatible' | 'optionalDependency' | 'requiredDependency' | 'tool';
|
|
25
32
|
}>;
|
|
26
33
|
glob?: string | string[];
|
|
27
34
|
primary_file_glob?: string | string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-config.d.ts","sourceRoot":"","sources":["../../src/definitions/plugin-config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACvB,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-config.d.ts","sourceRoot":"","sources":["../../src/definitions/plugin-config.ts"],"names":[],"mappings":"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"}
|
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,CA8JjB"}
|
package/dist/modrinth.js
CHANGED
|
@@ -36,7 +36,6 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
|
|
|
36
36
|
project_id: projectId,
|
|
37
37
|
file_parts: filePartNames,
|
|
38
38
|
version_type: pluginConfig.release_type || 'release',
|
|
39
|
-
dependencies: modrinth?.dependencies || [],
|
|
40
39
|
featured: modrinth?.featured || false,
|
|
41
40
|
status: modrinth?.status || 'listed',
|
|
42
41
|
requested_status: modrinth?.requested_status || 'listed',
|
|
@@ -44,6 +43,20 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
|
|
|
44
43
|
if (primaryFilePartName) {
|
|
45
44
|
versionData.primary_file = primaryFilePartName;
|
|
46
45
|
}
|
|
46
|
+
if (modrinth?.dependencies) {
|
|
47
|
+
versionData.dependencies = modrinth?.dependencies;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
let dependencies = [];
|
|
51
|
+
for (const dependency of pluginConfig.dependencies || []) {
|
|
52
|
+
dependencies.push({
|
|
53
|
+
project_id: dependency.modrinth_project_id ||
|
|
54
|
+
(await getModrinthProjectBySlug(dependency.slug, token)),
|
|
55
|
+
type: dependency.type,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
versionData.dependencies = dependencies;
|
|
59
|
+
}
|
|
47
60
|
const changelog = resolveAndRenderTemplate([modrinth?.changelog, nextRelease.notes], {
|
|
48
61
|
...context,
|
|
49
62
|
...strategy,
|
|
@@ -82,26 +95,35 @@ export async function publishToModrinth(pluginConfig, context, strategy) {
|
|
|
82
95
|
}
|
|
83
96
|
const headers = form.getHeaders();
|
|
84
97
|
headers['Content-Length'] = form.getLengthSync();
|
|
85
|
-
const
|
|
98
|
+
const versionRes = await axios.post('https://api.modrinth.com/v2/version', form, {
|
|
86
99
|
headers: {
|
|
87
100
|
...headers,
|
|
88
101
|
Authorization: token,
|
|
89
102
|
},
|
|
90
103
|
validateStatus: (status) => status < 500,
|
|
91
104
|
});
|
|
92
|
-
const resData =
|
|
93
|
-
if (
|
|
105
|
+
const resData = versionRes.data;
|
|
106
|
+
if (versionRes.status === 200) {
|
|
94
107
|
logger.log(`Successfully published to Modrinth: ${resData.project_id} (File ID: ${resData.file_id})`);
|
|
95
|
-
return
|
|
108
|
+
return versionRes.data.id;
|
|
96
109
|
}
|
|
97
|
-
else if (
|
|
98
|
-
|
|
99
|
-
throw new Error(`Failed to publish to Modrinth (${versionResponse.status}): ${resData.error}\n${resData.description}`);
|
|
110
|
+
else if (versionRes.status === 400 || versionRes.status === 401) {
|
|
111
|
+
throw new Error(`Failed to publish to Modrinth (${versionRes.status}): ${resData.error}\n${resData.description}`);
|
|
100
112
|
}
|
|
101
113
|
else {
|
|
102
|
-
logger.log('Headers:',
|
|
114
|
+
logger.log('Headers:', versionRes.headers);
|
|
103
115
|
logger.log('Data:', resData);
|
|
104
|
-
throw new Error(`Failed to publish to Modrinth (${
|
|
116
|
+
throw new Error(`Failed to publish to Modrinth (${versionRes.status}): ${versionRes.statusText}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async function getModrinthProjectBySlug(slug, token) {
|
|
120
|
+
const projectRes = await axios.get(`https://api.modrinth.com/v2/project/${slug}`, {
|
|
121
|
+
headers: {
|
|
122
|
+
Authorization: token,
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
if (projectRes.status === 200) {
|
|
126
|
+
return projectRes.data.id;
|
|
105
127
|
}
|
|
106
128
|
}
|
|
107
129
|
//# 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,
|
|
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,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,IAAI,QAAQ,EAAE,YAAY,EAAE,CAAC;QACzB,WAAW,CAAC,YAAY,GAAG,QAAQ,EAAE,YAAY,CAAC;IACtD,CAAC;SAAM,CAAC;QACJ,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,UAAU,IAAI,YAAY,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YACvD,YAAY,CAAC,IAAI,CAAC;gBACd,UAAU,EACN,UAAU,CAAC,mBAAmB;oBAC9B,CAAC,MAAM,wBAAwB,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC5D,IAAI,EAAE,UAAU,CAAC,IAAI;aACxB,CAAC,CAAC;QACP,CAAC;QACD,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;IAC5C,CAAC;IAED,MAAM,SAAS,GAAG,wBAAwB,CACtC,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,EACxC;QACI,GAAG,OAAO;QACV,GAAG,QAAQ;KACd,CACJ,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACZ,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,WAAW,CAAC,IAAI;QACZ,wBAAwB,CACpB,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,EACnD;YACI,GAAG,OAAO;YACV,GAAG,QAAQ;SACd,CACJ,IAAI,WAAW,CAAC,IAAI,CAAC;IAE1B,WAAW,CAAC,cAAc;QACtB,wBAAwB,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE;YACjD,GAAG,OAAO;YACV,GAAG,QAAQ;SACd,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC;IAE9B,WAAW,CAAC,aAAa;QACrB,yBAAyB,CACrB,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,aAAa,CAAC,EACrD;YACI,GAAG,OAAO;YACV,GAAG,QAAQ;SACd,CACJ,IAAI,EAAE,CAAC;IAEZ,WAAW,CAAC,OAAO;QACf,yBAAyB,CACrB,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,EACjD;YACI,GAAG,OAAO;YACV,GAAG,QAAQ;SACd,CACJ,IAAI,EAAE,CAAC;IAEZ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;QAC7C,WAAW,EAAE,kBAAkB;KAClC,CAAC,CAAC;IAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAClC,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAEjD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,IAAI,CAC/B,qCAAqC,EACrC,IAAI,EACJ;QACI,OAAO,EAAE;YACL,GAAG,OAAO;YACV,aAAa,EAAE,KAAK;SACvB;QACD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,GAAG;KAC3C,CACJ,CAAC;IAEF,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;IAEhC,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CACN,uCAAuC,OAAO,CAAC,UAAU,cAAc,OAAO,CAAC,OAAO,GAAG,CAC5F,CAAC;QACF,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9B,CAAC;SAAM,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACX,kCAAkC,UAAU,CAAC,MAAM,MAAM,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,EAAE,CACnG,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,MAAM,IAAI,KAAK,CACX,kCAAkC,UAAU,CAAC,MAAM,MAAM,UAAU,CAAC,UAAU,EAAE,CACnF,CAAC;IACN,CAAC;AACL,CAAC;AAED,KAAK,UAAU,wBAAwB,CACnC,IAAY,EACZ,KAAa;IAEb,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAC9B,uCAAuC,IAAI,EAAE,EAC7C;QACI,OAAO,EAAE;YACL,aAAa,EAAE,KAAK;SACvB;KACJ,CACJ,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9B,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
package/src/curseforge.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import FormData from 'form-data';
|
|
3
3
|
import { readFileSync } from 'fs';
|
|
4
|
+
import lodash from 'lodash';
|
|
4
5
|
import { basename } from 'path';
|
|
5
6
|
import { PublishContext } from 'semantic-release';
|
|
7
|
+
import { DependencyTypeMap } from './definitions/curseforge.js';
|
|
6
8
|
import { PluginConfig } from './definitions/plugin-config.js';
|
|
7
9
|
import { findFilesAndPrimaryFile } from './utils/platform/utils.js';
|
|
8
10
|
import {
|
|
9
11
|
resolveAndRenderTemplate,
|
|
10
12
|
resolveAndRenderTemplates,
|
|
11
13
|
} from './utils/template-utils.js';
|
|
12
|
-
import lodash from "lodash";
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Publishes files to CurseForge.
|
|
@@ -134,7 +135,9 @@ function prepareMetadata(
|
|
|
134
135
|
const metadata: any = {
|
|
135
136
|
gameVersions: curseforgeGameVersionIds,
|
|
136
137
|
releaseType: pluginConfig.release_type || 'release',
|
|
137
|
-
changelog: lodash.template(
|
|
138
|
+
changelog: lodash.template(
|
|
139
|
+
curseforge?.changelog || context.nextRelease.notes
|
|
140
|
+
)({ ...context, ...strategy }),
|
|
138
141
|
changelogType: curseforge?.changelog_type || 'markdown',
|
|
139
142
|
isMarkedForManualRelease:
|
|
140
143
|
curseforge?.is_marked_for_manual_release || false,
|
|
@@ -145,11 +148,28 @@ function prepareMetadata(
|
|
|
145
148
|
: {},
|
|
146
149
|
};
|
|
147
150
|
|
|
151
|
+
if (curseforge?.relations) {
|
|
152
|
+
metadata.relations = {
|
|
153
|
+
projects: curseforge?.relations,
|
|
154
|
+
};
|
|
155
|
+
} else {
|
|
156
|
+
let projects = [];
|
|
157
|
+
for (const dependency of pluginConfig.dependencies || []) {
|
|
158
|
+
projects.push({
|
|
159
|
+
slug: dependency.slug,
|
|
160
|
+
project_id: dependency.curseforge_project_id,
|
|
161
|
+
type: DependencyTypeMap[dependency.type],
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
metadata.relations = {
|
|
165
|
+
projects,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
148
169
|
metadata.displayName =
|
|
149
170
|
resolveAndRenderTemplate(
|
|
150
171
|
[curseforge?.display_name, pluginConfig.display_name],
|
|
151
172
|
{
|
|
152
|
-
|
|
153
173
|
...context,
|
|
154
174
|
...strategy,
|
|
155
175
|
}
|
|
@@ -49,3 +49,16 @@ export const BUKKIT_GAME_VERSION_TYPE: CurseForgeGameVersionType = {
|
|
|
49
49
|
name: 'Bukkit',
|
|
50
50
|
slug: 'bukkit',
|
|
51
51
|
};
|
|
52
|
+
|
|
53
|
+
export type GlobalDependencyType =
|
|
54
|
+
| 'required'
|
|
55
|
+
| 'optional'
|
|
56
|
+
| 'incompatible'
|
|
57
|
+
| 'embedded';
|
|
58
|
+
|
|
59
|
+
export const DependencyTypeMap = {
|
|
60
|
+
required: 'requiredDependency',
|
|
61
|
+
optional: 'optionalDependency',
|
|
62
|
+
incompatible: 'incompatible',
|
|
63
|
+
embedded: 'embeddedLibrary',
|
|
64
|
+
};
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
import { GlobalDependencyType } from './curseforge';
|
|
2
|
+
|
|
1
3
|
export type PluginConfig = {
|
|
2
4
|
release_type?: 'alpha' | 'beta' | 'release';
|
|
3
5
|
game_versions?: string | string[];
|
|
4
6
|
mod_loaders?: string | string[];
|
|
5
7
|
display_name?: string;
|
|
8
|
+
dependencies?: Array<{
|
|
9
|
+
slug: string;
|
|
10
|
+
curseforge_project_id?: string;
|
|
11
|
+
modrinth_project_id?: string;
|
|
12
|
+
type: GlobalDependencyType;
|
|
13
|
+
}>;
|
|
6
14
|
|
|
7
15
|
// Global release strategy configuration for multiple publish operations
|
|
8
16
|
strategies?: Record<any, any>[];
|
|
@@ -26,10 +34,10 @@ export type PluginConfig = {
|
|
|
26
34
|
slug: string;
|
|
27
35
|
project_id?: string;
|
|
28
36
|
type:
|
|
29
|
-
| '
|
|
37
|
+
| 'embeddedLibrary'
|
|
30
38
|
| 'incompatible'
|
|
31
|
-
| '
|
|
32
|
-
| '
|
|
39
|
+
| 'optionalDependency'
|
|
40
|
+
| 'requiredDependency'
|
|
33
41
|
| 'tool';
|
|
34
42
|
}>;
|
|
35
43
|
glob?: string | string[];
|
package/src/modrinth.ts
CHANGED
|
@@ -61,7 +61,6 @@ export async function publishToModrinth(
|
|
|
61
61
|
project_id: projectId,
|
|
62
62
|
file_parts: filePartNames,
|
|
63
63
|
version_type: pluginConfig.release_type || 'release',
|
|
64
|
-
dependencies: modrinth?.dependencies || [],
|
|
65
64
|
featured: modrinth?.featured || false,
|
|
66
65
|
status: modrinth?.status || 'listed',
|
|
67
66
|
requested_status: modrinth?.requested_status || 'listed',
|
|
@@ -71,6 +70,21 @@ export async function publishToModrinth(
|
|
|
71
70
|
versionData.primary_file = primaryFilePartName;
|
|
72
71
|
}
|
|
73
72
|
|
|
73
|
+
if (modrinth?.dependencies) {
|
|
74
|
+
versionData.dependencies = modrinth?.dependencies;
|
|
75
|
+
} else {
|
|
76
|
+
let dependencies = [];
|
|
77
|
+
for (const dependency of pluginConfig.dependencies || []) {
|
|
78
|
+
dependencies.push({
|
|
79
|
+
project_id:
|
|
80
|
+
dependency.modrinth_project_id ||
|
|
81
|
+
(await getModrinthProjectBySlug(dependency.slug, token)),
|
|
82
|
+
type: dependency.type,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
versionData.dependencies = dependencies;
|
|
86
|
+
}
|
|
87
|
+
|
|
74
88
|
const changelog = resolveAndRenderTemplate(
|
|
75
89
|
[modrinth?.changelog, nextRelease.notes],
|
|
76
90
|
{
|
|
@@ -131,7 +145,7 @@ export async function publishToModrinth(
|
|
|
131
145
|
const headers = form.getHeaders();
|
|
132
146
|
headers['Content-Length'] = form.getLengthSync();
|
|
133
147
|
|
|
134
|
-
const
|
|
148
|
+
const versionRes = await axios.post(
|
|
135
149
|
'https://api.modrinth.com/v2/version',
|
|
136
150
|
form,
|
|
137
151
|
{
|
|
@@ -143,25 +157,39 @@ export async function publishToModrinth(
|
|
|
143
157
|
}
|
|
144
158
|
);
|
|
145
159
|
|
|
146
|
-
const resData =
|
|
160
|
+
const resData = versionRes.data;
|
|
147
161
|
|
|
148
|
-
if (
|
|
162
|
+
if (versionRes.status === 200) {
|
|
149
163
|
logger.log(
|
|
150
164
|
`Successfully published to Modrinth: ${resData.project_id} (File ID: ${resData.file_id})`
|
|
151
165
|
);
|
|
152
|
-
return
|
|
153
|
-
} else if (
|
|
154
|
-
versionResponse.status === 400 ||
|
|
155
|
-
versionResponse.status === 401
|
|
156
|
-
) {
|
|
166
|
+
return versionRes.data.id;
|
|
167
|
+
} else if (versionRes.status === 400 || versionRes.status === 401) {
|
|
157
168
|
throw new Error(
|
|
158
|
-
`Failed to publish to Modrinth (${
|
|
169
|
+
`Failed to publish to Modrinth (${versionRes.status}): ${resData.error}\n${resData.description}`
|
|
159
170
|
);
|
|
160
171
|
} else {
|
|
161
|
-
logger.log('Headers:',
|
|
172
|
+
logger.log('Headers:', versionRes.headers);
|
|
162
173
|
logger.log('Data:', resData);
|
|
163
174
|
throw new Error(
|
|
164
|
-
`Failed to publish to Modrinth (${
|
|
175
|
+
`Failed to publish to Modrinth (${versionRes.status}): ${versionRes.statusText}`
|
|
165
176
|
);
|
|
166
177
|
}
|
|
167
178
|
}
|
|
179
|
+
|
|
180
|
+
async function getModrinthProjectBySlug(
|
|
181
|
+
slug: string,
|
|
182
|
+
token: string
|
|
183
|
+
): Promise<string | undefined> {
|
|
184
|
+
const projectRes = await axios.get(
|
|
185
|
+
`https://api.modrinth.com/v2/project/${slug}`,
|
|
186
|
+
{
|
|
187
|
+
headers: {
|
|
188
|
+
Authorization: token,
|
|
189
|
+
},
|
|
190
|
+
}
|
|
191
|
+
);
|
|
192
|
+
if (projectRes.status === 200) {
|
|
193
|
+
return projectRes.data.id;
|
|
194
|
+
}
|
|
195
|
+
}
|