@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/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 import_commander42 = require("commander");
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 = parseInt(opts.page ?? "0", 10);
1263
- const size = parseInt(opts.size ?? "10", 10);
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: parseInt(opts.concurrent ?? "1", 10),
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 resolveProfileName(opts.profile);
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 resolveProfileName(opts.profile);
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 resolveProfileName(opts.profile);
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 = parseNonNegInt(opts.minDisk, "--min-disk");
3309
- const minRam = parseNonNegInt(opts.minRam, "--min-ram");
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 = parseInt(opts.timeout ?? "300", 10) * 1e3;
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: opts.bootVolumeSize !== void 0 ? parseInt(opts.bootVolumeSize, 10) : void 0,
3506
+ bootVolumeSize,
3477
3507
  keyName: opts.keyName,
3478
3508
  securityGroups: opts.securityGroup && opts.securityGroup.length > 0 ? opts.securityGroup : void 0,
3479
- ephemeralDiskSize: opts.ephemeralDiskSize !== void 0 ? parseInt(opts.ephemeralDiskSize, 10) : void 0,
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 = parsePositiveInt5(opts.limit, "--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/nks/supports.ts
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 isClustersResponse(val) {
4367
+ function isArrayFieldResponse(key, val, itemGuard) {
4291
4368
  if (typeof val !== "object" || val === null) return false;
4292
- const obj = val;
4293
- return Array.isArray(obj["clusters"]) && obj["clusters"].every(isNksClusterSummary);
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
- if (typeof val !== "object" || val === null) return false;
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
- if (typeof val !== "object" || val === null) return false;
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
- if (typeof val !== "object" || val === null) return false;
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
- if (typeof val !== "object" || val === null) return false;
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 resolveProfileName(opts.profile);
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 import_commander38.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) => {
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 import_commander39 = require("commander");
4874
+ var import_commander40 = require("commander");
4806
4875
  var import_chalk12 = __toESM(require("chalk"));
4807
- var listCommand6 = new import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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) => {
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 import_commander39.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);
5217
- var clusterCommand = new import_commander39.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);
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 import_commander40 = require("commander");
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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) => {
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 import_commander40.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"));
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 import_commander41 = require("commander");
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 import_commander41.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) => {
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 import_commander41.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) => {
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 import_commander41.Command("addon-type").description("NKS \uC560\uB4DC\uC628 \uD0C0\uC785 \uAD00\uB828 \uBA85\uB839").addCommand(addonTypeListCommand).addCommand(addonTypeGetCommand);
5535
- var addonListCommand = new import_commander41.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) => {
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 import_commander41.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) => {
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 import_commander41.Command("addon").description("NKS \uC560\uB4DC\uC628 \uAD00\uB828 \uBA85\uB839").addCommand(addonListCommand).addCommand(addonGetCommand);
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 program = new import_commander42.Command();
5581
- program.name("nhncloud").description("NHN Cloud CLI \u2014 AI agent & terminal friendly").version("0.6.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");
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 import_commander42.Command("logncrash").description("Log & Crash \uAD00\uB828 \uBA85\uB839");
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 import_commander42.Command("deploy").description("NHN Cloud Deploy \uAD00\uB828 \uBA85\uB839");
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 import_commander42.Command("instance").description("Compute \uC778\uC2A4\uD134\uC2A4 \uAD00\uB828 \uBA85\uB839");
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 import_commander42.Command("network").description("VPC\xB7\uC11C\uBE0C\uB137 \uC870\uD68C");
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 import_commander42.Command("volume").description("Block Storage \uBCFC\uB968 \uAD00\uB828 \uBA85\uB839");
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 import_commander42.Command("floatingip").description(
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 import_commander42.Command("ncr").description("NHN Container Registry \uAD00\uB828 \uBA85\uB839");
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 import_commander42.Command("nks").description("NHN Kubernetes Service \uAD00\uB828 \uBA85\uB839");
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;