@bifos/nhncloud-cli 0.6.0 → 0.7.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/README.md +19 -2
- package/dist/index.js +245 -123
- package/package.json +1 -1
- package/skills/nhncloud-cli/SKILL.md +49 -828
- package/skills/nhncloud-cli/references/common.md +134 -0
- package/skills/nhncloud-cli/references/deploy.md +112 -0
- package/skills/nhncloud-cli/references/iaas.md +126 -0
- package/skills/nhncloud-cli/references/logncrash.md +126 -0
- package/skills/nhncloud-cli/references/ncr.md +73 -0
- package/skills/nhncloud-cli/references/nks.md +95 -0
- package/skills/nhncloud-cli/references/troubleshooting.md +91 -0
package/dist/index.js
CHANGED
|
@@ -24,7 +24,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
24
|
));
|
|
25
25
|
|
|
26
26
|
// src/index.ts
|
|
27
|
-
var
|
|
27
|
+
var import_commander43 = require("commander");
|
|
28
28
|
var import_chalk14 = __toESM(require("chalk"));
|
|
29
29
|
|
|
30
30
|
// src/utils/spinner.ts
|
|
@@ -1238,6 +1238,40 @@ function output(opts, data) {
|
|
|
1238
1238
|
}
|
|
1239
1239
|
}
|
|
1240
1240
|
|
|
1241
|
+
// src/commands/parse-options.ts
|
|
1242
|
+
var POSITIVE_INTEGER_PATTERN = /^[1-9]\d*$/;
|
|
1243
|
+
var NON_NEGATIVE_INTEGER_PATTERN = /^(0|[1-9]\d*)$/;
|
|
1244
|
+
function describeRange({ min, max }) {
|
|
1245
|
+
if (min !== void 0 && max !== void 0) return `${min} \uC774\uC0C1 ${max} \uC774\uD558\uC758 \uC815\uC218`;
|
|
1246
|
+
if (min !== void 0) return `${min} \uC774\uC0C1\uC758 \uC815\uC218`;
|
|
1247
|
+
if (max !== void 0) return `${max} \uC774\uD558\uC758 \uC815\uC218`;
|
|
1248
|
+
return "0 \uC774\uC0C1\uC758 \uC815\uC218";
|
|
1249
|
+
}
|
|
1250
|
+
function throwIntegerOptionError(value, flag, range) {
|
|
1251
|
+
throw new NhnCloudCliError(
|
|
1252
|
+
`${flag} \uB294 ${describeRange(range)}\uC5EC\uC57C \uD569\uB2C8\uB2E4 (\uC785\uB825: ${JSON.stringify(value)}).`,
|
|
1253
|
+
EXIT_PARAM_ERROR
|
|
1254
|
+
);
|
|
1255
|
+
}
|
|
1256
|
+
function parseIntegerOption(value, flag, range) {
|
|
1257
|
+
if (value === void 0) return void 0;
|
|
1258
|
+
const pattern = range.min !== void 0 && range.min > 0 ? POSITIVE_INTEGER_PATTERN : NON_NEGATIVE_INTEGER_PATTERN;
|
|
1259
|
+
if (!pattern.test(value)) {
|
|
1260
|
+
throwIntegerOptionError(value, flag, range);
|
|
1261
|
+
}
|
|
1262
|
+
const parsed = Number(value);
|
|
1263
|
+
if (!Number.isInteger(parsed) || range.min !== void 0 && parsed < range.min || range.max !== void 0 && parsed > range.max) {
|
|
1264
|
+
throwIntegerOptionError(value, flag, range);
|
|
1265
|
+
}
|
|
1266
|
+
return parsed;
|
|
1267
|
+
}
|
|
1268
|
+
function parsePositiveIntegerOption(value, flag) {
|
|
1269
|
+
return parseIntegerOption(value, flag, { min: 1 });
|
|
1270
|
+
}
|
|
1271
|
+
function parseNonNegativeIntegerOption(value, flag) {
|
|
1272
|
+
return parseIntegerOption(value, flag, { min: 0 });
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1241
1275
|
// src/commands/logncrash/search.ts
|
|
1242
1276
|
function getString(value) {
|
|
1243
1277
|
return typeof value === "string" ? value : String(value ?? "");
|
|
@@ -1259,17 +1293,8 @@ var searchCommand = new import_commander2.Command("search").description("Log & C
|
|
|
1259
1293
|
if (!opts.to) {
|
|
1260
1294
|
throw new NhnCloudCliError("--to \uC635\uC158\uC740 \uD544\uC218\uC785\uB2C8\uB2E4. \uC608: --to now", EXIT_PARAM_ERROR);
|
|
1261
1295
|
}
|
|
1262
|
-
const page =
|
|
1263
|
-
const size =
|
|
1264
|
-
if (isNaN(page) || page < 0) {
|
|
1265
|
-
throw new NhnCloudCliError("--page \uB294 0 \uC774\uC0C1\uC758 \uC815\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4.", EXIT_PARAM_ERROR);
|
|
1266
|
-
}
|
|
1267
|
-
if (isNaN(size) || size < 1) {
|
|
1268
|
-
throw new NhnCloudCliError("--size \uB294 1 \uC774\uC0C1\uC758 \uC815\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4.", EXIT_PARAM_ERROR);
|
|
1269
|
-
}
|
|
1270
|
-
if (size > 100) {
|
|
1271
|
-
throw new NhnCloudCliError("--size \uB294 \uCD5C\uB300 100 \uC774\uD558\uC5EC\uC57C \uD569\uB2C8\uB2E4.", EXIT_PARAM_ERROR);
|
|
1272
|
-
}
|
|
1296
|
+
const page = parseNonNegativeIntegerOption(opts.page ?? "0", "--page");
|
|
1297
|
+
const size = parseIntegerOption(opts.size ?? "10", "--size", { min: 1, max: 100 });
|
|
1273
1298
|
const fromIso = resolveTime(opts.from);
|
|
1274
1299
|
const toIso = resolveTime(opts.to);
|
|
1275
1300
|
assertSearchRange(fromIso, toIso);
|
|
@@ -1797,6 +1822,7 @@ async function createDeployClient(profileOpt) {
|
|
|
1797
1822
|
// src/commands/deploy/run.ts
|
|
1798
1823
|
var runCommand = new import_commander5.Command("run").description("\uBC30\uD3EC\uB97C \uC2E4\uD589\uD55C\uB2E4").argument("<target>", "config.json \uC5D0 \uC815\uC758\uB41C deploy target \uC774\uB984").option("--app-key <k>", "target \uC758 appKey override").option("--artifact-id <id>", "target \uC758 artifactId override").option("--server-group-id <id>", "target \uC758 serverGroupId override").option("--scenario-ids <csv>", "target \uC758 scenarioIds override").option("--target-hosts <csv>", "\uB300\uC0C1 \uD638\uC2A4\uD2B8 (\uC0DD\uB7B5 \uC2DC \uC11C\uBC84\uADF8\uB8F9 \uC804\uCCB4)").option("--concurrent <n>", "\uBCD1\uB82C \uBC30\uD3EC \uC218 (\uAE30\uBCF8 1)", "1").option("--next-when-fail", "\uC2DC\uB098\uB9AC\uC624 \uC2E4\uD328 \uC2DC\uC5D0\uB3C4 \uC9C4\uD589").option("--note <s>", "\uBC30\uD3EC \uBA54\uBAA8").option("--async", "\uC989\uC2DC \uBC18\uD658 (\uAE30\uBCF8\uC740 \uC644\uB8CC \uB300\uAE30)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (targetName, _opts, cmd) => {
|
|
1799
1824
|
const opts = cmd.optsWithGlobals();
|
|
1825
|
+
const concurrentNum = parsePositiveIntegerOption(opts.concurrent ?? "1", "--concurrent");
|
|
1800
1826
|
const target = await getDeployTarget(targetName);
|
|
1801
1827
|
const appKey = opts.appKey ?? target.appKey;
|
|
1802
1828
|
const artifactId = opts.artifactId ?? target.artifactId;
|
|
@@ -1812,7 +1838,7 @@ var runCommand = new import_commander5.Command("run").description("\uBC30\uD3EC\
|
|
|
1812
1838
|
serverGroupId,
|
|
1813
1839
|
scenarioIds,
|
|
1814
1840
|
targetHosts: opts.targetHosts,
|
|
1815
|
-
concurrentNum
|
|
1841
|
+
concurrentNum,
|
|
1816
1842
|
nextWhenFail: opts.nextWhenFail ?? false,
|
|
1817
1843
|
deployNote: opts.note,
|
|
1818
1844
|
async: opts.async ?? false
|
|
@@ -2148,6 +2174,15 @@ var downloadCommand = new import_commander12.Command("download").description("\u
|
|
|
2148
2174
|
// src/commands/instance/list.ts
|
|
2149
2175
|
var import_commander13 = require("commander");
|
|
2150
2176
|
|
|
2177
|
+
// src/commands/iaas.ts
|
|
2178
|
+
async function resolveIaasTokenContext(opts) {
|
|
2179
|
+
const profileName = await resolveProfileName(opts.profile);
|
|
2180
|
+
const iaas = await getIaasCredential(profileName);
|
|
2181
|
+
const effectiveIaas = opts.region ? { ...iaas, region: opts.region } : iaas;
|
|
2182
|
+
const tokenContext = await getIaasToken(profileName, effectiveIaas);
|
|
2183
|
+
return { profileName, ...tokenContext };
|
|
2184
|
+
}
|
|
2185
|
+
|
|
2151
2186
|
// src/services/instance/client.ts
|
|
2152
2187
|
var import_ky7 = __toESM(require("ky"));
|
|
2153
2188
|
var DEFAULT_TIMEOUT_MS3 = 3e4;
|
|
@@ -2695,10 +2730,7 @@ var InstanceClient = class {
|
|
|
2695
2730
|
|
|
2696
2731
|
// src/commands/instance/helpers.ts
|
|
2697
2732
|
async function resolveInstanceClient(opts) {
|
|
2698
|
-
const profileName = await
|
|
2699
|
-
const iaas = await getIaasCredential(profileName);
|
|
2700
|
-
const effectiveIaas = opts.region ? { ...iaas, region: opts.region } : iaas;
|
|
2701
|
-
const { tokenId, computeEndpoint, imageEndpoint } = await getIaasToken(profileName, effectiveIaas);
|
|
2733
|
+
const { profileName, tokenId, computeEndpoint, imageEndpoint } = await resolveIaasTokenContext(opts);
|
|
2702
2734
|
return { client: new InstanceClient(tokenId, computeEndpoint, imageEndpoint), profileName };
|
|
2703
2735
|
}
|
|
2704
2736
|
|
|
@@ -2736,7 +2768,7 @@ function isVolume(val) {
|
|
|
2736
2768
|
if (typeof val !== "object" || val === null) return false;
|
|
2737
2769
|
const obj = val;
|
|
2738
2770
|
return typeof obj["id"] === "string" && // Cinder 는 --name 미지정 시 null — null 인 볼륨 하나가 list 전체를 거부하지 않게 허용 (isImage 선례).
|
|
2739
|
-
(typeof obj["name"] === "string" || obj["name"] === null) && typeof obj["size"] === "number" && typeof obj["status"] === "string" && Array.isArray(obj["attachments"]);
|
|
2771
|
+
(typeof obj["name"] === "string" || obj["name"] === null) && typeof obj["size"] === "number" && typeof obj["status"] === "string" && (obj["availability_zone"] === void 0 || typeof obj["availability_zone"] === "string") && Array.isArray(obj["attachments"]);
|
|
2740
2772
|
}
|
|
2741
2773
|
function isVolumesResponse(val) {
|
|
2742
2774
|
if (typeof val !== "object" || val === null) return false;
|
|
@@ -2800,6 +2832,7 @@ var BlockStorageClient = class {
|
|
|
2800
2832
|
if (params.name !== void 0) volumeBody["name"] = params.name;
|
|
2801
2833
|
if (params.description !== void 0) volumeBody["description"] = params.description;
|
|
2802
2834
|
if (params.volume_type !== void 0) volumeBody["volume_type"] = params.volume_type;
|
|
2835
|
+
if (params.availability_zone !== void 0) volumeBody["availability_zone"] = params.availability_zone;
|
|
2803
2836
|
if (params.snapshot_id !== void 0) volumeBody["snapshot_id"] = params.snapshot_id;
|
|
2804
2837
|
try {
|
|
2805
2838
|
const raw = await import_ky8.default.post(url, {
|
|
@@ -2823,10 +2856,7 @@ var BlockStorageClient = class {
|
|
|
2823
2856
|
|
|
2824
2857
|
// src/commands/volume/helpers.ts
|
|
2825
2858
|
async function resolveVolumeClient(opts) {
|
|
2826
|
-
const profileName = await
|
|
2827
|
-
const iaas = await getIaasCredential(profileName);
|
|
2828
|
-
const effectiveIaas = opts.region ? { ...iaas, region: opts.region } : iaas;
|
|
2829
|
-
const { tokenId, blockStorageEndpoint } = await getIaasToken(profileName, effectiveIaas);
|
|
2859
|
+
const { profileName, tokenId, blockStorageEndpoint } = await resolveIaasTokenContext(opts);
|
|
2830
2860
|
return { client: new BlockStorageClient(tokenId, blockStorageEndpoint), profileName };
|
|
2831
2861
|
}
|
|
2832
2862
|
|
|
@@ -2908,7 +2938,7 @@ var getCommand = new import_commander15.Command("get").description("\uB2E8\uC77C
|
|
|
2908
2938
|
// src/commands/volume/create.ts
|
|
2909
2939
|
var import_commander16 = require("commander");
|
|
2910
2940
|
var import_chalk3 = __toESM(require("chalk"));
|
|
2911
|
-
var createCommand = new import_commander16.Command("create").description("\uBCFC\uB968\uC744 \uBC1C\uAE09\uD55C\uB2E4").requiredOption("--size <gb>", "\uBCFC\uB968 \uD06C\uAE30(GB) \u2014 \uD544\uC218").option("--name <name>", "\uBCFC\uB968 \uC774\uB984").option("--description <text>", "\uBCFC\uB968 \uC124\uBA85").option("--volume-type <type>", "\uBCFC\uB968 \uD0C0\uC785").option("--snapshot-id <id>", "\uC2A4\uB0C5\uC0F7 ID (\uC2A4\uB0C5\uC0F7\uC5D0\uC11C \uBCFC\uB968 \uC0DD\uC131)").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
|
|
2941
|
+
var createCommand = new import_commander16.Command("create").description("\uBCFC\uB968\uC744 \uBC1C\uAE09\uD55C\uB2E4").requiredOption("--size <gb>", "\uBCFC\uB968 \uD06C\uAE30(GB) \u2014 \uD544\uC218").option("--name <name>", "\uBCFC\uB968 \uC774\uB984").option("--description <text>", "\uBCFC\uB968 \uC124\uBA85").option("--volume-type <type>", "\uBCFC\uB968 \uD0C0\uC785").option("--availability-zone <az>", "\uAC00\uC6A9\uC131 \uC601\uC5ED(AZ). instance availability-zones \uB85C \uC870\uD68C\uD55C zoneName \uC9C0\uC815").option("--snapshot-id <id>", "\uC2A4\uB0C5\uC0F7 ID (\uC2A4\uB0C5\uC0F7\uC5D0\uC11C \uBCFC\uB968 \uC0DD\uC131)").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
|
|
2912
2942
|
const opts = cmd.optsWithGlobals();
|
|
2913
2943
|
if (!/^[1-9]\d*$/.test(opts.size)) {
|
|
2914
2944
|
throw new NhnCloudCliError(
|
|
@@ -2917,6 +2947,13 @@ var createCommand = new import_commander16.Command("create").description("\uBCFC
|
|
|
2917
2947
|
);
|
|
2918
2948
|
}
|
|
2919
2949
|
const sizeNum = Number(opts.size);
|
|
2950
|
+
const availabilityZone = opts.availabilityZone?.trim();
|
|
2951
|
+
if (opts.availabilityZone !== void 0 && availabilityZone === "") {
|
|
2952
|
+
throw new NhnCloudCliError(
|
|
2953
|
+
`--availability-zone \uC740 \uACF5\uBC31\uC774 \uC544\uB2CC \uBB38\uC790\uC5F4\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4: ${JSON.stringify(opts.availabilityZone)}`,
|
|
2954
|
+
EXIT_PARAM_ERROR
|
|
2955
|
+
);
|
|
2956
|
+
}
|
|
2920
2957
|
const { client } = await resolveVolumeClient(opts);
|
|
2921
2958
|
startSpinner("\uBCFC\uB968 \uBC1C\uAE09 \uC911...");
|
|
2922
2959
|
let volume;
|
|
@@ -2926,6 +2963,7 @@ var createCommand = new import_commander16.Command("create").description("\uBCFC
|
|
|
2926
2963
|
name: opts.name,
|
|
2927
2964
|
description: opts.description,
|
|
2928
2965
|
volume_type: opts.volumeType,
|
|
2966
|
+
availability_zone: availabilityZone,
|
|
2929
2967
|
snapshot_id: opts.snapshotId
|
|
2930
2968
|
});
|
|
2931
2969
|
} catch (err) {
|
|
@@ -2941,6 +2979,7 @@ var createCommand = new import_commander16.Command("create").description("\uBCFC
|
|
|
2941
2979
|
["size", String(volume.size)],
|
|
2942
2980
|
["status", volume.status],
|
|
2943
2981
|
["volume_type", volume.volume_type ?? ""],
|
|
2982
|
+
["availability_zone", volume.availability_zone ?? ""],
|
|
2944
2983
|
["created_at", volume.created_at]
|
|
2945
2984
|
];
|
|
2946
2985
|
output(opts, {
|
|
@@ -3127,10 +3166,7 @@ var NetworkClient = class {
|
|
|
3127
3166
|
|
|
3128
3167
|
// src/commands/network/helpers.ts
|
|
3129
3168
|
async function resolveNetworkClient(opts) {
|
|
3130
|
-
const profileName = await
|
|
3131
|
-
const iaas = await getIaasCredential(profileName);
|
|
3132
|
-
const effectiveIaas = opts.region ? { ...iaas, region: opts.region } : iaas;
|
|
3133
|
-
const { tokenId, networkEndpoint } = await getIaasToken(profileName, effectiveIaas);
|
|
3169
|
+
const { profileName, tokenId, networkEndpoint } = await resolveIaasTokenContext(opts);
|
|
3134
3170
|
return { client: new NetworkClient(tokenId, networkEndpoint), profileName };
|
|
3135
3171
|
}
|
|
3136
3172
|
|
|
@@ -3295,18 +3331,10 @@ var deleteCommand = new import_commander21.Command("delete").description("Floati
|
|
|
3295
3331
|
|
|
3296
3332
|
// src/commands/instance/flavors.ts
|
|
3297
3333
|
var import_commander22 = require("commander");
|
|
3298
|
-
function parseNonNegInt(value, flag) {
|
|
3299
|
-
if (value === void 0) return void 0;
|
|
3300
|
-
const n = Number(value);
|
|
3301
|
-
if (!Number.isInteger(n) || n < 0) {
|
|
3302
|
-
throw new NhnCloudCliError(`${flag} \uB294 0 \uC774\uC0C1\uC758 \uC815\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4 (\uC785\uB825: ${value}).`, EXIT_PARAM_ERROR);
|
|
3303
|
-
}
|
|
3304
|
-
return n;
|
|
3305
|
-
}
|
|
3306
3334
|
var flavorsCommand = new import_commander22.Command("flavors").description("\uC778\uC2A4\uD134\uC2A4 \uD0C0\uC785(flavor)\uC744 \uC870\uD68C\uD55C\uB2E4 (\uAE30\uBCF8 id\xB7name, --detail \uB85C \uC2A4\uD399, \uC804\uCCB4 \uD544\uB4DC\uB294 --json)").option("--detail", "vcpus\xB7ram\xB7disk \uB4F1 \uC2A4\uD399 \uD3EC\uD568 (GET /flavors/detail)").option("--min-disk <gb>", "\uCD5C\uC18C \uBE14\uB85D \uC2A4\uD1A0\uB9AC\uC9C0 \uD06C\uAE30(GB) \uC774\uC0C1\uB9CC \uD544\uD130").option("--min-ram <mb>", "\uCD5C\uC18C RAM \uD06C\uAE30(MB) \uC774\uC0C1\uB9CC \uD544\uD130").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
|
|
3307
3335
|
const opts = cmd.optsWithGlobals();
|
|
3308
|
-
const minDisk =
|
|
3309
|
-
const minRam =
|
|
3336
|
+
const minDisk = parseNonNegativeIntegerOption(opts.minDisk, "--min-disk");
|
|
3337
|
+
const minRam = parseNonNegativeIntegerOption(opts.minRam, "--min-ram");
|
|
3310
3338
|
const { client } = await resolveInstanceClient(opts);
|
|
3311
3339
|
startSpinner("\uC778\uC2A4\uD134\uC2A4 \uD0C0\uC785 \uC870\uD68C \uC911...");
|
|
3312
3340
|
try {
|
|
@@ -3463,7 +3491,9 @@ var createCommand3 = new import_commander25.Command("create").description("\uC77
|
|
|
3463
3491
|
);
|
|
3464
3492
|
}
|
|
3465
3493
|
}
|
|
3466
|
-
const timeoutMs =
|
|
3494
|
+
const timeoutMs = parsePositiveIntegerOption(opts.timeout ?? "300", "--timeout") * 1e3;
|
|
3495
|
+
const bootVolumeSize = parsePositiveIntegerOption(opts.bootVolumeSize, "--boot-volume-size");
|
|
3496
|
+
const ephemeralDiskSize = parsePositiveIntegerOption(opts.ephemeralDiskSize, "--ephemeral-disk-size");
|
|
3467
3497
|
const { client } = await resolveInstanceClient(opts);
|
|
3468
3498
|
startSpinner("\uC778\uC2A4\uD134\uC2A4 \uC0DD\uC131 \uC911...");
|
|
3469
3499
|
let server;
|
|
@@ -3473,10 +3503,10 @@ var createCommand3 = new import_commander25.Command("create").description("\uC77
|
|
|
3473
3503
|
flavorRef: opts.flavor,
|
|
3474
3504
|
imageRef: opts.image,
|
|
3475
3505
|
networks,
|
|
3476
|
-
bootVolumeSize
|
|
3506
|
+
bootVolumeSize,
|
|
3477
3507
|
keyName: opts.keyName,
|
|
3478
3508
|
securityGroups: opts.securityGroup && opts.securityGroup.length > 0 ? opts.securityGroup : void 0,
|
|
3479
|
-
ephemeralDiskSize
|
|
3509
|
+
ephemeralDiskSize,
|
|
3480
3510
|
protect: opts.protect,
|
|
3481
3511
|
userDataBase64
|
|
3482
3512
|
});
|
|
@@ -3658,17 +3688,9 @@ var resizeRevertCommand = new import_commander28.Command("resize-revert").descri
|
|
|
3658
3688
|
// src/commands/instance/images.ts
|
|
3659
3689
|
var import_commander29 = require("commander");
|
|
3660
3690
|
var VISIBILITY_VALUES = ["public", "private", "shared"];
|
|
3661
|
-
function parsePositiveInt5(value, flag) {
|
|
3662
|
-
if (value === void 0) return void 0;
|
|
3663
|
-
const n = Number(value);
|
|
3664
|
-
if (!Number.isInteger(n) || n < 1) {
|
|
3665
|
-
throw new NhnCloudCliError(`${flag} \uB294 1 \uC774\uC0C1\uC758 \uC815\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4 (\uC785\uB825: ${value}).`, EXIT_PARAM_ERROR);
|
|
3666
|
-
}
|
|
3667
|
-
return n;
|
|
3668
|
-
}
|
|
3669
3691
|
var imagesCommand = new import_commander29.Command("images").description("\uC774\uBBF8\uC9C0 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (create --image <id> \uC18C\uC2A4, \uC804\uCCB4 \uD544\uB4DC\uB294 --json)").option("--limit <n>", "\uD55C \uD398\uC774\uC9C0 \uCD5C\uB300 \uAC1C\uC218 (\uAE30\uBCF8: \uC11C\uBC84 \uAE30\uBCF8\uAC12 25)").option("--marker <id>", "\uC774 image id \uB2E4\uC74C\uBD80\uD130 \uC870\uD68C (\uD398\uC774\uC9C0\uB124\uC774\uC158)").option("--name <name>", "\uC774\uB984\uC73C\uB85C \uD544\uD130").option("--visibility <v>", `\uB178\uCD9C \uBC94\uC704 \uD544\uD130 (${VISIBILITY_VALUES.join("|")})`).option("--owner <id>", "\uC18C\uC720\uC790(\uD504\uB85C\uC81D\uD2B8 id)\uB85C \uD544\uD130").option("--status <status>", "\uC0C1\uD0DC\uB85C \uD544\uD130 (\uC608: active)").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
|
|
3670
3692
|
const opts = cmd.optsWithGlobals();
|
|
3671
|
-
const limit =
|
|
3693
|
+
const limit = parsePositiveIntegerOption(opts.limit, "--limit");
|
|
3672
3694
|
if (opts.visibility !== void 0 && !VISIBILITY_VALUES.includes(opts.visibility)) {
|
|
3673
3695
|
throw new NhnCloudCliError(
|
|
3674
3696
|
`--visibility \uB294 ${VISIBILITY_VALUES.join(" | ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4 (\uC785\uB825: ${opts.visibility}).`,
|
|
@@ -4225,8 +4247,63 @@ var tagsCommand = new import_commander37.Command("tags").description("\uD2B9\uC8
|
|
|
4225
4247
|
});
|
|
4226
4248
|
});
|
|
4227
4249
|
|
|
4228
|
-
// src/commands/
|
|
4250
|
+
// src/commands/commands.ts
|
|
4229
4251
|
var import_commander38 = require("commander");
|
|
4252
|
+
function commandPath(command) {
|
|
4253
|
+
const names = [];
|
|
4254
|
+
let current2 = command;
|
|
4255
|
+
while (current2?.parent) {
|
|
4256
|
+
names.unshift(current2.name());
|
|
4257
|
+
current2 = current2.parent;
|
|
4258
|
+
}
|
|
4259
|
+
return names.join(" ");
|
|
4260
|
+
}
|
|
4261
|
+
function collectCommand(command) {
|
|
4262
|
+
const path = commandPath(command);
|
|
4263
|
+
if (!path || path === "help") return null;
|
|
4264
|
+
return {
|
|
4265
|
+
path,
|
|
4266
|
+
description: command.description() || command.summary() || "",
|
|
4267
|
+
arguments: command.registeredArguments.map((arg) => arg.name()),
|
|
4268
|
+
options: command.options.filter((option) => !option.hidden).map((option) => option.flags),
|
|
4269
|
+
subcommands: command.commands.map((subcommand) => subcommand.name()).filter((name) => name !== "help"),
|
|
4270
|
+
...path === "commands" ? { metadata: true } : {}
|
|
4271
|
+
};
|
|
4272
|
+
}
|
|
4273
|
+
function collectCommandCatalog(program2) {
|
|
4274
|
+
const commands = [];
|
|
4275
|
+
function visit(command) {
|
|
4276
|
+
const entry = collectCommand(command);
|
|
4277
|
+
if (entry) commands.push(entry);
|
|
4278
|
+
for (const subcommand of command.commands) {
|
|
4279
|
+
visit(subcommand);
|
|
4280
|
+
}
|
|
4281
|
+
}
|
|
4282
|
+
for (const command of program2.commands) {
|
|
4283
|
+
visit(command);
|
|
4284
|
+
}
|
|
4285
|
+
commands.sort((a, b) => a.path.localeCompare(b.path));
|
|
4286
|
+
return { commands };
|
|
4287
|
+
}
|
|
4288
|
+
function createCommandsCommand(program2) {
|
|
4289
|
+
return new import_commander38.Command("commands").description("\uBA85\uB839 \uACBD\uB85C\uC640 \uC635\uC158 catalog\uB97C \uCD9C\uB825\uD55C\uB2E4").action((_opts, cmd) => {
|
|
4290
|
+
const opts = cmd.optsWithGlobals();
|
|
4291
|
+
const catalog = collectCommandCatalog(program2);
|
|
4292
|
+
output(opts, {
|
|
4293
|
+
headers: ["path", "description", "options"],
|
|
4294
|
+
rows: catalog.commands.map((entry) => [
|
|
4295
|
+
entry.path,
|
|
4296
|
+
entry.description,
|
|
4297
|
+
entry.options.join(", ")
|
|
4298
|
+
]),
|
|
4299
|
+
raw: catalog,
|
|
4300
|
+
ids: catalog.commands.map((entry) => entry.path)
|
|
4301
|
+
});
|
|
4302
|
+
});
|
|
4303
|
+
}
|
|
4304
|
+
|
|
4305
|
+
// src/commands/nks/supports.ts
|
|
4306
|
+
var import_commander39 = require("commander");
|
|
4230
4307
|
|
|
4231
4308
|
// src/commands/nks/helpers.ts
|
|
4232
4309
|
var import_promises4 = require("fs/promises");
|
|
@@ -4287,15 +4364,16 @@ function isNksUuidResponse(val) {
|
|
|
4287
4364
|
|
|
4288
4365
|
// src/services/nks/client.ts
|
|
4289
4366
|
var DEFAULT_TIMEOUT_MS7 = 3e4;
|
|
4290
|
-
function
|
|
4367
|
+
function isArrayFieldResponse(key, val, itemGuard) {
|
|
4291
4368
|
if (typeof val !== "object" || val === null) return false;
|
|
4292
|
-
const
|
|
4293
|
-
return Array.isArray(
|
|
4369
|
+
const field = val[key];
|
|
4370
|
+
return Array.isArray(field) && field.every(itemGuard);
|
|
4371
|
+
}
|
|
4372
|
+
function isClustersResponse(val) {
|
|
4373
|
+
return isArrayFieldResponse("clusters", val, isNksClusterSummary);
|
|
4294
4374
|
}
|
|
4295
4375
|
function isNamedResourceArrayResponse(key, val) {
|
|
4296
|
-
|
|
4297
|
-
const obj = val;
|
|
4298
|
-
return Array.isArray(obj[key]) && obj[key].every(isNksNamedResource);
|
|
4376
|
+
return isArrayFieldResponse(key, val, isNksNamedResource);
|
|
4299
4377
|
}
|
|
4300
4378
|
function isConfigResponse(val) {
|
|
4301
4379
|
if (typeof val !== "object" || val === null) return false;
|
|
@@ -4303,19 +4381,13 @@ function isConfigResponse(val) {
|
|
|
4303
4381
|
return typeof obj["config"] === "string";
|
|
4304
4382
|
}
|
|
4305
4383
|
function isNodeGroupsResponse(val) {
|
|
4306
|
-
|
|
4307
|
-
const obj = val;
|
|
4308
|
-
return Array.isArray(obj["nodegroups"]) && obj["nodegroups"].every(isNksNodeGroupSummary);
|
|
4384
|
+
return isArrayFieldResponse("nodegroups", val, isNksNodeGroupSummary);
|
|
4309
4385
|
}
|
|
4310
4386
|
function isAddonTypesResponse(val) {
|
|
4311
|
-
|
|
4312
|
-
const obj = val;
|
|
4313
|
-
return Array.isArray(obj["addon_types"]) && obj["addon_types"].every(isNksAddonType);
|
|
4387
|
+
return isArrayFieldResponse("addon_types", val, isNksAddonType);
|
|
4314
4388
|
}
|
|
4315
4389
|
function isAddonsResponse(val) {
|
|
4316
|
-
|
|
4317
|
-
const obj = val;
|
|
4318
|
-
return Array.isArray(obj["addons"]) && obj["addons"].every(isNksAddon);
|
|
4390
|
+
return isArrayFieldResponse("addons", val, isNksAddon);
|
|
4319
4391
|
}
|
|
4320
4392
|
var NksClient = class {
|
|
4321
4393
|
tokenId;
|
|
@@ -4730,10 +4802,7 @@ var NksClient = class {
|
|
|
4730
4802
|
|
|
4731
4803
|
// src/commands/nks/helpers.ts
|
|
4732
4804
|
async function resolveNksClient(opts) {
|
|
4733
|
-
const profileName = await
|
|
4734
|
-
const iaas = await getIaasCredential(profileName);
|
|
4735
|
-
const effectiveIaas = opts.region ? { ...iaas, region: opts.region } : iaas;
|
|
4736
|
-
const { tokenId, nksEndpoint } = await getIaasToken(profileName, effectiveIaas);
|
|
4805
|
+
const { profileName, tokenId, nksEndpoint } = await resolveIaasTokenContext(opts);
|
|
4737
4806
|
return { client: new NksClient(tokenId, nksEndpoint), profileName };
|
|
4738
4807
|
}
|
|
4739
4808
|
async function readJsonFile(path) {
|
|
@@ -4777,7 +4846,7 @@ function parseNonNegativeInteger(value, optionName) {
|
|
|
4777
4846
|
}
|
|
4778
4847
|
|
|
4779
4848
|
// src/commands/nks/supports.ts
|
|
4780
|
-
var supportsCommand = new
|
|
4849
|
+
var supportsCommand = new import_commander39.Command("supports").description("NKS \uC9C0\uC6D0 Kubernetes \uBC84\uC804\uACFC event type \uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
|
|
4781
4850
|
const opts = cmd.optsWithGlobals();
|
|
4782
4851
|
const { client } = await resolveNksClient(opts);
|
|
4783
4852
|
startSpinner("NKS \uC9C0\uC6D0 \uC815\uBCF4 \uC870\uD68C \uC911...");
|
|
@@ -4802,9 +4871,9 @@ var supportsCommand = new import_commander38.Command("supports").description("NK
|
|
|
4802
4871
|
|
|
4803
4872
|
// src/commands/nks/cluster.ts
|
|
4804
4873
|
var import_promises5 = require("fs/promises");
|
|
4805
|
-
var
|
|
4874
|
+
var import_commander40 = require("commander");
|
|
4806
4875
|
var import_chalk12 = __toESM(require("chalk"));
|
|
4807
|
-
var listCommand6 = new
|
|
4876
|
+
var listCommand6 = new import_commander40.Command("list").description("NKS \uD074\uB7EC\uC2A4\uD130 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
|
|
4808
4877
|
const opts = cmd.optsWithGlobals();
|
|
4809
4878
|
const { client } = await resolveNksClient(opts);
|
|
4810
4879
|
startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uBAA9\uB85D \uC870\uD68C \uC911...");
|
|
@@ -4900,7 +4969,7 @@ async function writeKubeconfigFile(path, contents, force) {
|
|
|
4900
4969
|
throw err;
|
|
4901
4970
|
}
|
|
4902
4971
|
}
|
|
4903
|
-
var createCommand4 = new
|
|
4972
|
+
var createCommand4 = new import_commander40.Command("create").description("NKS \uD074\uB7EC\uC2A4\uD130\uB97C \uC0DD\uC131\uD55C\uB2E4").requiredOption("--file <json>", "\uACF5\uC2DD API payload JSON \uD30C\uC77C").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
|
|
4904
4973
|
const opts = cmd.optsWithGlobals();
|
|
4905
4974
|
const payload = await readJsonFile(opts.file);
|
|
4906
4975
|
const { client } = await resolveNksClient(opts);
|
|
@@ -4915,7 +4984,7 @@ var createCommand4 = new import_commander39.Command("create").description("NKS \
|
|
|
4915
4984
|
stopSpinner(true);
|
|
4916
4985
|
uuidOutput(opts, result, "\uD074\uB7EC\uC2A4\uD130 \uC0DD\uC131");
|
|
4917
4986
|
});
|
|
4918
|
-
var deleteCommand3 = new
|
|
4987
|
+
var deleteCommand3 = new import_commander40.Command("delete").description("NKS \uD074\uB7EC\uC2A4\uD130\uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").option("--yes", "\uD655\uC778 \uD504\uB86C\uD504\uD2B8 \uC0DD\uB7B5 (CI/\uBE44\uB300\uD654\uD615 \uD544\uC218)").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
4919
4988
|
const opts = cmd.optsWithGlobals();
|
|
4920
4989
|
const ok = await confirmDangerousAction(`NKS \uD074\uB7EC\uC2A4\uD130 "${cluster}" \uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?`, opts.yes);
|
|
4921
4990
|
if (!ok) return;
|
|
@@ -4931,7 +5000,7 @@ var deleteCommand3 = new import_commander39.Command("delete").description("NKS \
|
|
|
4931
5000
|
process.stderr.write(import_chalk12.default.green(`\u2713 NKS \uD074\uB7EC\uC2A4\uD130 "${cluster}" \uC0AD\uC81C \uC694\uCCAD \uC644\uB8CC
|
|
4932
5001
|
`));
|
|
4933
5002
|
});
|
|
4934
|
-
var resizeCommand2 = new
|
|
5003
|
+
var resizeCommand2 = new import_commander40.Command("resize").description("NKS \uD074\uB7EC\uC2A4\uD130 \uB178\uB4DC \uADF8\uB8F9 \uD06C\uAE30\uB97C \uBCC0\uACBD\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").requiredOption("--nodegroup <name-or-uuid>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").requiredOption("--node-count <n>", "\uBCC0\uACBD\uD560 \uB178\uB4DC \uC218").option("--nodes-to-remove <csv>", "\uC0AD\uC81C\uD560 \uB178\uB4DC \uC774\uB984/ID CSV").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
4935
5004
|
const opts = cmd.optsWithGlobals();
|
|
4936
5005
|
const nodeCount = parsePositiveInteger(opts.nodeCount, "--node-count");
|
|
4937
5006
|
const nodesToRemove = opts.nodesToRemove?.split(",").map((node) => node.trim()).filter(Boolean);
|
|
@@ -4955,7 +5024,7 @@ var resizeCommand2 = new import_commander39.Command("resize").description("NKS \
|
|
|
4955
5024
|
stopSpinner(true);
|
|
4956
5025
|
uuidOutput(opts, result, "\uD074\uB7EC\uC2A4\uD130 resize");
|
|
4957
5026
|
});
|
|
4958
|
-
var setIpAclCommand = new
|
|
5027
|
+
var setIpAclCommand = new import_commander40.Command("set-ipacl").description("NKS \uD074\uB7EC\uC2A4\uD130 API endpoint IP ACL \uC744 \uC124\uC815\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").requiredOption("--file <json>", "\uACF5\uC2DD API payload JSON \uD30C\uC77C").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
4959
5028
|
const opts = cmd.optsWithGlobals();
|
|
4960
5029
|
const payload = await readJsonFile(opts.file);
|
|
4961
5030
|
const { client } = await resolveNksClient(opts);
|
|
@@ -4970,7 +5039,7 @@ var setIpAclCommand = new import_commander39.Command("set-ipacl").description("N
|
|
|
4970
5039
|
stopSpinner(true);
|
|
4971
5040
|
uuidOutput(opts, result, "IP ACL \uC124\uC815");
|
|
4972
5041
|
});
|
|
4973
|
-
var renewCertificateCommand = new
|
|
5042
|
+
var renewCertificateCommand = new import_commander40.Command("renew-certificate").description("NKS \uD074\uB7EC\uC2A4\uD130 \uC778\uC99D\uC11C\uB97C \uAC31\uC2E0\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").requiredOption("--term-of-validity <1-5>", "\uC778\uC99D\uC11C \uC720\uD6A8 \uAE30\uAC04(\uB144)").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
4974
5043
|
const opts = cmd.optsWithGlobals();
|
|
4975
5044
|
const term = parsePositiveInteger(opts.termOfValidity, "--term-of-validity");
|
|
4976
5045
|
if (term < 1 || term > 5) {
|
|
@@ -4988,7 +5057,7 @@ var renewCertificateCommand = new import_commander39.Command("renew-certificate"
|
|
|
4988
5057
|
stopSpinner(true);
|
|
4989
5058
|
uuidOutput(opts, result, "\uC778\uC99D\uC11C \uAC31\uC2E0");
|
|
4990
5059
|
});
|
|
4991
|
-
var updateSgwCommand = new
|
|
5060
|
+
var updateSgwCommand = new import_commander40.Command("update-sgw").description("NKS \uD074\uB7EC\uC2A4\uD130 \uC11C\uBE44\uC2A4 \uAC8C\uC774\uD2B8\uC6E8\uC774\uB97C \uBCC0\uACBD\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").requiredOption("--ncr-sgw <uuid>", "NCR service gateway UUID").requiredOption("--obs-sgw <uuid>", "Object Storage service gateway UUID").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
4992
5061
|
const opts = cmd.optsWithGlobals();
|
|
4993
5062
|
const { client } = await resolveNksClient(opts);
|
|
4994
5063
|
startSpinner("NKS \uC11C\uBE44\uC2A4 \uAC8C\uC774\uD2B8\uC6E8\uC774 \uBCC0\uACBD \uC694\uCCAD \uC911...");
|
|
@@ -5002,7 +5071,7 @@ var updateSgwCommand = new import_commander39.Command("update-sgw").description(
|
|
|
5002
5071
|
stopSpinner(true);
|
|
5003
5072
|
uuidOutput(opts, result, "\uC11C\uBE44\uC2A4 \uAC8C\uC774\uD2B8\uC6E8\uC774 \uBCC0\uACBD");
|
|
5004
5073
|
});
|
|
5005
|
-
var setControlPlaneLogCommand = new
|
|
5074
|
+
var setControlPlaneLogCommand = new import_commander40.Command("set-control-plane-log").description("NKS \uD074\uB7EC\uC2A4\uD130 control plane log \uC124\uC815\uC744 \uBCC0\uACBD\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").requiredOption("--file <json>", "control_plane_log \uAC1D\uCCB4 JSON \uD30C\uC77C").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
5006
5075
|
const opts = cmd.optsWithGlobals();
|
|
5007
5076
|
const controlPlaneLog = await readJsonFile(opts.file);
|
|
5008
5077
|
const { client } = await resolveNksClient(opts);
|
|
@@ -5017,7 +5086,7 @@ var setControlPlaneLogCommand = new import_commander39.Command("set-control-plan
|
|
|
5017
5086
|
stopSpinner(true);
|
|
5018
5087
|
uuidOutput(opts, result, "control plane log \uC124\uC815");
|
|
5019
5088
|
});
|
|
5020
|
-
var getCommand4 = new
|
|
5089
|
+
var getCommand4 = new import_commander40.Command("get").description("NKS \uD074\uB7EC\uC2A4\uD130\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
5021
5090
|
const opts = cmd.optsWithGlobals();
|
|
5022
5091
|
const { client } = await resolveNksClient(opts);
|
|
5023
5092
|
startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uC870\uD68C \uC911...");
|
|
@@ -5036,7 +5105,7 @@ var getCommand4 = new import_commander39.Command("get").description("NKS \uD074\
|
|
|
5036
5105
|
ids: [resourceId(result)]
|
|
5037
5106
|
});
|
|
5038
5107
|
});
|
|
5039
|
-
var eventsCommand = new
|
|
5108
|
+
var eventsCommand = new import_commander40.Command("events").description("NKS \uD074\uB7EC\uC2A4\uD130 \uC791\uC5C5 \uC774\uB825\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
5040
5109
|
const opts = cmd.optsWithGlobals();
|
|
5041
5110
|
const { client } = await resolveNksClient(opts);
|
|
5042
5111
|
startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uC791\uC5C5 \uC774\uB825 \uC870\uD68C \uC911...");
|
|
@@ -5055,7 +5124,7 @@ var eventsCommand = new import_commander39.Command("events").description("NKS \u
|
|
|
5055
5124
|
ids: events.map(resourceId)
|
|
5056
5125
|
});
|
|
5057
5126
|
});
|
|
5058
|
-
var eventCommand = new
|
|
5127
|
+
var eventCommand = new import_commander40.Command("event").description("NKS \uD074\uB7EC\uC2A4\uD130 \uC791\uC5C5 \uC774\uB825 \uB2E8\uAC74\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<event>", "\uC791\uC5C5 \uC774\uB825 UUID \uB610\uB294 ID").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, event, _opts, cmd) => {
|
|
5059
5128
|
const opts = cmd.optsWithGlobals();
|
|
5060
5129
|
const { client } = await resolveNksClient(opts);
|
|
5061
5130
|
startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uC791\uC5C5 \uC774\uB825 \uC870\uD68C \uC911...");
|
|
@@ -5074,7 +5143,7 @@ var eventCommand = new import_commander39.Command("event").description("NKS \uD0
|
|
|
5074
5143
|
ids: [resourceId(result)]
|
|
5075
5144
|
});
|
|
5076
5145
|
});
|
|
5077
|
-
var kubeconfigCommand = new
|
|
5146
|
+
var kubeconfigCommand = new import_commander40.Command("kubeconfig").description("NKS \uD074\uB7EC\uC2A4\uD130 kubeconfig \uB97C \uCD9C\uB825\uD558\uAC70\uB098 \uC800\uC7A5\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").option("--output <file>", "kubeconfig \uC800\uC7A5 \uACBD\uB85C").option("--force", "\uAE30\uC874 \uD30C\uC77C \uB36E\uC5B4\uC4F0\uAE30").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
5078
5147
|
const opts = cmd.optsWithGlobals();
|
|
5079
5148
|
const { client } = await resolveNksClient(opts);
|
|
5080
5149
|
startSpinner("NKS kubeconfig \uC870\uD68C \uC911...");
|
|
@@ -5094,7 +5163,7 @@ var kubeconfigCommand = new import_commander39.Command("kubeconfig").description
|
|
|
5094
5163
|
}
|
|
5095
5164
|
process.stdout.write(kubeconfig.endsWith("\n") ? kubeconfig : kubeconfig + "\n");
|
|
5096
5165
|
});
|
|
5097
|
-
var ipAclCommand = new
|
|
5166
|
+
var ipAclCommand = new import_commander40.Command("ipacl").description("NKS \uD074\uB7EC\uC2A4\uD130 API endpoint IP ACL \uC744 \uC870\uD68C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
5098
5167
|
const opts = cmd.optsWithGlobals();
|
|
5099
5168
|
const { client } = await resolveNksClient(opts);
|
|
5100
5169
|
startSpinner("NKS IP ACL \uC870\uD68C \uC911...");
|
|
@@ -5113,7 +5182,7 @@ var ipAclCommand = new import_commander39.Command("ipacl").description("NKS \uD0
|
|
|
5113
5182
|
ids: [result.cluster_uuid]
|
|
5114
5183
|
});
|
|
5115
5184
|
});
|
|
5116
|
-
var clusterAddonListCommand = new
|
|
5185
|
+
var clusterAddonListCommand = new import_commander40.Command("list").description("NKS \uD074\uB7EC\uC2A4\uD130\uC5D0 \uC124\uCE58\uB41C \uC560\uB4DC\uC628 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
5117
5186
|
const opts = cmd.optsWithGlobals();
|
|
5118
5187
|
const { client } = await resolveNksClient(opts);
|
|
5119
5188
|
startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uBAA9\uB85D \uC870\uD68C \uC911...");
|
|
@@ -5132,7 +5201,7 @@ var clusterAddonListCommand = new import_commander39.Command("list").description
|
|
|
5132
5201
|
ids: addons.map((addon) => addon.uuid ?? addon.id ?? addon.name)
|
|
5133
5202
|
});
|
|
5134
5203
|
});
|
|
5135
|
-
var clusterAddonGetCommand = new
|
|
5204
|
+
var clusterAddonGetCommand = new import_commander40.Command("get").description("NKS \uD074\uB7EC\uC2A4\uD130\uC5D0 \uC124\uCE58\uB41C \uC560\uB4DC\uC628\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<addon>", "\uC560\uB4DC\uC628 UUID \uB610\uB294 \uC774\uB984").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, addon, _opts, cmd) => {
|
|
5136
5205
|
const opts = cmd.optsWithGlobals();
|
|
5137
5206
|
const { client } = await resolveNksClient(opts);
|
|
5138
5207
|
startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uC870\uD68C \uC911...");
|
|
@@ -5160,7 +5229,7 @@ function parseResolveConflicts(value) {
|
|
|
5160
5229
|
EXIT_PARAM_ERROR
|
|
5161
5230
|
);
|
|
5162
5231
|
}
|
|
5163
|
-
var clusterAddonInstallCommand = new
|
|
5232
|
+
var clusterAddonInstallCommand = new import_commander40.Command("install").description("NKS \uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628\uC744 \uC124\uCE58\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").requiredOption("--name <name>", "\uC560\uB4DC\uC628 \uC774\uB984").requiredOption("--version <version>", "\uC560\uB4DC\uC628 \uBC84\uC804").requiredOption("--resolve-conflicts <none|overwrite|preserve>", "\uCDA9\uB3CC \uD574\uACB0 \uC815\uCC45").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
5164
5233
|
const opts = cmd.optsWithGlobals();
|
|
5165
5234
|
const resolveConflicts = parseResolveConflicts(opts.resolveConflicts);
|
|
5166
5235
|
const { client } = await resolveNksClient(opts);
|
|
@@ -5179,7 +5248,7 @@ var clusterAddonInstallCommand = new import_commander39.Command("install").descr
|
|
|
5179
5248
|
stopSpinner(true);
|
|
5180
5249
|
uuidOutput(opts, result, "\uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uC124\uCE58");
|
|
5181
5250
|
});
|
|
5182
|
-
var clusterAddonUpdateCommand = new
|
|
5251
|
+
var clusterAddonUpdateCommand = new import_commander40.Command("update").description("NKS \uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628\uC744 \uC5C5\uB370\uC774\uD2B8\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<addon>", "\uC560\uB4DC\uC628 UUID \uB610\uB294 \uC774\uB984").requiredOption("--version <version>", "\uC560\uB4DC\uC628 \uBC84\uC804").requiredOption("--resolve-conflicts <none|overwrite|preserve>", "\uCDA9\uB3CC \uD574\uACB0 \uC815\uCC45").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, addon, _opts, cmd) => {
|
|
5183
5252
|
const opts = cmd.optsWithGlobals();
|
|
5184
5253
|
const resolveConflicts = parseResolveConflicts(opts.resolveConflicts);
|
|
5185
5254
|
const { client } = await resolveNksClient(opts);
|
|
@@ -5197,7 +5266,7 @@ var clusterAddonUpdateCommand = new import_commander39.Command("update").descrip
|
|
|
5197
5266
|
stopSpinner(true);
|
|
5198
5267
|
uuidOutput(opts, result, "\uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uC5C5\uB370\uC774\uD2B8");
|
|
5199
5268
|
});
|
|
5200
|
-
var clusterAddonRemoveCommand = new
|
|
5269
|
+
var clusterAddonRemoveCommand = new import_commander40.Command("remove").description("NKS \uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628\uC744 \uC81C\uAC70\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<addon>", "\uC560\uB4DC\uC628 UUID \uB610\uB294 \uC774\uB984").option("--yes", "\uD655\uC778 \uD504\uB86C\uD504\uD2B8 \uC0DD\uB7B5 (CI/\uBE44\uB300\uD654\uD615 \uD544\uC218)").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, addon, _opts, cmd) => {
|
|
5201
5270
|
const opts = cmd.optsWithGlobals();
|
|
5202
5271
|
const ok = await confirmDangerousAction(`NKS \uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 "${addon}" \uC744 \uC81C\uAC70\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?`, opts.yes);
|
|
5203
5272
|
if (!ok) return;
|
|
@@ -5213,11 +5282,11 @@ var clusterAddonRemoveCommand = new import_commander39.Command("remove").descrip
|
|
|
5213
5282
|
stopSpinner(true);
|
|
5214
5283
|
uuidOutput(opts, result, "\uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uC81C\uAC70");
|
|
5215
5284
|
});
|
|
5216
|
-
var clusterAddonCommand = new
|
|
5217
|
-
var clusterCommand = new
|
|
5285
|
+
var clusterAddonCommand = new import_commander40.Command("addon").description("NKS \uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uAD00\uB828 \uBA85\uB839").addCommand(clusterAddonListCommand).addCommand(clusterAddonGetCommand).addCommand(clusterAddonInstallCommand).addCommand(clusterAddonUpdateCommand).addCommand(clusterAddonRemoveCommand);
|
|
5286
|
+
var clusterCommand = new import_commander40.Command("cluster").description("NKS \uD074\uB7EC\uC2A4\uD130 \uAD00\uB828 \uBA85\uB839").addCommand(listCommand6).addCommand(getCommand4).addCommand(createCommand4).addCommand(deleteCommand3).addCommand(resizeCommand2).addCommand(eventsCommand).addCommand(eventCommand).addCommand(kubeconfigCommand).addCommand(ipAclCommand).addCommand(setIpAclCommand).addCommand(renewCertificateCommand).addCommand(updateSgwCommand).addCommand(setControlPlaneLogCommand).addCommand(clusterAddonCommand);
|
|
5218
5287
|
|
|
5219
5288
|
// src/commands/nks/nodegroup.ts
|
|
5220
|
-
var
|
|
5289
|
+
var import_commander41 = require("commander");
|
|
5221
5290
|
var import_chalk13 = __toESM(require("chalk"));
|
|
5222
5291
|
function nodeGroupRow(nodegroup) {
|
|
5223
5292
|
return [
|
|
@@ -5271,7 +5340,7 @@ async function confirmDangerousAction2(message, yes) {
|
|
|
5271
5340
|
if (!ok) process.stderr.write(import_chalk13.default.yellow("\uC791\uC5C5\uC774 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\n"));
|
|
5272
5341
|
return ok;
|
|
5273
5342
|
}
|
|
5274
|
-
var listCommand7 = new
|
|
5343
|
+
var listCommand7 = new import_commander41.Command("list").description("NKS \uB178\uB4DC \uADF8\uB8F9 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
5275
5344
|
const opts = cmd.optsWithGlobals();
|
|
5276
5345
|
const { client } = await resolveNksClient(opts);
|
|
5277
5346
|
startSpinner("NKS \uB178\uB4DC \uADF8\uB8F9 \uBAA9\uB85D \uC870\uD68C \uC911...");
|
|
@@ -5290,7 +5359,7 @@ var listCommand7 = new import_commander40.Command("list").description("NKS \uB17
|
|
|
5290
5359
|
ids: nodegroups.map((nodegroup) => nodegroup.uuid)
|
|
5291
5360
|
});
|
|
5292
5361
|
});
|
|
5293
|
-
var getCommand5 = new
|
|
5362
|
+
var getCommand5 = new import_commander41.Command("get").description("NKS \uB178\uB4DC \uADF8\uB8F9\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, nodegroup, _opts, cmd) => {
|
|
5294
5363
|
const opts = cmd.optsWithGlobals();
|
|
5295
5364
|
const { client } = await resolveNksClient(opts);
|
|
5296
5365
|
startSpinner("NKS \uB178\uB4DC \uADF8\uB8F9 \uC870\uD68C \uC911...");
|
|
@@ -5309,7 +5378,7 @@ var getCommand5 = new import_commander40.Command("get").description("NKS \uB178\
|
|
|
5309
5378
|
ids: [result.uuid]
|
|
5310
5379
|
});
|
|
5311
5380
|
});
|
|
5312
|
-
var createCommand5 = new
|
|
5381
|
+
var createCommand5 = new import_commander41.Command("create").description("NKS \uB178\uB4DC \uADF8\uB8F9\uC744 \uC0DD\uC131\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").requiredOption("--file <json>", "\uACF5\uC2DD API payload JSON \uD30C\uC77C").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, _opts, cmd) => {
|
|
5313
5382
|
const opts = cmd.optsWithGlobals();
|
|
5314
5383
|
const payload = await readJsonFile(opts.file);
|
|
5315
5384
|
const { client } = await resolveNksClient(opts);
|
|
@@ -5324,7 +5393,7 @@ var createCommand5 = new import_commander40.Command("create").description("NKS \
|
|
|
5324
5393
|
stopSpinner(true);
|
|
5325
5394
|
uuidOutput2(opts, result, "\uB178\uB4DC \uADF8\uB8F9 \uC0DD\uC131");
|
|
5326
5395
|
});
|
|
5327
|
-
var deleteCommand4 = new
|
|
5396
|
+
var deleteCommand4 = new import_commander41.Command("delete").description("NKS \uB178\uB4DC \uADF8\uB8F9\uC744 \uC0AD\uC81C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").option("--yes", "\uD655\uC778 \uD504\uB86C\uD504\uD2B8 \uC0DD\uB7B5 (CI/\uBE44\uB300\uD654\uD615 \uD544\uC218)").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, nodegroup, _opts, cmd) => {
|
|
5328
5397
|
const opts = cmd.optsWithGlobals();
|
|
5329
5398
|
const ok = await confirmDangerousAction2(`NKS \uB178\uB4DC \uADF8\uB8F9 "${nodegroup}" \uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?`, opts.yes);
|
|
5330
5399
|
if (!ok) return;
|
|
@@ -5341,7 +5410,7 @@ var deleteCommand4 = new import_commander40.Command("delete").description("NKS \
|
|
|
5341
5410
|
`));
|
|
5342
5411
|
});
|
|
5343
5412
|
function nodeActionCommand(name) {
|
|
5344
|
-
return new
|
|
5413
|
+
return new import_commander41.Command(name).description(`NKS \uB178\uB4DC \uADF8\uB8F9 \uB178\uB4DC\uB97C ${name === "stop-node" ? "\uC911\uC9C0" : "\uC2DC\uC791"}\uD55C\uB2E4`).argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").requiredOption("--nodes <csv>", "\uB300\uC0C1 \uB178\uB4DC CSV").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, nodegroup, _opts, cmd) => {
|
|
5345
5414
|
const opts = cmd.optsWithGlobals();
|
|
5346
5415
|
const nodes = parseCsv(opts.nodes, "--nodes");
|
|
5347
5416
|
const { client } = await resolveNksClient(opts);
|
|
@@ -5357,7 +5426,7 @@ function nodeActionCommand(name) {
|
|
|
5357
5426
|
uuidOutput2(opts, result, `\uB178\uB4DC ${name === "stop-node" ? "\uC911\uC9C0" : "\uC2DC\uC791"}`);
|
|
5358
5427
|
});
|
|
5359
5428
|
}
|
|
5360
|
-
var autoscaleCommand = new
|
|
5429
|
+
var autoscaleCommand = new import_commander41.Command("autoscale").description("NKS \uB178\uB4DC \uADF8\uB8F9 autoscale \uC124\uC815\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, nodegroup, _opts, cmd) => {
|
|
5361
5430
|
const opts = cmd.optsWithGlobals();
|
|
5362
5431
|
const { client } = await resolveNksClient(opts);
|
|
5363
5432
|
startSpinner("NKS \uB178\uB4DC \uADF8\uB8F9 autoscale \uC870\uD68C \uC911...");
|
|
@@ -5376,7 +5445,7 @@ var autoscaleCommand = new import_commander40.Command("autoscale").description("
|
|
|
5376
5445
|
ids: []
|
|
5377
5446
|
});
|
|
5378
5447
|
});
|
|
5379
|
-
var setAutoscaleCommand = new
|
|
5448
|
+
var setAutoscaleCommand = new import_commander41.Command("set-autoscale").description("NKS \uB178\uB4DC \uADF8\uB8F9 autoscale \uC124\uC815\uC744 \uBCC0\uACBD\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").requiredOption("--file <json>", "\uACF5\uC2DD API payload JSON \uD30C\uC77C").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, nodegroup, _opts, cmd) => {
|
|
5380
5449
|
const opts = cmd.optsWithGlobals();
|
|
5381
5450
|
const payload = await readJsonFile(opts.file);
|
|
5382
5451
|
const { client } = await resolveNksClient(opts);
|
|
@@ -5391,7 +5460,7 @@ var setAutoscaleCommand = new import_commander40.Command("set-autoscale").descri
|
|
|
5391
5460
|
stopSpinner(true);
|
|
5392
5461
|
uuidOutput2(opts, result, "autoscale \uBCC0\uACBD");
|
|
5393
5462
|
});
|
|
5394
|
-
var setMetricAutoscaleCommand = new
|
|
5463
|
+
var setMetricAutoscaleCommand = new import_commander41.Command("set-metric-autoscale").description("NKS \uB178\uB4DC \uADF8\uB8F9 metric autoscale \uC124\uC815\uC744 \uBCC0\uACBD\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").requiredOption("--file <json>", "\uACF5\uC2DD API payload JSON \uD30C\uC77C").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, nodegroup, _opts, cmd) => {
|
|
5395
5464
|
const opts = cmd.optsWithGlobals();
|
|
5396
5465
|
const payload = await readJsonFile(opts.file);
|
|
5397
5466
|
const { client } = await resolveNksClient(opts);
|
|
@@ -5406,7 +5475,7 @@ var setMetricAutoscaleCommand = new import_commander40.Command("set-metric-autos
|
|
|
5406
5475
|
stopSpinner(true);
|
|
5407
5476
|
uuidOutput2(opts, result, "metric autoscale \uBCC0\uACBD");
|
|
5408
5477
|
});
|
|
5409
|
-
var upgradeCommand = new
|
|
5478
|
+
var upgradeCommand = new import_commander41.Command("upgrade").description("NKS \uB178\uB4DC \uADF8\uB8F9 Kubernetes version \uC744 \uC5C5\uADF8\uB808\uC774\uB4DC\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").requiredOption("--version <v>", "\uB300\uC0C1 Kubernetes version").option("--num-buffer-nodes <n>", "buffer node \uC218").option("--num-max-unavailable-nodes <n>", "\uCD5C\uB300 unavailable node \uC218").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, nodegroup, _opts, cmd) => {
|
|
5410
5479
|
const opts = cmd.optsWithGlobals();
|
|
5411
5480
|
const { client } = await resolveNksClient(opts);
|
|
5412
5481
|
startSpinner("NKS \uB178\uB4DC \uADF8\uB8F9 upgrade \uC694\uCCAD \uC911...");
|
|
@@ -5424,7 +5493,7 @@ var upgradeCommand = new import_commander40.Command("upgrade").description("NKS
|
|
|
5424
5493
|
stopSpinner(true);
|
|
5425
5494
|
uuidOutput2(opts, result, "\uB178\uB4DC \uADF8\uB8F9 upgrade");
|
|
5426
5495
|
});
|
|
5427
|
-
var setUserscriptCommand = new
|
|
5496
|
+
var setUserscriptCommand = new import_commander41.Command("set-userscript").description("NKS \uB178\uB4DC \uADF8\uB8F9 user script \uB97C \uBCC0\uACBD\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").requiredOption("--file <script>", "script \uD30C\uC77C").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, nodegroup, _opts, cmd) => {
|
|
5428
5497
|
const opts = cmd.optsWithGlobals();
|
|
5429
5498
|
const contents = await readTextFile(opts.file);
|
|
5430
5499
|
const { client } = await resolveNksClient(opts);
|
|
@@ -5439,7 +5508,7 @@ var setUserscriptCommand = new import_commander40.Command("set-userscript").desc
|
|
|
5439
5508
|
stopSpinner(true);
|
|
5440
5509
|
uuidOutput2(opts, result, "user script \uBCC0\uACBD");
|
|
5441
5510
|
});
|
|
5442
|
-
var updateFlavorCommand = new
|
|
5511
|
+
var updateFlavorCommand = new import_commander41.Command("update-flavor").description("NKS \uB178\uB4DC \uADF8\uB8F9 flavor \uB97C \uBCC0\uACBD\uD55C\uB2E4").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").requiredOption("--flavor <uuid>", "\uBCC0\uACBD\uD560 flavor UUID").option("--num-buffer-nodes <n>", "buffer node \uC218").option("--num-max-unavailable-nodes <n>", "\uCD5C\uB300 unavailable node \uC218").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, nodegroup, _opts, cmd) => {
|
|
5443
5512
|
const opts = cmd.optsWithGlobals();
|
|
5444
5513
|
const { client } = await resolveNksClient(opts);
|
|
5445
5514
|
startSpinner("NKS \uB178\uB4DC \uADF8\uB8F9 flavor \uBCC0\uACBD \uC694\uCCAD \uC911...");
|
|
@@ -5458,7 +5527,7 @@ var updateFlavorCommand = new import_commander40.Command("update-flavor").descri
|
|
|
5458
5527
|
uuidOutput2(opts, result, "flavor \uBCC0\uACBD");
|
|
5459
5528
|
});
|
|
5460
5529
|
function patchPayloadCommand(name) {
|
|
5461
|
-
return new
|
|
5530
|
+
return new import_commander41.Command(name).description(`NKS \uB178\uB4DC \uADF8\uB8F9 ${name === "set-fip-auto-bind" ? "Floating IP \uC790\uB3D9 \uC5F0\uACB0" : "Kubernetes labels"} \uC124\uC815\uC744 \uBCC0\uACBD\uD55C\uB2E4`).argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984").requiredOption("--file <json>", "\uACF5\uC2DD API payload JSON \uD30C\uC77C").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (cluster, nodegroup, _opts, cmd) => {
|
|
5462
5531
|
const opts = cmd.optsWithGlobals();
|
|
5463
5532
|
const payload = await readJsonFile(opts.file);
|
|
5464
5533
|
const { client } = await resolveNksClient(opts);
|
|
@@ -5474,10 +5543,10 @@ function patchPayloadCommand(name) {
|
|
|
5474
5543
|
uuidOutput2(opts, result, name);
|
|
5475
5544
|
});
|
|
5476
5545
|
}
|
|
5477
|
-
var nodegroupCommand = new
|
|
5546
|
+
var nodegroupCommand = new import_commander41.Command("nodegroup").description("NKS \uB178\uB4DC \uADF8\uB8F9 \uAD00\uB828 \uBA85\uB839").addCommand(listCommand7).addCommand(getCommand5).addCommand(createCommand5).addCommand(deleteCommand4).addCommand(nodeActionCommand("stop-node")).addCommand(nodeActionCommand("start-node")).addCommand(autoscaleCommand).addCommand(setAutoscaleCommand).addCommand(setMetricAutoscaleCommand).addCommand(upgradeCommand).addCommand(setUserscriptCommand).addCommand(updateFlavorCommand).addCommand(patchPayloadCommand("set-fip-auto-bind")).addCommand(patchPayloadCommand("set-labels"));
|
|
5478
5547
|
|
|
5479
5548
|
// src/commands/nks/addon.ts
|
|
5480
|
-
var
|
|
5549
|
+
var import_commander42 = require("commander");
|
|
5481
5550
|
function addonTypeRow(addonType) {
|
|
5482
5551
|
return [
|
|
5483
5552
|
addonType.uuid ?? addonType.id ?? addonType.name,
|
|
@@ -5493,7 +5562,7 @@ function addonRow2(addon) {
|
|
|
5493
5562
|
addon.status ?? ""
|
|
5494
5563
|
];
|
|
5495
5564
|
}
|
|
5496
|
-
var addonTypeListCommand = new
|
|
5565
|
+
var addonTypeListCommand = new import_commander42.Command("list").description("NKS \uC560\uB4DC\uC628 \uD0C0\uC785 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
|
|
5497
5566
|
const opts = cmd.optsWithGlobals();
|
|
5498
5567
|
const { client } = await resolveNksClient(opts);
|
|
5499
5568
|
startSpinner("NKS \uC560\uB4DC\uC628 \uD0C0\uC785 \uBAA9\uB85D \uC870\uD68C \uC911...");
|
|
@@ -5512,7 +5581,7 @@ var addonTypeListCommand = new import_commander41.Command("list").description("N
|
|
|
5512
5581
|
ids: addonTypes.map((addonType) => addonType.uuid ?? addonType.id ?? addonType.name)
|
|
5513
5582
|
});
|
|
5514
5583
|
});
|
|
5515
|
-
var addonTypeGetCommand = new
|
|
5584
|
+
var addonTypeGetCommand = new import_commander42.Command("get").description("NKS \uC560\uB4DC\uC628 \uD0C0\uC785\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<addon-type>", "\uC560\uB4DC\uC628 \uD0C0\uC785 UUID \uB610\uB294 \uC774\uB984").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (addonType, _opts, cmd) => {
|
|
5516
5585
|
const opts = cmd.optsWithGlobals();
|
|
5517
5586
|
const { client } = await resolveNksClient(opts);
|
|
5518
5587
|
startSpinner("NKS \uC560\uB4DC\uC628 \uD0C0\uC785 \uC870\uD68C \uC911...");
|
|
@@ -5531,8 +5600,8 @@ var addonTypeGetCommand = new import_commander41.Command("get").description("NKS
|
|
|
5531
5600
|
ids: [result.uuid ?? result.id ?? result.name]
|
|
5532
5601
|
});
|
|
5533
5602
|
});
|
|
5534
|
-
var addonTypeCommand = new
|
|
5535
|
-
var addonListCommand = new
|
|
5603
|
+
var addonTypeCommand = new import_commander42.Command("addon-type").description("NKS \uC560\uB4DC\uC628 \uD0C0\uC785 \uAD00\uB828 \uBA85\uB839").addCommand(addonTypeListCommand).addCommand(addonTypeGetCommand);
|
|
5604
|
+
var addonListCommand = new import_commander42.Command("list").description("NKS \uC560\uB4DC\uC628 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--k8s-version <version>", "Kubernetes version filter").option("--image <image>", "image filter").option("--platform-version <version>", "platform version filter").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
|
|
5536
5605
|
const opts = cmd.optsWithGlobals();
|
|
5537
5606
|
const { client } = await resolveNksClient(opts);
|
|
5538
5607
|
startSpinner("NKS \uC560\uB4DC\uC628 \uBAA9\uB85D \uC870\uD68C \uC911...");
|
|
@@ -5555,7 +5624,7 @@ var addonListCommand = new import_commander41.Command("list").description("NKS \
|
|
|
5555
5624
|
ids: addons.map((addon) => addon.uuid ?? addon.id ?? addon.name)
|
|
5556
5625
|
});
|
|
5557
5626
|
});
|
|
5558
|
-
var addonGetCommand = new
|
|
5627
|
+
var addonGetCommand = new import_commander42.Command("get").description("NKS \uC560\uB4DC\uC628\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<addon>", "\uC560\uB4DC\uC628 UUID \uB610\uB294 \uC774\uB984").option("--region <region>", "region override (\uAE30\uBCF8: iaas \uC790\uACA9\uC99D\uBA85\uC758 region)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (addon, _opts, cmd) => {
|
|
5559
5628
|
const opts = cmd.optsWithGlobals();
|
|
5560
5629
|
const { client } = await resolveNksClient(opts);
|
|
5561
5630
|
startSpinner("NKS \uC560\uB4DC\uC628 \uC870\uD68C \uC911...");
|
|
@@ -5574,11 +5643,63 @@ var addonGetCommand = new import_commander41.Command("get").description("NKS \uC
|
|
|
5574
5643
|
ids: [result.uuid ?? result.id ?? result.name]
|
|
5575
5644
|
});
|
|
5576
5645
|
});
|
|
5577
|
-
var addonCommand = new
|
|
5646
|
+
var addonCommand = new import_commander42.Command("addon").description("NKS \uC560\uB4DC\uC628 \uAD00\uB828 \uBA85\uB839").addCommand(addonListCommand).addCommand(addonGetCommand);
|
|
5578
5647
|
|
|
5579
5648
|
// src/index.ts
|
|
5580
|
-
var
|
|
5581
|
-
|
|
5649
|
+
var rootAgentHints = `
|
|
5650
|
+
Agent hints:
|
|
5651
|
+
- Prefer --json for structured output.
|
|
5652
|
+
- Use --quiet only when the command documents an identifier output.
|
|
5653
|
+
- Use --profile <name> to avoid relying on default profile.
|
|
5654
|
+
- For IaaS/NKS commands, use --region <region> when region matters.
|
|
5655
|
+
- Run "nhncloud commands --json" to inspect command paths and options.
|
|
5656
|
+
`;
|
|
5657
|
+
var logncrashAgentWorkflow = `
|
|
5658
|
+
Agent workflow:
|
|
5659
|
+
1. nhncloud logncrash search --query '*' --from 1h --to now --json
|
|
5660
|
+
2. nhncloud logncrash export --query '<lucene>' --from 1h --to now --output logs.jsonl
|
|
5661
|
+
`;
|
|
5662
|
+
var deployAgentWorkflow = `
|
|
5663
|
+
Agent workflow:
|
|
5664
|
+
1. nhncloud deploy artifacts <target> --json
|
|
5665
|
+
2. nhncloud deploy server-groups <target> --json
|
|
5666
|
+
3. nhncloud deploy run <target>
|
|
5667
|
+
`;
|
|
5668
|
+
var instanceAgentWorkflow = `
|
|
5669
|
+
Agent workflow:
|
|
5670
|
+
1. nhncloud instance images --json
|
|
5671
|
+
2. nhncloud instance flavors --detail --json
|
|
5672
|
+
3. nhncloud instance list --json
|
|
5673
|
+
`;
|
|
5674
|
+
var networkAgentWorkflow = `
|
|
5675
|
+
Agent workflow:
|
|
5676
|
+
1. nhncloud network list --json
|
|
5677
|
+
2. nhncloud network subnet list --json
|
|
5678
|
+
`;
|
|
5679
|
+
var volumeAgentWorkflow = `
|
|
5680
|
+
Agent workflow:
|
|
5681
|
+
1. nhncloud volume list --json
|
|
5682
|
+
2. nhncloud volume get <volume-id> --json
|
|
5683
|
+
`;
|
|
5684
|
+
var floatingIpAgentWorkflow = `
|
|
5685
|
+
Agent workflow:
|
|
5686
|
+
1. nhncloud floatingip list --json
|
|
5687
|
+
2. nhncloud floatingip create --json
|
|
5688
|
+
`;
|
|
5689
|
+
var ncrAgentWorkflow = `
|
|
5690
|
+
Agent workflow:
|
|
5691
|
+
1. nhncloud ncr list --json
|
|
5692
|
+
2. nhncloud ncr images <registry> --json
|
|
5693
|
+
3. nhncloud ncr tags <registry> <repository> --json
|
|
5694
|
+
`;
|
|
5695
|
+
var nksAgentWorkflow = `
|
|
5696
|
+
Agent workflow:
|
|
5697
|
+
1. nhncloud nks supports --json
|
|
5698
|
+
2. nhncloud nks cluster list --json
|
|
5699
|
+
3. nhncloud nks cluster get <cluster> --json
|
|
5700
|
+
`;
|
|
5701
|
+
var program = new import_commander43.Command();
|
|
5702
|
+
program.name("nhncloud").description("NHN Cloud CLI \u2014 AI agent & terminal friendly").version("0.7.0").option("--json", "JSON \uD615\uC2DD\uC73C\uB85C \uCD9C\uB825").option("--quiet", "\uCD5C\uC18C \uCD9C\uB825 (\uC790\uB3D9\uD654\uC6A9)").option("--no-color", "\uC0C9\uC0C1 \uBE44\uD65C\uC131\uD654").addHelpText("after", rootAgentHints);
|
|
5582
5703
|
program.hook("preAction", () => {
|
|
5583
5704
|
const opts = program.opts();
|
|
5584
5705
|
if (!opts.color || process.env["NO_COLOR"]) {
|
|
@@ -5589,12 +5710,12 @@ program.hook("preAction", () => {
|
|
|
5589
5710
|
}
|
|
5590
5711
|
});
|
|
5591
5712
|
program.addCommand(configureCommand);
|
|
5592
|
-
var logncrashCommand = new
|
|
5713
|
+
var logncrashCommand = new import_commander43.Command("logncrash").description("Log & Crash \uAD00\uB828 \uBA85\uB839").addHelpText("after", logncrashAgentWorkflow);
|
|
5593
5714
|
logncrashCommand.addCommand(searchCommand);
|
|
5594
5715
|
logncrashCommand.addCommand(sendCommand);
|
|
5595
5716
|
logncrashCommand.addCommand(exportCommand);
|
|
5596
5717
|
program.addCommand(logncrashCommand);
|
|
5597
|
-
var deployCommand = new
|
|
5718
|
+
var deployCommand = new import_commander43.Command("deploy").description("NHN Cloud Deploy \uAD00\uB828 \uBA85\uB839").addHelpText("after", deployAgentWorkflow);
|
|
5598
5719
|
deployCommand.addCommand(runCommand);
|
|
5599
5720
|
deployCommand.addCommand(artifactsCommand);
|
|
5600
5721
|
deployCommand.addCommand(serverGroupsCommand);
|
|
@@ -5604,7 +5725,7 @@ deployCommand.addCommand(binariesCommand);
|
|
|
5604
5725
|
deployCommand.addCommand(uploadCommand);
|
|
5605
5726
|
deployCommand.addCommand(downloadCommand);
|
|
5606
5727
|
program.addCommand(deployCommand);
|
|
5607
|
-
var instanceCommand = new
|
|
5728
|
+
var instanceCommand = new import_commander43.Command("instance").description("Compute \uC778\uC2A4\uD134\uC2A4 \uAD00\uB828 \uBA85\uB839").addHelpText("after", instanceAgentWorkflow);
|
|
5608
5729
|
instanceCommand.addCommand(listCommand);
|
|
5609
5730
|
instanceCommand.addCommand(flavorsCommand);
|
|
5610
5731
|
instanceCommand.addCommand(availabilityZonesCommand);
|
|
@@ -5623,35 +5744,36 @@ instanceCommand.addCommand(keypairCommand);
|
|
|
5623
5744
|
instanceCommand.addCommand(volumeCommand);
|
|
5624
5745
|
instanceCommand.addCommand(volumesCommand);
|
|
5625
5746
|
program.addCommand(instanceCommand);
|
|
5626
|
-
var networkCommand = new
|
|
5747
|
+
var networkCommand = new import_commander43.Command("network").description("VPC\xB7\uC11C\uBE0C\uB137 \uC870\uD68C").addHelpText("after", networkAgentWorkflow);
|
|
5627
5748
|
networkCommand.addCommand(listCommand3);
|
|
5628
5749
|
networkCommand.addCommand(subnetCommand);
|
|
5629
5750
|
program.addCommand(networkCommand);
|
|
5630
|
-
var volumeCommand2 = new
|
|
5751
|
+
var volumeCommand2 = new import_commander43.Command("volume").description("Block Storage \uBCFC\uB968 \uAD00\uB828 \uBA85\uB839").addHelpText("after", volumeAgentWorkflow);
|
|
5631
5752
|
volumeCommand2.addCommand(listCommand2);
|
|
5632
5753
|
volumeCommand2.addCommand(getCommand);
|
|
5633
5754
|
volumeCommand2.addCommand(createCommand);
|
|
5634
5755
|
program.addCommand(volumeCommand2);
|
|
5635
|
-
var floatingipCommand = new
|
|
5756
|
+
var floatingipCommand = new import_commander43.Command("floatingip").description(
|
|
5636
5757
|
"Floating IP(\uC778\uC2A4\uD134\uC2A4 \uACF5\uC778 IP) \uAD00\uB9AC"
|
|
5637
|
-
);
|
|
5758
|
+
).addHelpText("after", floatingIpAgentWorkflow);
|
|
5638
5759
|
floatingipCommand.addCommand(listCommand4);
|
|
5639
5760
|
floatingipCommand.addCommand(createCommand2);
|
|
5640
5761
|
floatingipCommand.addCommand(deleteCommand);
|
|
5641
5762
|
program.addCommand(floatingipCommand);
|
|
5642
|
-
var ncrCommand = new
|
|
5763
|
+
var ncrCommand = new import_commander43.Command("ncr").description("NHN Container Registry \uAD00\uB828 \uBA85\uB839").addHelpText("after", ncrAgentWorkflow);
|
|
5643
5764
|
ncrCommand.addCommand(listCommand5);
|
|
5644
5765
|
ncrCommand.addCommand(getCommand3);
|
|
5645
5766
|
ncrCommand.addCommand(imagesCommand2);
|
|
5646
5767
|
ncrCommand.addCommand(tagsCommand);
|
|
5647
5768
|
program.addCommand(ncrCommand);
|
|
5648
|
-
var nksCommand = new
|
|
5769
|
+
var nksCommand = new import_commander43.Command("nks").description("NHN Kubernetes Service \uAD00\uB828 \uBA85\uB839").addHelpText("after", nksAgentWorkflow);
|
|
5649
5770
|
nksCommand.addCommand(supportsCommand);
|
|
5650
5771
|
nksCommand.addCommand(clusterCommand);
|
|
5651
5772
|
nksCommand.addCommand(nodegroupCommand);
|
|
5652
5773
|
nksCommand.addCommand(addonTypeCommand);
|
|
5653
5774
|
nksCommand.addCommand(addonCommand);
|
|
5654
5775
|
program.addCommand(nksCommand);
|
|
5776
|
+
program.addCommand(createCommandsCommand(program));
|
|
5655
5777
|
program.parseAsync().catch((err) => {
|
|
5656
5778
|
const message = err instanceof Error ? err.message : String(err);
|
|
5657
5779
|
const exitCode = err instanceof NhnCloudCliError ? err.exitCode : 1;
|