@akaanakbaik/pterodactyl-gateway 0.5.0 → 0.8.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/dist/cli-entry.js +21 -3
- package/dist/cli-entry.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +212 -0
- package/dist/config.js.map +1 -0
- package/dist/templates.d.ts +2 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +139 -0
- package/dist/templates.js.map +1 -0
- package/dist/wizard.js +5 -5
- package/package.json +4 -3
package/dist/cli-entry.js
CHANGED
|
@@ -8,7 +8,7 @@ const EXPLAINS = {
|
|
|
8
8
|
reason: "Env PTERO_DOMAIN belum tersedia atau config createPtero belum berisi domain/panelUrl.",
|
|
9
9
|
fix: [
|
|
10
10
|
"export PTERO_DOMAIN=\"https://panel.example.com\"",
|
|
11
|
-
"
|
|
11
|
+
"atau pakai: ptero-gateway config init --domain https://panel.example.com --ptla ptla_xxx --ptlc ptlc_xxx",
|
|
12
12
|
"jalankan ulang: ptero-gateway doctor"
|
|
13
13
|
]
|
|
14
14
|
},
|
|
@@ -18,7 +18,7 @@ const EXPLAINS = {
|
|
|
18
18
|
fix: [
|
|
19
19
|
"buat Application API Key di panel admin Pterodactyl",
|
|
20
20
|
"export PTERO_PTLA=\"ptla_xxx\"",
|
|
21
|
-
"
|
|
21
|
+
"atau simpan di profile: ptero-gateway config init --domain ... --ptla ptla_xxx"
|
|
22
22
|
]
|
|
23
23
|
},
|
|
24
24
|
PTLC_REQUIRED: {
|
|
@@ -27,7 +27,7 @@ const EXPLAINS = {
|
|
|
27
27
|
fix: [
|
|
28
28
|
"buat Client API Key dari account panel",
|
|
29
29
|
"export PTERO_PTLC=\"ptlc_xxx\"",
|
|
30
|
-
"
|
|
30
|
+
"atau simpan di profile: ptero-gateway config init --domain ... --ptlc ptlc_xxx"
|
|
31
31
|
]
|
|
32
32
|
},
|
|
33
33
|
DOCKER_IMAGE_NOT_FOUND: {
|
|
@@ -105,6 +105,14 @@ else if (command === "env-template") {
|
|
|
105
105
|
].join("\n");
|
|
106
106
|
console.log(content);
|
|
107
107
|
}
|
|
108
|
+
else if (command === "config") {
|
|
109
|
+
const { configCommand } = await import("./config.js");
|
|
110
|
+
await configCommand(rawArgs.slice(1));
|
|
111
|
+
}
|
|
112
|
+
else if (command === "templates") {
|
|
113
|
+
const { templatesCommand } = await import("./templates.js");
|
|
114
|
+
templatesCommand(rawArgs.slice(1));
|
|
115
|
+
}
|
|
108
116
|
else if (command === "explain") {
|
|
109
117
|
const code = (rawArgs[1] ?? "").toUpperCase();
|
|
110
118
|
const result = EXPLAINS[code];
|
|
@@ -119,12 +127,22 @@ else if (command === "explain") {
|
|
|
119
127
|
}
|
|
120
128
|
}
|
|
121
129
|
else {
|
|
130
|
+
const { applyConfigProfile } = await import("./config.js");
|
|
131
|
+
applyConfigProfile();
|
|
122
132
|
await import("./cli.js");
|
|
123
133
|
}
|
|
124
134
|
function printHelp() {
|
|
125
135
|
console.log(`Akadev Pterodactyl Gateway
|
|
126
136
|
|
|
127
137
|
Perintah:
|
|
138
|
+
ptero-gateway config help
|
|
139
|
+
ptero-gateway config init --domain https://panel.example.com --ptla ptla_xxx --ptlc ptlc_xxx
|
|
140
|
+
ptero-gateway config list
|
|
141
|
+
ptero-gateway config use <profile>
|
|
142
|
+
ptero-gateway config doctor
|
|
143
|
+
ptero-gateway templates list
|
|
144
|
+
ptero-gateway templates show nodejs-bot
|
|
145
|
+
ptero-gateway templates command nodejs-bot --name "bot saya" --email user@example.com --node 1 --nest 5 --egg 18
|
|
128
146
|
ptero-gateway presets [--json]
|
|
129
147
|
ptero-gateway explain <ERROR_CODE> [--json]
|
|
130
148
|
ptero-gateway env-template
|
package/dist/cli-entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../src/cli-entry.ts"],"names":[],"mappings":";AAEA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAE5C,MAAM,QAAQ,GAAqE;IACjF,eAAe,EAAE;QACf,KAAK,EAAE,0BAA0B;QACjC,MAAM,EAAE,uFAAuF;QAC/F,GAAG,EAAE;YACH,mDAAmD;YACnD
|
|
1
|
+
{"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../src/cli-entry.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type GatewayProfile = {
|
|
2
|
+
domain: string;
|
|
3
|
+
ptla?: string;
|
|
4
|
+
ptlc?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function configCommand(args: string[]): Promise<void>;
|
|
7
|
+
export declare function applyConfigProfile(profileName?: string | undefined): boolean;
|
|
8
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAUF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,iBAmGjD;AAED,wBAAgB,kBAAkB,CAAC,WAAW,qBAA4B,WAWzE"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, chmodSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
const CONFIG_DIR = join(homedir(), ".pterodactyl-gateway");
|
|
5
|
+
const CONFIG_FILE = join(CONFIG_DIR, "config.json");
|
|
6
|
+
export async function configCommand(args) {
|
|
7
|
+
const action = args[0] ?? "help";
|
|
8
|
+
const jsonMode = args.includes("--json");
|
|
9
|
+
if (["help", "--help", "-h"].includes(action)) {
|
|
10
|
+
printConfigHelp();
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (action === "path") {
|
|
14
|
+
console.log(CONFIG_FILE);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (action === "init" || action === "set") {
|
|
18
|
+
const profile = getOption(args, "--profile") ?? getOption(args, "--name") ?? "default";
|
|
19
|
+
const domain = getOption(args, "--domain") ?? process.env.PTERO_DOMAIN;
|
|
20
|
+
const ptla = getOption(args, "--ptla") ?? process.env.PTERO_PTLA;
|
|
21
|
+
const ptlc = getOption(args, "--ptlc") ?? process.env.PTERO_PTLC;
|
|
22
|
+
if (!domain)
|
|
23
|
+
throw new Error("--domain wajib diisi atau set PTERO_DOMAIN dulu.");
|
|
24
|
+
const config = readConfig();
|
|
25
|
+
config.profiles[profile] = compactProfile({ domain, ptla, ptlc });
|
|
26
|
+
config.active = profile;
|
|
27
|
+
writeConfig(config);
|
|
28
|
+
printJsonOrText(jsonMode, safeConfig(config), `Profile '${profile}' tersimpan dan aktif.`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (action === "list") {
|
|
32
|
+
const config = readConfig();
|
|
33
|
+
const rows = Object.entries(config.profiles).map(([name, profile]) => ({
|
|
34
|
+
name,
|
|
35
|
+
active: config.active === name ? "yes" : "no",
|
|
36
|
+
domain: profile.domain,
|
|
37
|
+
ptla: profile.ptla ? maskSecret(profile.ptla) : "-",
|
|
38
|
+
ptlc: profile.ptlc ? maskSecret(profile.ptlc) : "-"
|
|
39
|
+
}));
|
|
40
|
+
printJsonOrText(jsonMode, safeConfig(config), rows.length ? table(rows, ["name", "active", "domain", "ptla", "ptlc"]) : "Belum ada config profile.");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (action === "show") {
|
|
44
|
+
const config = readConfig();
|
|
45
|
+
const profileName = args[1] && !args[1].startsWith("--") ? args[1] : config.active;
|
|
46
|
+
if (!profileName)
|
|
47
|
+
throw new Error("Belum ada active profile. Jalankan: ptero-gateway config init --domain ...");
|
|
48
|
+
const profile = config.profiles[profileName];
|
|
49
|
+
if (!profile)
|
|
50
|
+
throw new Error(`Profile tidak ditemukan: ${profileName}`);
|
|
51
|
+
printJsonOrText(jsonMode, { name: profileName, ...safeProfile(profile) }, formatProfile(profileName, profile));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (action === "use") {
|
|
55
|
+
const profileName = args[1];
|
|
56
|
+
if (!profileName)
|
|
57
|
+
throw new Error("Format: ptero-gateway config use <profile>");
|
|
58
|
+
const config = readConfig();
|
|
59
|
+
if (!config.profiles[profileName])
|
|
60
|
+
throw new Error(`Profile tidak ditemukan: ${profileName}`);
|
|
61
|
+
config.active = profileName;
|
|
62
|
+
writeConfig(config);
|
|
63
|
+
printJsonOrText(jsonMode, safeConfig(config), `Profile aktif: ${profileName}`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (action === "env") {
|
|
67
|
+
const config = readConfig();
|
|
68
|
+
const profileName = args[1] && !args[1].startsWith("--") ? args[1] : config.active;
|
|
69
|
+
if (!profileName)
|
|
70
|
+
throw new Error("Belum ada active profile.");
|
|
71
|
+
const profile = config.profiles[profileName];
|
|
72
|
+
if (!profile)
|
|
73
|
+
throw new Error(`Profile tidak ditemukan: ${profileName}`);
|
|
74
|
+
console.log(toEnv(profile));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (action === "doctor") {
|
|
78
|
+
const config = readConfig();
|
|
79
|
+
const profileName = args[1] && !args[1].startsWith("--") ? args[1] : config.active;
|
|
80
|
+
const profile = profileName ? config.profiles[profileName] : undefined;
|
|
81
|
+
const result = {
|
|
82
|
+
ok: Boolean(profile?.domain && (profile.ptla || profile.ptlc)),
|
|
83
|
+
path: CONFIG_FILE,
|
|
84
|
+
active: profileName ?? null,
|
|
85
|
+
profileExists: Boolean(profile),
|
|
86
|
+
hasDomain: Boolean(profile?.domain),
|
|
87
|
+
hasPtla: Boolean(profile?.ptla),
|
|
88
|
+
hasPtlc: Boolean(profile?.ptlc)
|
|
89
|
+
};
|
|
90
|
+
const pretty = [
|
|
91
|
+
`Config: ${result.ok ? "OK" : "PERLU DILENGKAPI"}`,
|
|
92
|
+
`Path: ${result.path}`,
|
|
93
|
+
`Active: ${result.active ?? "-"}`,
|
|
94
|
+
`${result.profileExists ? "✓" : "✗"} profile tersedia`,
|
|
95
|
+
`${result.hasDomain ? "✓" : "✗"} domain`,
|
|
96
|
+
`${result.hasPtla ? "✓" : "-"} PTLA`,
|
|
97
|
+
`${result.hasPtlc ? "✓" : "-"} PTLC`
|
|
98
|
+
].join("\n");
|
|
99
|
+
printJsonOrText(jsonMode, result, pretty);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
throw new Error(`Config command tidak dikenal: ${action}`);
|
|
103
|
+
}
|
|
104
|
+
export function applyConfigProfile(profileName = process.env.PTERO_PROFILE) {
|
|
105
|
+
if (!existsSync(CONFIG_FILE))
|
|
106
|
+
return false;
|
|
107
|
+
const config = readConfig();
|
|
108
|
+
const active = profileName || config.active;
|
|
109
|
+
if (!active)
|
|
110
|
+
return false;
|
|
111
|
+
const profile = config.profiles[active];
|
|
112
|
+
if (!profile)
|
|
113
|
+
return false;
|
|
114
|
+
process.env.PTERO_DOMAIN ||= profile.domain;
|
|
115
|
+
if (profile.ptla)
|
|
116
|
+
process.env.PTERO_PTLA ||= profile.ptla;
|
|
117
|
+
if (profile.ptlc)
|
|
118
|
+
process.env.PTERO_PTLC ||= profile.ptlc;
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
function readConfig() {
|
|
122
|
+
if (!existsSync(CONFIG_FILE))
|
|
123
|
+
return { profiles: {} };
|
|
124
|
+
const raw = JSON.parse(readFileSync(CONFIG_FILE, "utf8"));
|
|
125
|
+
return { active: raw.active, profiles: raw.profiles ?? {} };
|
|
126
|
+
}
|
|
127
|
+
function writeConfig(config) {
|
|
128
|
+
mkdirSync(dirname(CONFIG_FILE), { recursive: true });
|
|
129
|
+
writeFileSync(CONFIG_FILE, `${JSON.stringify(config, null, 2)}\n`, "utf8");
|
|
130
|
+
try {
|
|
131
|
+
chmodSync(CONFIG_FILE, 0o600);
|
|
132
|
+
}
|
|
133
|
+
catch { }
|
|
134
|
+
}
|
|
135
|
+
function compactProfile(profile) {
|
|
136
|
+
return {
|
|
137
|
+
domain: profile.domain.replace(/\/$/, ""),
|
|
138
|
+
...(profile.ptla ? { ptla: profile.ptla } : {}),
|
|
139
|
+
...(profile.ptlc ? { ptlc: profile.ptlc } : {})
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function getOption(args, name) {
|
|
143
|
+
const index = args.indexOf(name);
|
|
144
|
+
if (index < 0)
|
|
145
|
+
return undefined;
|
|
146
|
+
return args[index + 1];
|
|
147
|
+
}
|
|
148
|
+
function safeConfig(config) {
|
|
149
|
+
return {
|
|
150
|
+
active: config.active,
|
|
151
|
+
profiles: Object.fromEntries(Object.entries(config.profiles).map(([name, profile]) => [name, safeProfile(profile)]))
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function safeProfile(profile) {
|
|
155
|
+
return {
|
|
156
|
+
domain: profile.domain,
|
|
157
|
+
ptla: profile.ptla ? maskSecret(profile.ptla) : undefined,
|
|
158
|
+
ptlc: profile.ptlc ? maskSecret(profile.ptlc) : undefined
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function formatProfile(name, profile) {
|
|
162
|
+
return [
|
|
163
|
+
`Profile: ${name}`,
|
|
164
|
+
`Domain: ${profile.domain}`,
|
|
165
|
+
`PTLA: ${profile.ptla ? maskSecret(profile.ptla) : "-"}`,
|
|
166
|
+
`PTLC: ${profile.ptlc ? maskSecret(profile.ptlc) : "-"}`
|
|
167
|
+
].join("\n");
|
|
168
|
+
}
|
|
169
|
+
function toEnv(profile) {
|
|
170
|
+
return [
|
|
171
|
+
`export PTERO_DOMAIN=${JSON.stringify(profile.domain)}`,
|
|
172
|
+
profile.ptla ? `export PTERO_PTLA=${JSON.stringify(profile.ptla)}` : "",
|
|
173
|
+
profile.ptlc ? `export PTERO_PTLC=${JSON.stringify(profile.ptlc)}` : ""
|
|
174
|
+
].filter(Boolean).join("\n");
|
|
175
|
+
}
|
|
176
|
+
function maskSecret(value) {
|
|
177
|
+
if (value.length <= 10)
|
|
178
|
+
return "********";
|
|
179
|
+
return `${value.slice(0, 5)}********${value.slice(-4)}`;
|
|
180
|
+
}
|
|
181
|
+
function printJsonOrText(jsonMode, raw, text) {
|
|
182
|
+
if (jsonMode)
|
|
183
|
+
console.log(JSON.stringify(raw, null, 2));
|
|
184
|
+
else
|
|
185
|
+
console.log(text);
|
|
186
|
+
}
|
|
187
|
+
function table(rows, columns) {
|
|
188
|
+
const widths = columns.map(column => Math.max(column.length, ...rows.map(row => String(row[column] ?? "").length)));
|
|
189
|
+
return [
|
|
190
|
+
columns.map((column, index) => column.padEnd(widths[index] ?? column.length)).join(" "),
|
|
191
|
+
widths.map(width => "-".repeat(width)).join(" "),
|
|
192
|
+
...rows.map(row => columns.map((column, index) => String(row[column] ?? "").padEnd(widths[index] ?? column.length)).join(" "))
|
|
193
|
+
].join("\n");
|
|
194
|
+
}
|
|
195
|
+
function printConfigHelp() {
|
|
196
|
+
console.log(`Akadev Pterodactyl Gateway Config
|
|
197
|
+
|
|
198
|
+
Perintah:
|
|
199
|
+
ptero-gateway config path
|
|
200
|
+
ptero-gateway config init --domain https://panel.example.com --ptla ptla_xxx --ptlc ptlc_xxx
|
|
201
|
+
ptero-gateway config init --profile prod --domain https://panel.example.com --ptla ptla_xxx --ptlc ptlc_xxx
|
|
202
|
+
ptero-gateway config list
|
|
203
|
+
ptero-gateway config show [profile]
|
|
204
|
+
ptero-gateway config use <profile>
|
|
205
|
+
ptero-gateway config env [profile]
|
|
206
|
+
ptero-gateway config doctor
|
|
207
|
+
|
|
208
|
+
Catatan:
|
|
209
|
+
File config disimpan di ~/.pterodactyl-gateway/config.json dengan permission 600.
|
|
210
|
+
CLI otomatis memakai active profile jika env PTERO_DOMAIN/PTERO_PTLA/PTERO_PTLC belum di-set.`);
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAwCA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAqD9C"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
const TEMPLATES = {
|
|
2
|
+
"nodejs-bot": {
|
|
3
|
+
description: "Bot Node.js umum dengan preset basic dan startup node index.js.",
|
|
4
|
+
preset: "basic",
|
|
5
|
+
startup: "node index.js",
|
|
6
|
+
dockerImage: "auto",
|
|
7
|
+
recommendedFiles: ["package.json", "index.js"]
|
|
8
|
+
},
|
|
9
|
+
"nodejs-api": {
|
|
10
|
+
description: "API Express/Fastify ringan dengan preset standard.",
|
|
11
|
+
preset: "standard",
|
|
12
|
+
startup: "npm start",
|
|
13
|
+
dockerImage: "auto",
|
|
14
|
+
recommendedFiles: ["package.json", "src/index.js"]
|
|
15
|
+
},
|
|
16
|
+
"wa-bot": {
|
|
17
|
+
description: "Bot WhatsApp/Baileys dengan preset standard.",
|
|
18
|
+
preset: "standard",
|
|
19
|
+
startup: "npm start",
|
|
20
|
+
dockerImage: "auto",
|
|
21
|
+
recommendedFiles: ["package.json", "index.js", "sessions/"]
|
|
22
|
+
},
|
|
23
|
+
"python-bot": {
|
|
24
|
+
description: "Bot Python ringan dengan preset basic.",
|
|
25
|
+
preset: "basic",
|
|
26
|
+
startup: "python3 main.py",
|
|
27
|
+
dockerImage: "auto",
|
|
28
|
+
recommendedFiles: ["requirements.txt", "main.py"]
|
|
29
|
+
},
|
|
30
|
+
"blank": {
|
|
31
|
+
description: "Server kosong untuk upload manual.",
|
|
32
|
+
preset: "mini",
|
|
33
|
+
startup: "bash",
|
|
34
|
+
dockerImage: "auto",
|
|
35
|
+
recommendedFiles: []
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
export function templatesCommand(args) {
|
|
39
|
+
const action = args[0] ?? "list";
|
|
40
|
+
const jsonMode = args.includes("--json");
|
|
41
|
+
if (["help", "--help", "-h"].includes(action)) {
|
|
42
|
+
printTemplatesHelp();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (action === "list") {
|
|
46
|
+
const rows = Object.entries(TEMPLATES).map(([name, template]) => ({
|
|
47
|
+
name,
|
|
48
|
+
preset: template.preset,
|
|
49
|
+
startup: template.startup,
|
|
50
|
+
description: template.description
|
|
51
|
+
}));
|
|
52
|
+
printJsonOrText(jsonMode, TEMPLATES, table(rows, ["name", "preset", "startup", "description"]));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (action === "show") {
|
|
56
|
+
const name = args[1];
|
|
57
|
+
const template = getTemplate(name);
|
|
58
|
+
printJsonOrText(jsonMode, template, formatTemplate(name, template));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (action === "command") {
|
|
62
|
+
const name = args[1];
|
|
63
|
+
const template = getTemplate(name);
|
|
64
|
+
const serverName = getOption(args, "--name") ?? "my-server";
|
|
65
|
+
const email = getOption(args, "--email") ?? "user@example.com";
|
|
66
|
+
const node = getOption(args, "--node") ?? "1";
|
|
67
|
+
const nest = getOption(args, "--nest") ?? "5";
|
|
68
|
+
const egg = getOption(args, "--egg") ?? "18";
|
|
69
|
+
const username = getOption(args, "--username");
|
|
70
|
+
const pieces = [
|
|
71
|
+
"ptero-gateway admin create-server",
|
|
72
|
+
`--name ${quote(serverName)}`,
|
|
73
|
+
`--email ${quote(email)}`,
|
|
74
|
+
username ? `--username ${quote(username)}` : "",
|
|
75
|
+
`--node ${quote(node)}`,
|
|
76
|
+
`--nest ${quote(nest)}`,
|
|
77
|
+
`--egg ${quote(egg)}`,
|
|
78
|
+
`--preset ${quote(template.preset)}`,
|
|
79
|
+
`--startup ${quote(template.startup)}`,
|
|
80
|
+
"--dry-run"
|
|
81
|
+
].filter(Boolean);
|
|
82
|
+
console.log(pieces.join(" "));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
throw new Error(`Template command tidak dikenal: ${action}`);
|
|
86
|
+
}
|
|
87
|
+
function getTemplate(name) {
|
|
88
|
+
if (!name)
|
|
89
|
+
throw new Error(`Template wajib diisi. Jalankan: ptero-gateway templates list`);
|
|
90
|
+
if (!(name in TEMPLATES))
|
|
91
|
+
throw new Error(`Template tidak dikenal: ${name}`);
|
|
92
|
+
return TEMPLATES[name];
|
|
93
|
+
}
|
|
94
|
+
function getOption(args, name) {
|
|
95
|
+
const index = args.indexOf(name);
|
|
96
|
+
if (index < 0)
|
|
97
|
+
return undefined;
|
|
98
|
+
return args[index + 1];
|
|
99
|
+
}
|
|
100
|
+
function quote(value) {
|
|
101
|
+
return JSON.stringify(value);
|
|
102
|
+
}
|
|
103
|
+
function formatTemplate(name, template) {
|
|
104
|
+
return [
|
|
105
|
+
`Template: ${name}`,
|
|
106
|
+
`Description: ${template.description}`,
|
|
107
|
+
`Preset: ${template.preset}`,
|
|
108
|
+
`Startup: ${template.startup}`,
|
|
109
|
+
`Docker: ${template.dockerImage}`,
|
|
110
|
+
`Recommended files: ${template.recommendedFiles.length ? template.recommendedFiles.join(", ") : "-"}`
|
|
111
|
+
].join("\n");
|
|
112
|
+
}
|
|
113
|
+
function printJsonOrText(jsonMode, raw, text) {
|
|
114
|
+
if (jsonMode)
|
|
115
|
+
console.log(JSON.stringify(raw, null, 2));
|
|
116
|
+
else
|
|
117
|
+
console.log(text);
|
|
118
|
+
}
|
|
119
|
+
function table(rows, columns) {
|
|
120
|
+
const widths = columns.map(column => Math.max(column.length, ...rows.map(row => String(row[column] ?? "").length)));
|
|
121
|
+
return [
|
|
122
|
+
columns.map((column, index) => column.padEnd(widths[index] ?? column.length)).join(" "),
|
|
123
|
+
widths.map(width => "-".repeat(width)).join(" "),
|
|
124
|
+
...rows.map(row => columns.map((column, index) => String(row[column] ?? "").padEnd(widths[index] ?? column.length)).join(" "))
|
|
125
|
+
].join("\n");
|
|
126
|
+
}
|
|
127
|
+
function printTemplatesHelp() {
|
|
128
|
+
console.log(`Akadev Pterodactyl Gateway Templates
|
|
129
|
+
|
|
130
|
+
Perintah:
|
|
131
|
+
ptero-gateway templates list
|
|
132
|
+
ptero-gateway templates show nodejs-bot
|
|
133
|
+
ptero-gateway templates command nodejs-bot --name "bot saya" --email user@example.com --node 1 --nest 5 --egg 18
|
|
134
|
+
|
|
135
|
+
Catatan:
|
|
136
|
+
Template hanya membuat rekomendasi command create-server.
|
|
137
|
+
Template tidak membuat node/location/allocation dan tidak mengeksekusi server otomatis.`);
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
package/dist/wizard.js
CHANGED
|
@@ -205,11 +205,11 @@ function printWizardHelp() {
|
|
|
205
205
|
console.log(`Akadev Pterodactyl Gateway Wizard
|
|
206
206
|
|
|
207
207
|
Perintah:
|
|
208
|
-
ptero-
|
|
209
|
-
ptero-
|
|
210
|
-
ptero-
|
|
211
|
-
ptero-
|
|
212
|
-
ptero-
|
|
208
|
+
ptero-wizard create-user
|
|
209
|
+
ptero-wizard create-user --dry-run
|
|
210
|
+
ptero-wizard create-server
|
|
211
|
+
ptero-wizard create-server --dry-run
|
|
212
|
+
ptero-wizard create-server --yes
|
|
213
213
|
|
|
214
214
|
Catatan:
|
|
215
215
|
Wizard tidak mengelola node/location/allocation.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akaanakbaik/pterodactyl-gateway",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "SDK, CLI, dan smart gateway TypeScript untuk Pterodactyl Panel.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,11 +29,12 @@
|
|
|
29
29
|
"chmod:bin": "node -e \"const fs=require('fs'); for (const f of ['dist/cli.js','dist/cli-entry.js','dist/wizard-cli.js']) if (fs.existsSync(f)) fs.chmodSync(f, 0o755)\"",
|
|
30
30
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
31
31
|
"test": "npm run build && node --test test/*.test.js",
|
|
32
|
-
"test:cli": "npm run build && node dist/cli-entry.js help && ./dist/cli-entry.js help && node dist/cli-entry.js presets && node dist/cli-entry.js explain DOMAIN_REQUIRED && node dist/cli-entry.js env-template && node dist/wizard-cli.js help && ./dist/wizard-cli.js help",
|
|
32
|
+
"test:cli": "npm run build && node dist/cli-entry.js help && ./dist/cli-entry.js help && node dist/cli-entry.js presets && node dist/cli-entry.js templates list && node dist/cli-entry.js config help && node dist/cli-entry.js config doctor && node dist/cli-entry.js explain DOMAIN_REQUIRED && node dist/cli-entry.js env-template && node dist/wizard-cli.js help && ./dist/wizard-cli.js help",
|
|
33
33
|
"test:pack": "npm run build && npm pack --dry-run",
|
|
34
|
+
"test:release": "node scripts/release-guard.js",
|
|
34
35
|
"cli": "node dist/cli-entry.js",
|
|
35
36
|
"wizard": "node dist/wizard-cli.js",
|
|
36
|
-
"verify": "npm run typecheck && npm test && npm run test:cli && npm run test:pack",
|
|
37
|
+
"verify": "npm run typecheck && npm test && npm run test:cli && npm run test:release && npm run test:pack",
|
|
37
38
|
"prepublishOnly": "npm run verify"
|
|
38
39
|
},
|
|
39
40
|
"keywords": [
|