@axeth/create-cli 1.0.3 → 1.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/package.json +4 -1
- package/src/class/AxethCLI.ts +30 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axeth/create-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"bin": {
|
|
5
5
|
"axeth-cli": "index.ts"
|
|
6
6
|
},
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
10
10
|
"license": "MIT",
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"@types/bun": "latest"
|
|
13
|
+
},
|
|
11
14
|
"dependencies": {
|
|
12
15
|
"@clack/prompts": "^0.11.0",
|
|
13
16
|
"@types/fs-extra": "^11.0.4",
|
package/src/class/AxethCLI.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as prompt from "@clack/prompts";
|
|
2
2
|
import color from "colors";
|
|
3
3
|
import type { TemplateGenerators } from "./TemplateGenerators.js";
|
|
4
|
+
import fs from "fs-extra";
|
|
5
|
+
import path from "path";
|
|
4
6
|
|
|
5
7
|
class AxethCLI {
|
|
6
8
|
private promptGroups: Record<string, Record<string, (opts?: any) => any>> = {};
|
|
@@ -32,6 +34,8 @@ class AxethCLI {
|
|
|
32
34
|
const config = await this.configPrompt();
|
|
33
35
|
const spinner = prompt.spinner({ indicator: "dots" });
|
|
34
36
|
spinner.start("Generating template files...");
|
|
37
|
+
const minecraftServerVersion = await this.getMinecraftServerVersion();
|
|
38
|
+
const minecraftServerUIVersion = await this.getMinecraftServerUIVersion();
|
|
35
39
|
await this.template.generate({
|
|
36
40
|
"project_name": (addonInfo.addonName as string).replace(/\s+/g, "-").toLowerCase(),
|
|
37
41
|
"axethApiVersion": config.axethApiVersion,
|
|
@@ -43,6 +47,8 @@ class AxethCLI {
|
|
|
43
47
|
"axethApiName": this.axethAPI,
|
|
44
48
|
"axethCoreName": this.axethCore,
|
|
45
49
|
"axethCoreVersion": config.axethCoreVersion,
|
|
50
|
+
"minecraftServerUIVersion": minecraftServerUIVersion,
|
|
51
|
+
"minecraftServerVersion": minecraftServerVersion
|
|
46
52
|
}, spinner);
|
|
47
53
|
spinner.stop("Template files generated.");
|
|
48
54
|
const projectDir = (addonInfo.addonName as string).replace(/\s+/g, "-").toLowerCase();
|
|
@@ -51,6 +57,15 @@ class AxethCLI {
|
|
|
51
57
|
spinner.start("Installing dependencies...");
|
|
52
58
|
try {
|
|
53
59
|
await new Promise<void>((resolve, reject) => {
|
|
60
|
+
//add dependency installation @minecraft/server{minecraftServerVersion} and @minecraft/server-ui@{minecraftServerUIVersion}
|
|
61
|
+
//edit package.json to add these dependencies
|
|
62
|
+
const packageJsonPath = path.join(cwd, 'package.json');
|
|
63
|
+
const packageJson = fs.readJsonSync(packageJsonPath);
|
|
64
|
+
packageJson.dependencies = packageJson.dependencies || {};
|
|
65
|
+
packageJson.dependencies['@minecraft/server'] = `^${minecraftServerVersion}`;
|
|
66
|
+
packageJson.dependencies['@minecraft/server-ui'] = `^${minecraftServerUIVersion}`;
|
|
67
|
+
fs.writeJsonSync(packageJsonPath, packageJson, { spaces: 2 });
|
|
68
|
+
|
|
54
69
|
const child = spawn('bun', ['install'], { cwd, shell: true });
|
|
55
70
|
let errorOutput = '';
|
|
56
71
|
child.stderr && child.stderr.on('data', (data: Buffer) => {
|
|
@@ -126,6 +141,21 @@ class AxethCLI {
|
|
|
126
141
|
})
|
|
127
142
|
}
|
|
128
143
|
|
|
144
|
+
private async getMinecraftServerVersion() {
|
|
145
|
+
const moduleData: any = await fetch(`https://registry.npmjs.org/@minecraft/server`)
|
|
146
|
+
.then(res => res.json());
|
|
147
|
+
|
|
148
|
+
const distTag = moduleData["dist-tags"];
|
|
149
|
+
return distTag.latest;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
private async getMinecraftServerUIVersion() {
|
|
153
|
+
const moduleData: any = await fetch(`https://registry.npmjs.org/@minecraft/server-ui`)
|
|
154
|
+
.then(res => res.json());
|
|
155
|
+
const distTag = moduleData["dist-tags"];
|
|
156
|
+
return distTag.latest;
|
|
157
|
+
}
|
|
158
|
+
|
|
129
159
|
private registerPrompt(groupId: string, key: string, message: string, type: "text" | "password" | "confirm" | "select" | "multiselect" = "text", options: any = {}) {
|
|
130
160
|
if (!this.promptGroups[groupId]) this.promptGroups[groupId] = {};
|
|
131
161
|
this.promptDefaults[groupId] = this.promptDefaults[groupId] || {};
|