@bifos/nhncloud-cli 0.15.0 → 0.17.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_commander57 = require("commander");
27
+ var import_commander60 = require("commander");
28
28
  var import_chalk18 = __toESM(require("chalk"));
29
29
 
30
30
  // src/utils/spinner.ts
@@ -192,8 +192,38 @@ nhncloud configure \uB97C \uC2E4\uD589\uD574 UAK id/secret \uC744 \uC124\uC815\u
192
192
  }
193
193
  return uak;
194
194
  }
195
+ async function getProfileEnvironment(profileName, allowMissing = false) {
196
+ const credentials = allowMissing ? await loadCredentialsOrEmpty() : await loadCredentials();
197
+ const profile = credentials.profiles[profileName];
198
+ if (!profile) {
199
+ if (allowMissing) return "real";
200
+ throw new NhnCloudCliError(`profile "${profileName}" \uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.`, EXIT_CONFIG_ERROR);
201
+ }
202
+ const environment = profile.environment;
203
+ if (environment !== void 0 && environment !== "gov") {
204
+ throw new NhnCloudCliError(`profile "${profileName}" \uC758 environment \uB294 gov \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4. \uC77C\uBC18\uB9DD\uC740 \uC774 \uD544\uB4DC\uB97C \uC0DD\uB7B5\uD558\uC138\uC694.`, EXIT_CONFIG_ERROR);
205
+ }
206
+ return environment ?? "real";
207
+ }
208
+ async function requireRealEnvironment(profileName, service) {
209
+ if (await getProfileEnvironment(profileName) === "gov") {
210
+ throw new NhnCloudCliError(`${service}\uC758 \uACF5\uACF5\uB9DD API endpoint\uB294 \uC544\uC9C1 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.`, EXIT_CONFIG_ERROR);
211
+ }
212
+ }
195
213
  async function getServiceCredential(service, profileName) {
196
- if (service === "userAccessKey" || service === "iaas") {
214
+ const cred = await getOptionalServiceCredential(service, profileName);
215
+ if (!cred) {
216
+ throw new NhnCloudCliError(
217
+ `profile "${profileName}" \uC5D0 "${service}" \uC790\uACA9\uC99D\uBA85\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
218
+ ${CREDENTIALS_PATH} \uC5D0\uC11C profiles.${profileName}.${service} \uBE14\uB85D\uC744 \uCD94\uAC00\uD558\uC138\uC694.
219
+ \uC608\uC2DC: { "appkey": "<appkey>" }`,
220
+ EXIT_CONFIG_ERROR
221
+ );
222
+ }
223
+ return cred;
224
+ }
225
+ async function getOptionalServiceCredential(service, profileName) {
226
+ if (service === "userAccessKey" || service === "iaas" || service === "environment") {
197
227
  throw new NhnCloudCliError(
198
228
  `"${service}" \uB294 \uC11C\uBE44\uC2A4 \uC790\uACA9\uC99D\uBA85\uC774 \uC544\uB2D9\uB2C8\uB2E4 \u2014 \uC804\uC6A9 getter \uB97C \uC0AC\uC6A9\uD558\uC138\uC694.`,
199
229
  EXIT_PARAM_ERROR
@@ -208,16 +238,7 @@ ${CREDENTIALS_PATH} \uC5D0\uC11C profiles.${profileName} \uBE14\uB85D\uC744 \uCD
208
238
  EXIT_CONFIG_ERROR
209
239
  );
210
240
  }
211
- const cred = profile[service];
212
- if (!cred) {
213
- throw new NhnCloudCliError(
214
- `profile "${profileName}" \uC5D0 "${service}" \uC790\uACA9\uC99D\uBA85\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
215
- ${CREDENTIALS_PATH} \uC5D0\uC11C profiles.${profileName}.${service} \uBE14\uB85D\uC744 \uCD94\uAC00\uD558\uC138\uC694.
216
- \uC608\uC2DC: { "appkey": "<appkey>" }`,
217
- EXIT_CONFIG_ERROR
218
- );
219
- }
220
- return cred;
241
+ return profile[service];
221
242
  }
222
243
  async function loadCredentialsOrEmpty() {
223
244
  try {
@@ -377,8 +398,23 @@ function parseNonNegativeIntegerOption(value, flag) {
377
398
  return parseIntegerOption(value, flag, { min: 0 });
378
399
  }
379
400
 
380
- // src/commands/configure.ts
401
+ // src/commands/commander-errors.ts
381
402
  var import_commander = require("commander");
403
+ function throwWithNormalizedExitCode(error) {
404
+ if (error.code === "commander.missingMandatoryOptionValue") {
405
+ error.exitCode = EXIT_PARAM_ERROR;
406
+ }
407
+ throw error;
408
+ }
409
+ function configureCommanderExitCodes(root) {
410
+ root.exitOverride(throwWithNormalizedExitCode);
411
+ for (const command of root.commands) {
412
+ configureCommanderExitCodes(command);
413
+ }
414
+ }
415
+
416
+ // src/commands/configure.ts
417
+ var import_commander2 = require("commander");
382
418
  var import_chalk2 = __toESM(require("chalk"));
383
419
  var import_core = require("@inquirer/core");
384
420
 
@@ -507,14 +543,17 @@ function toNhnCloudCliError(err) {
507
543
  }
508
544
 
509
545
  // src/api/oauth.ts
510
- var OAUTH_ENDPOINT = "https://oauth.api.nhncloudservice.com/oauth2/token/create";
546
+ var OAUTH_ENDPOINT = {
547
+ real: "https://oauth.api.nhncloudservice.com/oauth2/token/create",
548
+ gov: "https://oauth.api.gov-nhncloudservice.com/oauth2/token/create"
549
+ };
511
550
  function isTokenResponse(val) {
512
551
  if (typeof val !== "object" || val === null) return false;
513
552
  const obj = val;
514
553
  return typeof obj["access_token"] === "string" && typeof obj["expires_in"] === "number";
515
554
  }
516
- async function getAccessToken(profile, uakId, uakSecret, forceRefresh = false) {
517
- const credentialHash = credentialFingerprint(JSON.stringify([uakId, uakSecret]));
555
+ async function getAccessToken(profile, uakId, uakSecret, forceRefresh = false, environment = "real") {
556
+ const credentialHash = credentialFingerprint(JSON.stringify([environment, uakId, uakSecret]));
518
557
  if (!forceRefresh) {
519
558
  const cached = await readToken(profile, credentialHash);
520
559
  if (cached !== null) {
@@ -524,7 +563,7 @@ async function getAccessToken(profile, uakId, uakSecret, forceRefresh = false) {
524
563
  const basicCredential = Buffer.from(`${uakId}:${uakSecret}`).toString("base64");
525
564
  let raw;
526
565
  try {
527
- raw = await import_ky2.default.post(OAUTH_ENDPOINT, {
566
+ raw = await import_ky2.default.post(OAUTH_ENDPOINT[environment], {
528
567
  headers: {
529
568
  Authorization: `Basic ${basicCredential}`,
530
569
  "Content-Type": "application/x-www-form-urlencoded"
@@ -555,18 +594,29 @@ var ENDPOINTS = {
555
594
  "logncrash-collector": "https://api-logncrash.nhncloudservice.com",
556
595
  deploy: "https://api-deploy.nhncloudservice.com"
557
596
  };
558
- function endpointFor(service) {
559
- const endpoint = ENDPOINTS[service];
597
+ var GOV_ENDPOINTS = {
598
+ deploy: "https://api-tcd.gov-nhncloudservice.com"
599
+ };
600
+ function endpointFor(service, environment = "real") {
601
+ const endpoints = environment === "gov" ? GOV_ENDPOINTS : ENDPOINTS;
602
+ const endpoint = endpoints[service];
560
603
  if (!endpoint) {
561
604
  throw new NhnCloudCliError(
562
- `\uB4F1\uB85D\uB418\uC9C0 \uC54A\uC740 \uC11C\uBE44\uC2A4\uC785\uB2C8\uB2E4: "${service}". \uC9C0\uC6D0 \uC11C\uBE44\uC2A4: ${Object.keys(ENDPOINTS).join(", ")}`,
605
+ `\uB4F1\uB85D\uB418\uC9C0 \uC54A\uC740 \uC11C\uBE44\uC2A4\uC785\uB2C8\uB2E4: "${service}". \uC9C0\uC6D0 \uC11C\uBE44\uC2A4: ${Object.keys(endpoints).join(", ")}`,
563
606
  EXIT_API_ERROR
564
607
  );
565
608
  }
566
609
  return endpoint;
567
610
  }
568
- function keystoneIdentityUrl() {
569
- return "https://api-identity-infrastructure.nhncloudservice.com/v2.0/tokens";
611
+ function keystoneIdentityUrl(environment = "real") {
612
+ return `https://api-identity-infrastructure.${environment === "gov" ? "gov-" : ""}nhncloudservice.com/v2.0/tokens`;
613
+ }
614
+ var GOV_IAAS_REGIONS = ["kr1", "kr2"];
615
+ function govIaasHost(region, service) {
616
+ if (!GOV_IAAS_REGIONS.includes(region)) {
617
+ throw new NhnCloudCliError(`\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uACF5\uACF5\uB9DD IaaS region \uC785\uB2C8\uB2E4: "${region}". \uC0AC\uC6A9 \uAC00\uB2A5\uD55C region: ${GOV_IAAS_REGIONS.join(", ")}`, EXIT_PARAM_ERROR);
618
+ }
619
+ return `${region}-api-${service}-infrastructure.gov-nhncloudservice.com`;
570
620
  }
571
621
  var INSTANCE_HOST = {
572
622
  kr1: "kr1-api-instance-infrastructure.nhncloudservice.com",
@@ -603,7 +653,11 @@ var NCR_HOST = {
603
653
  kr2: "kr2-ncr.api.nhncloudservice.com",
604
654
  kr3: "kr3-ncr.api.nhncloudservice.com"
605
655
  };
606
- function ncrHost(region) {
656
+ function ncrHost(region, environment = "real") {
657
+ if (environment === "gov") {
658
+ if (region !== "kr1") throw new NhnCloudCliError(`\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uACF5\uACF5\uB9DD NCR region \uC785\uB2C8\uB2E4: "${region}". \uC0AC\uC6A9 \uAC00\uB2A5\uD55C region: kr1`, EXIT_PARAM_ERROR);
659
+ return "kr1-ncr.api.gov-nhncloudservice.com";
660
+ }
607
661
  const host = NCR_HOST[region];
608
662
  if (!host) {
609
663
  throw new NhnCloudCliError(
@@ -613,7 +667,8 @@ function ncrHost(region) {
613
667
  }
614
668
  return host;
615
669
  }
616
- function instanceHost(region) {
670
+ function instanceHost(region, environment = "real") {
671
+ if (environment === "gov") return govIaasHost(region, "instance");
617
672
  const host = INSTANCE_HOST[region];
618
673
  if (!host) {
619
674
  throw new NhnCloudCliError(
@@ -623,7 +678,8 @@ function instanceHost(region) {
623
678
  }
624
679
  return host;
625
680
  }
626
- function imageHost(region) {
681
+ function imageHost(region, environment = "real") {
682
+ if (environment === "gov") return govIaasHost(region, "image");
627
683
  const host = IMAGE_HOST[region];
628
684
  if (!host) {
629
685
  throw new NhnCloudCliError(
@@ -633,7 +689,8 @@ function imageHost(region) {
633
689
  }
634
690
  return host;
635
691
  }
636
- function networkHost(region) {
692
+ function networkHost(region, environment = "real") {
693
+ if (environment === "gov") return govIaasHost(region, "network");
637
694
  const host = NETWORK_HOST[region];
638
695
  if (!host) {
639
696
  throw new NhnCloudCliError(
@@ -643,7 +700,8 @@ function networkHost(region) {
643
700
  }
644
701
  return host;
645
702
  }
646
- function blockStorageHost(region) {
703
+ function blockStorageHost(region, environment = "real") {
704
+ if (environment === "gov") return govIaasHost(region, "block-storage");
647
705
  const host = BLOCKSTORAGE_HOST[region];
648
706
  if (!host) {
649
707
  throw new NhnCloudCliError(
@@ -653,7 +711,8 @@ function blockStorageHost(region) {
653
711
  }
654
712
  return host;
655
713
  }
656
- function nksHost(region) {
714
+ function nksHost(region, environment = "real") {
715
+ if (environment === "gov") return govIaasHost(region, "kubernetes");
657
716
  const host = NKS_HOST[region];
658
717
  if (!host) {
659
718
  throw new NhnCloudCliError(
@@ -703,9 +762,9 @@ function isKeystoneTokenResponse(val) {
703
762
  const token = access["token"];
704
763
  return typeof token["id"] === "string" && typeof token["expires"] === "string";
705
764
  }
706
- async function getIaasToken(profile, iaas, forceRefresh = false) {
765
+ async function getIaasToken(profile, iaas, forceRefresh = false, environment = "real") {
707
766
  const credentialHash = credentialFingerprint(
708
- JSON.stringify([iaas.tenantId, iaas.username, iaas.password])
767
+ JSON.stringify([environment, iaas.tenantId, iaas.username, iaas.password])
709
768
  );
710
769
  if (!forceRefresh) {
711
770
  const cached = await readIaasToken(profile, iaas.region, credentialHash);
@@ -720,15 +779,15 @@ async function getIaasToken(profile, iaas, forceRefresh = false) {
720
779
  };
721
780
  }
722
781
  }
723
- const host = instanceHost(iaas.region);
782
+ const host = instanceHost(iaas.region, environment);
724
783
  const computeEndpoint = `https://${host}/v2/${encodeURIComponent(iaas.tenantId)}`;
725
- const imageEndpoint = `https://${imageHost(iaas.region)}/v2`;
726
- const networkEndpoint = `https://${networkHost(iaas.region)}/v2.0`;
727
- const blockStorageEndpoint = `https://${blockStorageHost(iaas.region)}/v2/${encodeURIComponent(iaas.tenantId)}`;
728
- const nksEndpoint = `https://${nksHost(iaas.region)}/v1`;
784
+ const imageEndpoint = `https://${imageHost(iaas.region, environment)}/v2`;
785
+ const networkEndpoint = `https://${networkHost(iaas.region, environment)}/v2.0`;
786
+ const blockStorageEndpoint = `https://${blockStorageHost(iaas.region, environment)}/v2/${encodeURIComponent(iaas.tenantId)}`;
787
+ const nksEndpoint = `https://${nksHost(iaas.region, environment)}/v1`;
729
788
  let raw;
730
789
  try {
731
- raw = await import_ky3.default.post(keystoneIdentityUrl(), {
790
+ raw = await import_ky3.default.post(keystoneIdentityUrl(environment), {
732
791
  json: {
733
792
  auth: {
734
793
  tenantId: iaas.tenantId,
@@ -783,6 +842,13 @@ function unwrap(res) {
783
842
  return res.body;
784
843
  }
785
844
 
845
+ // src/services/logncrash/types.ts
846
+ function isAvailableTokenResult(value) {
847
+ if (typeof value !== "object" || value === null) return false;
848
+ const availableToken = value["availableToken"];
849
+ return typeof availableToken === "number" && Number.isSafeInteger(availableToken);
850
+ }
851
+
786
852
  // src/services/logncrash/errors.ts
787
853
  var import_ky4 = require("ky");
788
854
  var RATE_LIMIT_RESULT_CODE = 429;
@@ -792,7 +858,7 @@ function isRateLimitError(err) {
792
858
  function withRateLimitHint(err) {
793
859
  return new NhnCloudCliError(
794
860
  `${err.message}
795
- \uC870\uD68C \uD69F\uC218 \uC81C\uD55C\uC5D0 \uAC78\uB838\uC2B5\uB2C8\uB2E4. \uC2DC\uAC04\uC744 \uB450\uACE0 \uB2E4\uC2DC \uC2E4\uD589\uD558\uC138\uC694. \uAC80\uC0C9 \uAE30\uAC04\uC744 \uC881\uD600\uB3C4 \uD480\uB9AC\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.`,
861
+ \uC870\uD68C \uD69F\uC218 \uC81C\uD55C\uC5D0 \uAC78\uB838\uC2B5\uB2C8\uB2E4. \uC790\uB3D9\uC73C\uB85C \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uAC80\uC0C9 \uAE30\uAC04\uB9CC \uC881\uD600 \uD574\uACB0\uC744 \uBCF4\uC7A5\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. nhncloud logncrash available-token\uC73C\uB85C \uC794\uB7C9\uACFC \uCD94\uC815 \uB300\uAE30 \uC2DC\uAC04\uC744 \uB2E4\uC2DC \uD655\uC778\uD558\uC138\uC694.`,
796
862
  err.exitCode
797
863
  );
798
864
  }
@@ -831,6 +897,28 @@ var LogncrashClient = class {
831
897
  this.appkey = appkey;
832
898
  this.accessToken = accessToken;
833
899
  }
900
+ async availableToken() {
901
+ const headers = this.readHeaders();
902
+ const endpoint = endpointFor("logncrash");
903
+ const url = `${endpoint}/v3/${encodeURIComponent(this.appkey)}/logs/available-token`;
904
+ try {
905
+ const res = await import_ky5.default.get(url, {
906
+ headers,
907
+ retry: 0,
908
+ timeout: DEFAULT_TIMEOUT_MS
909
+ }).json();
910
+ const body = unwrap(res);
911
+ if (!isAvailableTokenResult(body)) {
912
+ throw new NhnCloudCliError(
913
+ "logncrash available-token \uC751\uB2F5 \uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 \u2014 availableToken \uC815\uC218 \uD544\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
914
+ EXIT_API_ERROR
915
+ );
916
+ }
917
+ return body;
918
+ } catch (err) {
919
+ throw await toLogncrashError(err);
920
+ }
921
+ }
834
922
  async cursorSearch(params) {
835
923
  const headers = this.readHeaders();
836
924
  const endpoint = endpointFor("logncrash");
@@ -960,10 +1048,10 @@ var NcrClient = class {
960
1048
  uakId;
961
1049
  uakSecret;
962
1050
  baseUrl;
963
- constructor(uakId, uakSecret, region) {
1051
+ constructor(uakId, uakSecret, region, environment = "real") {
964
1052
  this.uakId = uakId;
965
1053
  this.uakSecret = uakSecret;
966
- this.baseUrl = `https://${ncrHost(region)}`;
1054
+ this.baseUrl = `https://${ncrHost(region, environment)}`;
967
1055
  }
968
1056
  authHeaders() {
969
1057
  return {
@@ -1923,6 +2011,12 @@ async function verifyLogncrash(uak, appkey) {
1923
2011
  // src/commands/configure.ts
1924
2012
  async function saveAndVerify(profileName, uak, logncrash, iaas, ncr, ncs, apigateway, deploy, doVerify, logncrashUak = uak) {
1925
2013
  if (doVerify) {
2014
+ if (await getProfileEnvironment(profileName, true) === "gov") {
2015
+ throw new NhnCloudCliError(
2016
+ "\uACF5\uACF5\uB9DD profile\uC740 configure \uC5F0\uACB0 \uD14C\uC2A4\uD2B8\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. --no-verify\uB85C \uC800\uC7A5\uD55C \uB4A4 \uC870\uD68C \uBA85\uB839\uC73C\uB85C \uD655\uC778\uD558\uC138\uC694.",
2017
+ EXIT_CONFIG_ERROR
2018
+ );
2019
+ }
1926
2020
  if (uak) {
1927
2021
  const ok = await verifyUserAccessKey(uak);
1928
2022
  if (ok) {
@@ -2242,7 +2336,7 @@ async function runNonInteractive(opts) {
2242
2336
  logncrashUak
2243
2337
  );
2244
2338
  }
2245
- var configureCommand = new import_commander.Command("configure").description("\uC790\uACA9\uC99D\uBA85 \uC124\uC815 \uB9C8\uBC95\uC0AC (\uB300\uD654\uD615 + flag)").option("--profile <name>", "\uB300\uC0C1 profile \uC774\uB984 (\uAE30\uBCF8: default)").option("--uak-id <id>", "\uAC1C\uC778 UAK ID (\uBE44\uB300\uD654\uD615)").option("--uak-secret <secret>", "\uAC1C\uC778 UAK Secret (\uBE44\uB300\uD654\uD615, \uB178\uCD9C \uBC29\uC9C0\uB85C env NHNCLOUD_UAK_SECRET \uAD8C\uC7A5)").option("--logncrash-appkey <key>", "logncrash appkey (\uBE44\uB300\uD654\uD615)").option("--logncrash-secret <secret>", "\uD3D0\uAE30 \uC608\uC815: Search v3\uC5D0\uC11C\uB294 \uC0AC\uC6A9\xB7\uC800\uC7A5\uD558\uC9C0 \uC54A\uC74C").option("--iaas-tenant-id <id>", "iaas tenantId / \uD504\uB85C\uC81D\uD2B8 ID (\uBE44\uB300\uD654\uD615)").option("--iaas-username <user>", "iaas IAM username (\uBE44\uB300\uD654\uD615)").option(
2339
+ var configureCommand = new import_commander2.Command("configure").description("\uC790\uACA9\uC99D\uBA85 \uC124\uC815 \uB9C8\uBC95\uC0AC (\uB300\uD654\uD615 + flag)").option("--profile <name>", "\uB300\uC0C1 profile \uC774\uB984 (\uAE30\uBCF8: default)").option("--uak-id <id>", "\uAC1C\uC778 UAK ID (\uBE44\uB300\uD654\uD615)").option("--uak-secret <secret>", "\uAC1C\uC778 UAK Secret (\uBE44\uB300\uD654\uD615, \uB178\uCD9C \uBC29\uC9C0\uB85C env NHNCLOUD_UAK_SECRET \uAD8C\uC7A5)").option("--logncrash-appkey <key>", "logncrash appkey (\uBE44\uB300\uD654\uD615)").option("--logncrash-secret <secret>", "\uD3D0\uAE30 \uC608\uC815: Search v3\uC5D0\uC11C\uB294 \uC0AC\uC6A9\xB7\uC800\uC7A5\uD558\uC9C0 \uC54A\uC74C").option("--iaas-tenant-id <id>", "iaas tenantId / \uD504\uB85C\uC81D\uD2B8 ID (\uBE44\uB300\uD654\uD615)").option("--iaas-username <user>", "iaas IAM username (\uBE44\uB300\uD654\uD615)").option(
2246
2340
  "--iaas-password <pass>",
2247
2341
  "iaas API \uBE44\uBC00\uBC88\uD638 (\uBE44\uB300\uD654\uD615, \uB178\uCD9C \uBC29\uC9C0\uB85C env NHNCLOUD_IAAS_PASSWORD \uAD8C\uC7A5)"
2248
2342
  ).option("--iaas-region <region>", "iaas region (\uAE30\uBCF8: kr1)", "kr1").option("--ncr-appkey <key>", "ncr appkey (\uBE44\uB300\uD654\uD615)").option("--ncs-appkey <key>", "ncs appkey (\uBE44\uB300\uD654\uD615)").option("--apigateway-appkey <key>", "API Gateway appkey (\uBE44\uB300\uD654\uD615)").option("--deploy-appkey <key>", "deploy appkey (\uBE44\uB300\uD654\uD615)").option("--no-verify", "\uC5F0\uACB0 \uD14C\uC2A4\uD2B8 \uC0DD\uB7B5").action(async (opts) => {
@@ -2263,7 +2357,7 @@ var configureCommand = new import_commander.Command("configure").description("\u
2263
2357
  });
2264
2358
 
2265
2359
  // src/commands/skills.ts
2266
- var import_commander2 = require("commander");
2360
+ var import_commander3 = require("commander");
2267
2361
 
2268
2362
  // src/skill/context.ts
2269
2363
  var import_node_fs = require("fs");
@@ -3078,7 +3172,7 @@ async function showStatus(cmd, dependencies) {
3078
3172
  outputSkillStatus(opts, await dependencies.inspect(context));
3079
3173
  }
3080
3174
  function createInstallCommand(name, dependencies) {
3081
- return new import_commander2.Command(name).description(
3175
+ return new import_commander3.Command(name).description(
3082
3176
  name === "install" ? "Claude Code \uC2A4\uD0AC\uC744 \uAD00\uB9AC \uC800\uC7A5\uC18C\uC5D0 \uC124\uCE58\uD55C\uB2E4" : "Claude Code \uC2A4\uD0AC\uC744 \uD604\uC7AC CLI \uBC84\uC804\uC73C\uB85C \uAC31\uC2E0\uD55C\uB2E4"
3083
3177
  ).option("--force", "\uC0AC\uC6A9\uC790 \uD56D\uBAA9\uC774\uB098 \uC218\uC815\xB7\uC190\uC0C1\uB41C \uAD00\uB9AC \uC800\uC7A5\uC18C\uB97C \uBC31\uC5C5 \uD6C4 \uAD50\uCCB4\uD55C\uB2E4").action(async (_localOpts, cmd) => {
3084
3178
  const opts = cmd.optsWithGlobals();
@@ -3088,8 +3182,8 @@ function createInstallCommand(name, dependencies) {
3088
3182
  });
3089
3183
  }
3090
3184
  function createSkillsCommand(dependencies = defaultDependencies) {
3091
- const statusCommand = new import_commander2.Command("status").description("Claude Code \uC2A4\uD0AC\uC758 \uAD00\uB9AC \uC0C1\uD0DC\uB97C \uC870\uD68C\uD55C\uB2E4").action(async (_opts, cmd) => showStatus(cmd, dependencies));
3092
- const uninstallCommand = new import_commander2.Command("uninstall").description("\uD65C\uC131 Claude Code \uC2A4\uD0AC \uB9C1\uD06C\uB97C \uC81C\uAC70\uD55C\uB2E4").action(async (_opts, cmd) => {
3185
+ const statusCommand = new import_commander3.Command("status").description("Claude Code \uC2A4\uD0AC\uC758 \uAD00\uB9AC \uC0C1\uD0DC\uB97C \uC870\uD68C\uD55C\uB2E4").action(async (_opts, cmd) => showStatus(cmd, dependencies));
3186
+ const uninstallCommand = new import_commander3.Command("uninstall").description("\uD65C\uC131 Claude Code \uC2A4\uD0AC \uB9C1\uD06C\uB97C \uC81C\uAC70\uD55C\uB2E4").action(async (_opts, cmd) => {
3093
3187
  const opts = cmd.optsWithGlobals();
3094
3188
  const context = dependencies.createContext();
3095
3189
  const previousStatus = await dependencies.inspect(context);
@@ -3104,12 +3198,12 @@ function createSkillsCommand(dependencies = defaultDependencies) {
3104
3198
  };
3105
3199
  outputSkillUninstallResult(opts, result);
3106
3200
  });
3107
- return new import_commander2.Command("skills").description(`Claude Code \uC2A4\uD0AC(${SKILL_NAME3}) \uC124\uCE58 \uAD00\uB9AC`).addCommand(statusCommand).addCommand(createInstallCommand("install", dependencies)).addCommand(createInstallCommand("update", dependencies)).addCommand(uninstallCommand).action(async (_opts, cmd) => showStatus(cmd, dependencies));
3201
+ return new import_commander3.Command("skills").description(`Claude Code \uC2A4\uD0AC(${SKILL_NAME3}) \uC124\uCE58 \uAD00\uB9AC`).addCommand(statusCommand).addCommand(createInstallCommand("install", dependencies)).addCommand(createInstallCommand("update", dependencies)).addCommand(uninstallCommand).action(async (_opts, cmd) => showStatus(cmd, dependencies));
3108
3202
  }
3109
3203
  var skillsCommand = createSkillsCommand();
3110
3204
 
3111
3205
  // src/commands/doctor.ts
3112
- var import_commander3 = require("commander");
3206
+ var import_commander4 = require("commander");
3113
3207
  var import_chalk3 = __toESM(require("chalk"));
3114
3208
  var import_promises4 = require("fs/promises");
3115
3209
  var import_node_os4 = require("os");
@@ -3140,7 +3234,7 @@ async function readDefaultProfile() {
3140
3234
  return null;
3141
3235
  }
3142
3236
  }
3143
- var doctorCommand = new import_commander3.Command("doctor").description("\uC790\uACA9\uC99D\uBA85\xB7\uC2A4\uD0AC \uC124\uCE58 \uC0C1\uD0DC\uB97C \uC9C4\uB2E8\uD55C\uB2E4(\uC624\uD504\uB77C\uC778 \u2014 \uC5F0\uACB0 \uD14C\uC2A4\uD2B8\uB294 configure \uB85C)").action(async () => {
3237
+ var doctorCommand = new import_commander4.Command("doctor").description("\uC790\uACA9\uC99D\uBA85\xB7\uC2A4\uD0AC \uC124\uCE58 \uC0C1\uD0DC\uB97C \uC9C4\uB2E8\uD55C\uB2E4(\uC624\uD504\uB77C\uC778 \u2014 \uC5F0\uACB0 \uD14C\uC2A4\uD2B8\uB294 configure \uB85C)").action(async () => {
3144
3238
  console.log(import_chalk3.default.bold("\n\u{1F50D} nhncloud-cli \uC9C4\uB2E8\n"));
3145
3239
  const creds = await readProfiles();
3146
3240
  const defaultProfile = await readDefaultProfile();
@@ -3180,7 +3274,7 @@ var doctorCommand = new import_commander3.Command("doctor").description("\uC790\
3180
3274
  });
3181
3275
 
3182
3276
  // src/commands/logncrash/search.ts
3183
- var import_commander4 = require("commander");
3277
+ var import_commander5 = require("commander");
3184
3278
 
3185
3279
  // src/utils/time.ts
3186
3280
  function toLocalISOString(date) {
@@ -3298,9 +3392,26 @@ function assertSearchRange(fromIso, toIso) {
3298
3392
  }
3299
3393
  }
3300
3394
 
3395
+ // src/services/logncrash/token.ts
3396
+ var OBSERVED_REFILL_RATE_PER_SECOND = 1.6;
3397
+ function availableTokenStatus(availableToken) {
3398
+ return {
3399
+ availableToken,
3400
+ estimatedWaitSeconds: availableToken > 0 ? null : Math.ceil((1 - availableToken) / OBSERVED_REFILL_RATE_PER_SECOND)
3401
+ };
3402
+ }
3403
+ function assertAvailableSearchToken(status) {
3404
+ if (status.estimatedWaitSeconds === null) return;
3405
+ throw new NhnCloudCliError(
3406
+ `\uC870\uD68C \uD1A0\uD070 \uC794\uB7C9\uC774 ${status.availableToken}\uC774\uBBC0\uB85C \uAC80\uC0C9 \uC694\uCCAD\uC744 \uBCF4\uB0B4\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uAD00\uCE21\uD55C \uD68C\uBCF5 \uC18D\uB3C4 ${OBSERVED_REFILL_RATE_PER_SECOND} token/s \uAE30\uC900\uC73C\uB85C \uC794\uB7C9\uC774 \uC591\uC218\uAC00 \uB418\uAE30\uAE4C\uC9C0 \uC57D ${status.estimatedWaitSeconds}\uCD08\uC785\uB2C8\uB2E4. CLI\uB294 \uC790\uB3D9\uC73C\uB85C \uAE30\uB2E4\uB9AC\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. nhncloud logncrash available-token\uC73C\uB85C \uB2E4\uC2DC \uD655\uC778\uD558\uC138\uC694.`,
3407
+ EXIT_API_ERROR
3408
+ );
3409
+ }
3410
+
3301
3411
  // src/commands/logncrash/helpers.ts
3302
3412
  async function resolveLogncrashClient(profile) {
3303
3413
  const profileName = await resolveProfileName(profile);
3414
+ await requireRealEnvironment(profileName, "Log & Crash");
3304
3415
  const credential = await getServiceCredential("logncrash", profileName);
3305
3416
  if (typeof credential.appkey !== "string" || credential.appkey.length === 0) {
3306
3417
  throw new NhnCloudCliError(
@@ -3312,6 +3423,10 @@ async function resolveLogncrashClient(profile) {
3312
3423
  const accessToken = await getAccessToken(profileName, uak.id, uak.secret);
3313
3424
  return new LogncrashClient(credential.appkey, accessToken);
3314
3425
  }
3426
+ async function preflightLogncrashSearchToken(client) {
3427
+ const result = await client.availableToken();
3428
+ assertAvailableSearchToken(availableTokenStatus(result.availableToken));
3429
+ }
3315
3430
 
3316
3431
  // src/commands/logncrash/search.ts
3317
3432
  function getString(value) {
@@ -3323,7 +3438,7 @@ function formatLogRow(log) {
3323
3438
  const body = truncate(getString(log["logBody"] ?? log["body"] ?? log["message"] ?? ""), 60);
3324
3439
  return [logTime, logType, body];
3325
3440
  }
3326
- var searchCommand = new import_commander4.Command("search").description("Log & Crash \uB85C\uADF8 \uAC80\uC0C9").option("--query <lucene>", "Lucene \uC9C8\uC758 \uBB38\uC790\uC5F4 (\uD544\uC218)").option("--from <time>", "\uAC80\uC0C9 \uC2DC\uC791: \uCD08\xB7\uC2DC\uAC04\uB300 \uD3EC\uD568 ISO8601 \uB610\uB294 \uC0C1\uB300\uC2DC\uAC04 (1h/30m/2d/now) (\uD544\uC218)").option("--to <time>", "\uAC80\uC0C9 \uB05D: \uCD08\xB7\uC2DC\uAC04\uB300 \uD3EC\uD568 ISO8601 \uB610\uB294 \uC0C1\uB300\uC2DC\uAC04 (\uD544\uC218)").option("--page <n>", "\uC804\uD658 \uD638\uD658\uC6A9 pageNumber. 0\uB9CC \uD5C8\uC6A9 (\uB2E4\uC74C \uD398\uC774\uC9C0\uB294 --cursor)", "0").option("--size <n>", "pageSize (\uAE30\uBCF8 10, \uCD5C\uB300 100)", "10").option("--cursor <value>", "\uB2E4\uC74C \uD398\uC774\uC9C0 \uC870\uD68C\uC6A9 opaque cursor").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
3441
+ var searchCommand = new import_commander5.Command("search").description("Log & Crash \uB85C\uADF8 \uAC80\uC0C9").option("--query <lucene>", "Lucene \uC9C8\uC758 \uBB38\uC790\uC5F4 (\uD544\uC218)").option("--from <time>", "\uAC80\uC0C9 \uC2DC\uC791: \uCD08\xB7\uC2DC\uAC04\uB300 \uD3EC\uD568 ISO8601 \uB610\uB294 \uC0C1\uB300\uC2DC\uAC04 (1h/30m/2d/now) (\uD544\uC218)").option("--to <time>", "\uAC80\uC0C9 \uB05D: \uCD08\xB7\uC2DC\uAC04\uB300 \uD3EC\uD568 ISO8601 \uB610\uB294 \uC0C1\uB300\uC2DC\uAC04 (\uD544\uC218)").option("--page <n>", "\uC804\uD658 \uD638\uD658\uC6A9 pageNumber. 0\uB9CC \uD5C8\uC6A9 (\uB2E4\uC74C \uD398\uC774\uC9C0\uB294 --cursor)", "0").option("--size <n>", "pageSize (\uAE30\uBCF8 10, \uCD5C\uB300 100)", "10").option("--cursor <value>", "\uB2E4\uC74C \uD398\uC774\uC9C0 \uC870\uD68C\uC6A9 opaque cursor").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
3327
3442
  const opts = cmd.optsWithGlobals();
3328
3443
  if (!opts.query) {
3329
3444
  throw new NhnCloudCliError(`--query \uC635\uC158\uC740 \uD544\uC218\uC785\uB2C8\uB2E4. \uC608: --query 'logType:"NORMAL"'`, EXIT_PARAM_ERROR);
@@ -3350,6 +3465,12 @@ var searchCommand = new import_commander4.Command("search").description("Log & C
3350
3465
  assertSearchRange(fromIso, toIso);
3351
3466
  const client = await resolveLogncrashClient(opts.profile);
3352
3467
  startSpinner("\uB85C\uADF8 \uAC80\uC0C9 \uC911...");
3468
+ try {
3469
+ await preflightLogncrashSearchToken(client);
3470
+ } catch (err) {
3471
+ stopSpinner(false);
3472
+ throw err;
3473
+ }
3353
3474
  let result;
3354
3475
  try {
3355
3476
  result = await client.cursorSearch({
@@ -3392,7 +3513,7 @@ var searchCommand = new import_commander4.Command("search").description("Log & C
3392
3513
  });
3393
3514
 
3394
3515
  // src/commands/logncrash/send.ts
3395
- var import_commander5 = require("commander");
3516
+ var import_commander6 = require("commander");
3396
3517
  var import_node_fs3 = require("fs");
3397
3518
  var MAX_LOG_BYTES = 8 * 1024 * 1024;
3398
3519
  var VALID_LEVELS = ["DEBUG", "INFO", "WARN", "ERROR", "FATAL"];
@@ -3425,7 +3546,7 @@ function resolveBody(opts) {
3425
3546
  EXIT_PARAM_ERROR
3426
3547
  );
3427
3548
  }
3428
- var sendCommand = new import_commander5.Command("send").description("\uB85C\uADF8 \uD55C \uAC74\uC744 Log & Crash \uB85C \uC804\uC1A1\uD55C\uB2E4 (--body / --file / stdin)").option("--body <text>", "\uB85C\uADF8 \uBA54\uC2DC\uC9C0 \uBCF8\uBB38 (\uBBF8\uC9C0\uC815 \uC2DC --file \uB610\uB294 stdin)").option("--file <path>", "\uB85C\uADF8 \uBCF8\uBB38\uC744 \uC77D\uC744 \uD30C\uC77C \uACBD\uB85C").option("--level <level>", "\uB85C\uADF8 \uB808\uBCA8 (DEBUG/INFO/WARN/ERROR/FATAL)").option("--app-version <ver>", "projectVersion (\uBBF8\uC9C0\uC815 \uC2DC \uAE30\uBCF8 '1.0.0')").option("--source <source>", "logSource (collector \uAE30\uBCF8 'http')").option("--type <type>", "logType (collector \uAE30\uBCF8 'log')").option("--host <host>", "\uB85C\uADF8\uB97C \uBCF4\uB0B8 host \uC2DD\uBCC4").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
3549
+ var sendCommand = new import_commander6.Command("send").description("\uB85C\uADF8 \uD55C \uAC74\uC744 Log & Crash \uB85C \uC804\uC1A1\uD55C\uB2E4 (--body / --file / stdin)").option("--body <text>", "\uB85C\uADF8 \uBA54\uC2DC\uC9C0 \uBCF8\uBB38 (\uBBF8\uC9C0\uC815 \uC2DC --file \uB610\uB294 stdin)").option("--file <path>", "\uB85C\uADF8 \uBCF8\uBB38\uC744 \uC77D\uC744 \uD30C\uC77C \uACBD\uB85C").option("--level <level>", "\uB85C\uADF8 \uB808\uBCA8 (DEBUG/INFO/WARN/ERROR/FATAL)").option("--app-version <ver>", "projectVersion (\uBBF8\uC9C0\uC815 \uC2DC \uAE30\uBCF8 '1.0.0')").option("--source <source>", "logSource (collector \uAE30\uBCF8 'http')").option("--type <type>", "logType (collector \uAE30\uBCF8 'log')").option("--host <host>", "\uB85C\uADF8\uB97C \uBCF4\uB0B8 host \uC2DD\uBCC4").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
3429
3550
  const opts = cmd.optsWithGlobals();
3430
3551
  const body = resolveBody(opts);
3431
3552
  const bytes = Buffer.byteLength(body, "utf-8");
@@ -3450,6 +3571,7 @@ var sendCommand = new import_commander5.Command("send").description("\uB85C\uADF
3450
3571
  logLevel = upper;
3451
3572
  }
3452
3573
  const profileName = await resolveProfileName(opts.profile);
3574
+ await requireRealEnvironment(profileName, "Log & Crash");
3453
3575
  const cred = await getServiceCredential("logncrash", profileName);
3454
3576
  if (!cred.appkey) {
3455
3577
  throw new NhnCloudCliError(
@@ -3480,11 +3602,12 @@ credentials.json \uC5D0 "appkey": "<appkey>" \uB97C \uCD94\uAC00\uD558\uC138\uC6
3480
3602
  });
3481
3603
 
3482
3604
  // src/commands/logncrash/export.ts
3483
- var import_commander6 = require("commander");
3605
+ var import_commander7 = require("commander");
3484
3606
  var import_promises5 = require("fs/promises");
3485
3607
  var import_node_fs4 = require("fs");
3486
3608
  var import_node_crypto4 = require("crypto");
3487
3609
  var MAX_TOTAL = 1e5;
3610
+ var defaultExportFileOps = { appendFile: import_promises5.appendFile, rename: import_promises5.rename };
3488
3611
  function assertWritable(path5, force) {
3489
3612
  if (force) return;
3490
3613
  try {
@@ -3499,183 +3622,233 @@ function assertWritable(path5, force) {
3499
3622
  EXIT_PARAM_ERROR
3500
3623
  );
3501
3624
  }
3502
- var exportCommand = new import_commander6.Command("export").description("Log & Crash \uB85C\uADF8\uB97C scroll \uB85C \uC804\uCCB4 \uCD94\uCD9C\uD574 \uD30C\uC77C\uB85C \uC800\uC7A5 (\uB300\uB7C9 \uCD94\uCD9C)").option("--query <lucene>", "Lucene \uC9C8\uC758 \uBB38\uC790\uC5F4 (\uD544\uC218)").option("--from <time>", "\uAC80\uC0C9 \uC2DC\uC791: \uCD08\xB7\uC2DC\uAC04\uB300 \uD3EC\uD568 ISO8601 \uB610\uB294 \uC0C1\uB300\uC2DC\uAC04 (1h/30m/2d/now) (\uD544\uC218)").option("--to <time>", "\uAC80\uC0C9 \uB05D: \uCD08\xB7\uC2DC\uAC04\uB300 \uD3EC\uD568 ISO8601 \uB610\uB294 \uC0C1\uB300\uC2DC\uAC04 (\uD544\uC218)").option("--output <file>", "\uCD9C\uB825 \uD30C\uC77C \uACBD\uB85C (\uD544\uC218)").option("--format <fmt>", "\uCD9C\uB825 \uD615\uC2DD: jsonl(\uAE30\uBCF8, \uD55C \uC904\uB2F9 \uD55C \uB85C\uADF8) \uB610\uB294 json(\uBC30\uC5F4)", "jsonl").option("--size <n>", "\uD3D0\uAE30 \uC608\uC815: Search v3\uC5D0\uC11C\uB294 \uBB34\uC2DC\uB428 (\uD638\uD658 \uAC80\uC99D \uBC94\uC704 10~100)").option("--force", "\uCD9C\uB825 \uD30C\uC77C\uC774 \uC788\uC73C\uBA74 \uB36E\uC5B4\uC4F4\uB2E4").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
3503
- const opts = cmd.optsWithGlobals();
3504
- if (!opts.query) {
3505
- throw new NhnCloudCliError(`--query \uC635\uC158\uC740 \uD544\uC218\uC785\uB2C8\uB2E4. \uC608: --query 'logType:"NORMAL"'`, EXIT_PARAM_ERROR);
3506
- }
3507
- if (!opts.from) {
3508
- throw new NhnCloudCliError("--from \uC635\uC158\uC740 \uD544\uC218\uC785\uB2C8\uB2E4. \uC608: --from 1h", EXIT_PARAM_ERROR);
3509
- }
3510
- if (!opts.to) {
3511
- throw new NhnCloudCliError("--to \uC635\uC158\uC740 \uD544\uC218\uC785\uB2C8\uB2E4. \uC608: --to now", EXIT_PARAM_ERROR);
3512
- }
3513
- if (!opts.output) {
3514
- throw new NhnCloudCliError("--output \uC635\uC158\uC740 \uD544\uC218\uC785\uB2C8\uB2E4. \uC608: --output logs.jsonl", EXIT_PARAM_ERROR);
3515
- }
3516
- const format = opts.format ?? "jsonl";
3517
- if (format !== "jsonl" && format !== "json") {
3518
- throw new NhnCloudCliError("--format \uC740 jsonl \uB610\uB294 json \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.", EXIT_PARAM_ERROR);
3519
- }
3520
- if (opts.size !== void 0) {
3521
- if (!/^[1-9]\d*$/.test(opts.size)) {
3522
- throw new NhnCloudCliError("--size \uB294 \uC591\uC758 \uC815\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4 (\uD638\uD658 \uBC94\uC704 10~100).", EXIT_PARAM_ERROR);
3625
+ function createExportCommand(finalizeOps) {
3626
+ return new import_commander7.Command("export").description("Log & Crash \uB85C\uADF8\uB97C scroll \uB85C \uC804\uCCB4 \uCD94\uCD9C\uD574 \uD30C\uC77C\uB85C \uC800\uC7A5 (\uB300\uB7C9 \uCD94\uCD9C)").option("--query <lucene>", "Lucene \uC9C8\uC758 \uBB38\uC790\uC5F4 (\uD544\uC218)").option("--from <time>", "\uAC80\uC0C9 \uC2DC\uC791: \uCD08\xB7\uC2DC\uAC04\uB300 \uD3EC\uD568 ISO8601 \uB610\uB294 \uC0C1\uB300\uC2DC\uAC04 (1h/30m/2d/now) (\uD544\uC218)").option("--to <time>", "\uAC80\uC0C9 \uB05D: \uCD08\xB7\uC2DC\uAC04\uB300 \uD3EC\uD568 ISO8601 \uB610\uB294 \uC0C1\uB300\uC2DC\uAC04 (\uD544\uC218)").option("--output <file>", "\uCD9C\uB825 \uD30C\uC77C \uACBD\uB85C (\uD544\uC218)").option("--format <fmt>", "\uCD9C\uB825 \uD615\uC2DD: jsonl(\uAE30\uBCF8, \uD55C \uC904\uB2F9 \uD55C \uB85C\uADF8) \uB610\uB294 json(\uBC30\uC5F4)", "jsonl").option("--size <n>", "\uD3D0\uAE30 \uC608\uC815: Search v3\uC5D0\uC11C\uB294 \uBB34\uC2DC\uB428 (\uD638\uD658 \uAC80\uC99D \uBC94\uC704 10~100)").option("--force", "\uCD9C\uB825 \uD30C\uC77C\uC774 \uC788\uC73C\uBA74 \uB36E\uC5B4\uC4F4\uB2E4").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
3627
+ const opts = cmd.optsWithGlobals();
3628
+ if (!opts.query) {
3629
+ throw new NhnCloudCliError(`--query \uC635\uC158\uC740 \uD544\uC218\uC785\uB2C8\uB2E4. \uC608: --query 'logType:"NORMAL"'`, EXIT_PARAM_ERROR);
3523
3630
  }
3524
- const size = parseInt(opts.size, 10);
3525
- if (size < 10 || size > 100) {
3526
- throw new NhnCloudCliError("--size \uB294 10~100 \uC0AC\uC774\uC5EC\uC57C \uD569\uB2C8\uB2E4.", EXIT_PARAM_ERROR);
3631
+ if (!opts.from) {
3632
+ throw new NhnCloudCliError("--from \uC635\uC158\uC740 \uD544\uC218\uC785\uB2C8\uB2E4. \uC608: --from 1h", EXIT_PARAM_ERROR);
3527
3633
  }
3528
- process.stderr.write(
3529
- "\uACBD\uACE0: logncrash export --size\uB294 \uD3D0\uAE30 \uC608\uC815\uC774\uBA70 Search v3 \uC694\uCCAD\uC5D0\uC11C\uB294 \uBB34\uC2DC\uB429\uB2C8\uB2E4.\n"
3530
- );
3531
- }
3532
- const fromIso = resolveTime(opts.from);
3533
- const toIso = resolveTime(opts.to);
3534
- assertSearchRange(fromIso, toIso);
3535
- assertWritable(opts.output, opts.force ?? false);
3536
- const client = await resolveLogncrashClient(opts.profile);
3537
- const tmp = opts.output + "." + (0, import_node_crypto4.randomBytes)(4).toString("hex") + ".tmp";
3538
- let stream = (0, import_node_fs4.createWriteStream)(tmp, { encoding: "utf-8" });
3539
- const spinner = startSpinner("\uB85C\uADF8 \uCD94\uCD9C \uC911...");
3540
- let count = 0;
3541
- let total = 0;
3542
- let hasUnqueriedWindows = false;
3543
- let first = true;
3544
- let bytePosition = 0;
3545
- let resumeFrom = "";
3546
- const write = (chunk) => {
3547
- stream.write(chunk);
3548
- bytePosition += Buffer.byteLength(chunk, "utf-8");
3549
- };
3550
- const writePage = (data) => {
3551
- for (const log of data) {
3552
- if (count >= MAX_TOTAL) break;
3553
- const json = JSON.stringify(log);
3554
- write(format === "json" ? first ? json : "," + json : json + "\n");
3555
- first = false;
3556
- count++;
3634
+ if (!opts.to) {
3635
+ throw new NhnCloudCliError("--to \uC635\uC158\uC740 \uD544\uC218\uC785\uB2C8\uB2E4. \uC608: --to now", EXIT_PARAM_ERROR);
3557
3636
  }
3558
- };
3559
- try {
3560
- if (format === "json") write("[");
3561
- let pendingWindows = [{ from: fromIso, to: toIso }];
3562
- let completedWindows = 0;
3563
- const progressText = () => {
3564
- const totalWindows = completedWindows + pendingWindows.length + 1;
3565
- const windowPart = totalWindows > 1 ? `\uCC3D ${completedWindows + 1}/${totalWindows} ` : "";
3566
- return `\uB85C\uADF8 \uCD94\uCD9C \uC911... ${windowPart}${count}/${total}`;
3637
+ if (!opts.output) {
3638
+ throw new NhnCloudCliError("--output \uC635\uC158\uC740 \uD544\uC218\uC785\uB2C8\uB2E4. \uC608: --output logs.jsonl", EXIT_PARAM_ERROR);
3639
+ }
3640
+ const format = opts.format ?? "jsonl";
3641
+ if (format !== "jsonl" && format !== "json") {
3642
+ throw new NhnCloudCliError("--format \uC740 jsonl \uB610\uB294 json \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.", EXIT_PARAM_ERROR);
3643
+ }
3644
+ if (opts.size !== void 0) {
3645
+ if (!/^[1-9]\d*$/.test(opts.size)) {
3646
+ throw new NhnCloudCliError("--size \uB294 \uC591\uC758 \uC815\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4 (\uD638\uD658 \uBC94\uC704 10~100).", EXIT_PARAM_ERROR);
3647
+ }
3648
+ const size = parseInt(opts.size, 10);
3649
+ if (size < 10 || size > 100) {
3650
+ throw new NhnCloudCliError("--size \uB294 10~100 \uC0AC\uC774\uC5EC\uC57C \uD569\uB2C8\uB2E4.", EXIT_PARAM_ERROR);
3651
+ }
3652
+ process.stderr.write(
3653
+ "\uACBD\uACE0: logncrash export --size\uB294 \uD3D0\uAE30 \uC608\uC815\uC774\uBA70 Search v3 \uC694\uCCAD\uC5D0\uC11C\uB294 \uBB34\uC2DC\uB429\uB2C8\uB2E4.\n"
3654
+ );
3655
+ }
3656
+ const fromIso = resolveTime(opts.from);
3657
+ const toIso = resolveTime(opts.to);
3658
+ assertSearchRange(fromIso, toIso);
3659
+ assertWritable(opts.output, opts.force ?? false);
3660
+ const client = await resolveLogncrashClient(opts.profile);
3661
+ const id = (0, import_node_crypto4.randomUUID)();
3662
+ const tmp = `${opts.output}.${id}.tmp`;
3663
+ let stream = (0, import_node_fs4.createWriteStream)(tmp, { encoding: "utf-8" });
3664
+ const spinner = startSpinner("\uB85C\uADF8 \uCD94\uCD9C \uC911...");
3665
+ let count = 0;
3666
+ let total = 0;
3667
+ let hasUnqueriedWindows = false;
3668
+ let first = true;
3669
+ let bytePosition = 0;
3670
+ let resumeFrom = "";
3671
+ let failureOrigin = "preflight";
3672
+ const write = (chunk) => {
3673
+ stream.write(chunk);
3674
+ bytePosition += Buffer.byteLength(chunk, "utf-8");
3567
3675
  };
3568
- while (pendingWindows.length > 0) {
3569
- const window = pendingWindows.shift();
3570
- if (!window) break;
3571
- resumeFrom = window.from;
3572
- const checkpoint = {
3573
- bytesWritten: bytePosition,
3574
- count,
3575
- first,
3576
- total
3676
+ const writePage = (data) => {
3677
+ for (const log of data) {
3678
+ if (count >= MAX_TOTAL) break;
3679
+ const json = JSON.stringify(log);
3680
+ write(format === "json" ? first ? json : "," + json : json + "\n");
3681
+ first = false;
3682
+ count++;
3683
+ }
3684
+ };
3685
+ try {
3686
+ if (format === "json") write("[");
3687
+ let pendingWindows = [{ from: fromIso, to: toIso }];
3688
+ let completedWindows = 0;
3689
+ const progressText = () => {
3690
+ const totalWindows = completedWindows + pendingWindows.length + 1;
3691
+ const windowPart = totalWindows > 1 ? `\uCC3D ${completedWindows + 1}/${totalWindows} ` : "";
3692
+ return `\uB85C\uADF8 \uCD94\uCD9C \uC911... ${windowPart}${count}/${total}`;
3577
3693
  };
3578
- try {
3579
- let res = await client.scrollStart({
3580
- query: opts.query,
3581
- from: window.from,
3582
- to: window.to
3583
- });
3584
- total += res.totalItems;
3585
- writePage(res.data);
3586
- spinner.text = progressText();
3587
- while (res.data.length > 0 && res.scrollKey && count < Math.min(total, MAX_TOTAL)) {
3588
- res = await scrollNextWithHint(client, res.scrollKey);
3694
+ while (pendingWindows.length > 0) {
3695
+ const window = pendingWindows.shift();
3696
+ if (!window) break;
3697
+ resumeFrom = window.from;
3698
+ const checkpoint = {
3699
+ bytesWritten: bytePosition,
3700
+ count,
3701
+ first,
3702
+ total
3703
+ };
3704
+ try {
3705
+ failureOrigin = "preflight";
3706
+ await preflightLogncrashSearchToken(client);
3707
+ failureOrigin = "search";
3708
+ let res = await client.scrollStart({
3709
+ query: opts.query,
3710
+ from: window.from,
3711
+ to: window.to
3712
+ });
3713
+ total += res.totalItems;
3589
3714
  writePage(res.data);
3590
3715
  spinner.text = progressText();
3716
+ while (res.data.length > 0 && res.scrollKey && count < Math.min(total, MAX_TOTAL)) {
3717
+ failureOrigin = "preflight";
3718
+ await preflightLogncrashSearchToken(client);
3719
+ failureOrigin = "search";
3720
+ res = await scrollNextWithHint(client, res.scrollKey);
3721
+ writePage(res.data);
3722
+ spinner.text = progressText();
3723
+ }
3724
+ completedWindows++;
3725
+ if (count >= MAX_TOTAL && pendingWindows.length > 0) {
3726
+ hasUnqueriedWindows = true;
3727
+ break;
3728
+ }
3729
+ } catch (err) {
3730
+ if (failureOrigin !== "search" || !(err instanceof LogncrashServerError)) throw err;
3731
+ await endAndClose(stream);
3732
+ await (0, import_promises5.truncate)(tmp, checkpoint.bytesWritten);
3733
+ stream = (0, import_node_fs4.createWriteStream)(tmp, { encoding: "utf-8", flags: "a" });
3734
+ bytePosition = checkpoint.bytesWritten;
3735
+ count = checkpoint.count;
3736
+ first = checkpoint.first;
3737
+ total = checkpoint.total;
3738
+ const currentWindowMs = new Date(window.to).getTime() - new Date(window.from).getTime();
3739
+ const smallerWindowMs = Math.ceil(currentWindowMs / 2);
3740
+ if (smallerWindowMs < MIN_SPLIT_WINDOW_MS) throw err;
3741
+ pendingWindows = splitTimeRange(window.from, toIso, smallerWindowMs);
3591
3742
  }
3592
- completedWindows++;
3593
- if (count >= MAX_TOTAL && pendingWindows.length > 0) {
3594
- hasUnqueriedWindows = true;
3595
- break;
3743
+ }
3744
+ await endAndClose(stream);
3745
+ } catch (err) {
3746
+ stopSpinner(false);
3747
+ const failure = failureOrigin === "search" && isRateLimitError(err) ? withRateLimitHint(err) : err;
3748
+ await new Promise((resolve) => {
3749
+ if (stream.closed) {
3750
+ resolve();
3751
+ return;
3596
3752
  }
3597
- } catch (err) {
3598
- if (!(err instanceof LogncrashServerError)) throw err;
3599
- await endAndClose(stream);
3600
- await (0, import_promises5.truncate)(tmp, checkpoint.bytesWritten);
3601
- stream = (0, import_node_fs4.createWriteStream)(tmp, { encoding: "utf-8", flags: "a" });
3602
- bytePosition = checkpoint.bytesWritten;
3603
- count = checkpoint.count;
3604
- first = checkpoint.first;
3605
- total = checkpoint.total;
3606
- const currentWindowMs = new Date(window.to).getTime() - new Date(window.from).getTime();
3607
- const smallerWindowMs = Math.ceil(currentWindowMs / 2);
3608
- if (smallerWindowMs < MIN_SPLIT_WINDOW_MS) throw err;
3609
- pendingWindows = splitTimeRange(window.from, toIso, smallerWindowMs);
3753
+ stream.once("close", () => resolve());
3754
+ stream.once("error", () => resolve());
3755
+ if (stream.destroyed) return;
3756
+ stream.end();
3757
+ });
3758
+ if (count === 0) {
3759
+ await (0, import_promises5.rm)(tmp, { force: true }).catch(() => {
3760
+ });
3761
+ throw failure;
3610
3762
  }
3611
- }
3612
- await endAndClose(stream);
3613
- if (format === "json") await (0, import_promises5.appendFile)(tmp, "]\n");
3614
- } catch (err) {
3615
- stopSpinner(false);
3616
- const failure = isRateLimitError(err) ? withRateLimitHint(err) : err;
3617
- await new Promise((resolve) => {
3618
- if (stream.closed) {
3619
- resolve();
3620
- return;
3763
+ const partial = `${opts.output}.partial`;
3764
+ try {
3765
+ if (format === "json") await (0, import_promises5.appendFile)(tmp, "]\n");
3766
+ await (0, import_promises5.rename)(tmp, partial);
3767
+ } catch {
3768
+ process.stderr.write(
3769
+ `\uACBD\uACE0: \uBD80\uBD84 \uACB0\uACFC\uB97C ${partial} \uC5D0 \uB0A8\uAE30\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uC784\uC2DC \uD30C\uC77C: ${tmp}
3770
+ `
3771
+ );
3772
+ throw failure;
3621
3773
  }
3622
- stream.once("close", () => resolve());
3623
- stream.once("error", () => resolve());
3624
- if (stream.destroyed) return;
3625
- stream.end();
3626
- });
3627
- if (count === 0) {
3628
- await (0, import_promises5.rm)(tmp, { force: true }).catch(() => {
3629
- });
3630
- throw failure;
3631
- }
3632
- const partial = `${opts.output}.partial`;
3633
- try {
3634
- if (format === "json") await (0, import_promises5.appendFile)(tmp, "]\n");
3635
- await (0, import_promises5.rename)(tmp, partial);
3636
- } catch {
3637
- process.stderr.write(
3638
- `\uACBD\uACE0: \uBD80\uBD84 \uACB0\uACFC\uB97C ${partial} \uC5D0 \uB0A8\uAE30\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uC784\uC2DC \uD30C\uC77C: ${tmp}
3774
+ process.stderr.write(`\uC548\uB0B4: \uC5EC\uAE30\uAE4C\uC9C0 \uBC1B\uC740 ${count}\uAC74\uC744 ${partial} \uC5D0 \uB0A8\uACBC\uC2B5\uB2C8\uB2E4.
3775
+ `);
3776
+ if (resumeFrom === fromIso) {
3777
+ process.stderr.write(
3778
+ `\uC548\uB0B4: \uC774\uC5B4\uBC1B\uC744 \uC9C0\uC810\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uAC19\uC740 \uBA85\uB839\uC744 \uB2E4\uC2DC \uC2E4\uD589\uD558\uBA74 ${count}\uAC74\uB3C4 \uB2E4\uC2DC \uC870\uD68C\uB429\uB2C8\uB2E4.
3639
3779
  `
3640
- );
3780
+ );
3781
+ } else {
3782
+ process.stderr.write(
3783
+ `\uC548\uB0B4: \uC774\uC5B4\uBC1B\uC73C\uB824\uBA74 --from "${resumeFrom}" --to "${toIso}" \uB85C \uB2E4\uC2DC \uC2E4\uD589\uD558\uC138\uC694. \uACBD\uACC4 \uAD6C\uAC04\uC758 \uB85C\uADF8\uAC00 \uC911\uBCF5\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
3784
+ `
3785
+ );
3786
+ }
3641
3787
  throw failure;
3642
3788
  }
3643
- process.stderr.write(`\uC548\uB0B4: \uC5EC\uAE30\uAE4C\uC9C0 \uBC1B\uC740 ${count}\uAC74\uC744 ${partial} \uC5D0 \uB0A8\uACBC\uC2B5\uB2C8\uB2E4.
3644
- `);
3645
- if (resumeFrom === fromIso) {
3646
- process.stderr.write(
3647
- `\uC548\uB0B4: \uC774\uC5B4\uBC1B\uC744 \uC9C0\uC810\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uAC19\uC740 \uBA85\uB839\uC744 \uB2E4\uC2DC \uC2E4\uD589\uD558\uBA74 ${count}\uAC74\uB3C4 \uB2E4\uC2DC \uC870\uD68C\uB429\uB2C8\uB2E4.
3789
+ const finalized = await finalizeExportFile(tmp, opts.output, id, format, finalizeOps);
3790
+ if (!finalized.ok) {
3791
+ stopSpinner(false);
3792
+ const reason = errorReason(finalized.cause);
3793
+ if (finalized.preserved) {
3794
+ const guidance = finalized.state === "complete" ? `\uC548\uB0B4: API \uC7AC\uC870\uD68C\uAC00 \uD544\uC694 \uC5C6\uB294 \uC804\uCCB4 \uACB0\uACFC\uB97C ${finalized.recoveryPath} \uC5D0 \uB0A8\uACBC\uC2B5\uB2C8\uB2E4. \uADF8\uB300\uB85C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
3795
+ ` : `\uC548\uB0B4: API \uC7AC\uC870\uD68C\uAC00 \uD544\uC694 \uC5C6\uB294 \uC804\uCCB4 \uB370\uC774\uD130\uB97C ${finalized.recoveryPath} \uC5D0 \uB0A8\uACBC\uC2B5\uB2C8\uB2E4. JSON \uBC30\uC5F4\uC758 \uB9C8\uC9C0\uB9C9 ]\uB97C \uD655\uC778\uD558\uC138\uC694.
3796
+ `;
3797
+ process.stderr.write(guidance);
3798
+ } else {
3799
+ process.stderr.write(
3800
+ `\uACBD\uACE0: \uBCF5\uAD6C \uD30C\uC77C ${finalized.recoveryPath} \uB85C \uC62E\uAE30\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uC784\uC2DC \uD30C\uC77C\uC744 \uC0AD\uC81C\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4: ${tmp}
3648
3801
  `
3649
- );
3650
- } else {
3802
+ );
3803
+ }
3804
+ const message = finalized.state === "complete" ? `\uCD9C\uB825 \uD30C\uC77C \uCD5C\uC885 \uAD50\uCCB4\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4: ${opts.output} (${reason})` : `JSON \uBC30\uC5F4\uC744 \uB9C8\uBB34\uB9AC\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4: ${opts.output} (${reason})`;
3805
+ throw new NhnCloudCliError(message, EXIT_PARAM_ERROR);
3806
+ }
3807
+ stopSpinner(true, `${count}\uAC74 \uCD94\uCD9C \uC644\uB8CC`);
3808
+ await (0, import_promises5.rm)(`${opts.output}.partial`, { force: true }).catch(() => {
3809
+ });
3810
+ if (count >= MAX_TOTAL && (total > MAX_TOTAL || hasUnqueriedWindows)) {
3811
+ const totalDescription = hasUnqueriedWindows ? `\uC870\uD68C\uD55C \uCC3D\uC5D0\uC11C ${total}\uAC74\uC744 \uD655\uC778\uD588\uACE0 \uB0A8\uC740 \uCC3D\uC744 \uC870\uD68C\uD558\uC9C0 \uC54A\uC740 \uCC44` : `\uC804\uCCB4 ${total}\uAC74 \uC911`;
3651
3812
  process.stderr.write(
3652
- `\uC548\uB0B4: \uC774\uC5B4\uBC1B\uC73C\uB824\uBA74 --from "${resumeFrom}" --to "${toIso}" \uB85C \uB2E4\uC2DC \uC2E4\uD589\uD558\uC138\uC694. \uACBD\uACC4 \uAD6C\uAC04\uC758 \uB85C\uADF8\uAC00 \uC911\uBCF5\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
3813
+ `\uACBD\uACE0: ${totalDescription} \uC0C1\uD55C ${MAX_TOTAL}\uAC74\uAE4C\uC9C0\uB9CC \uCD94\uCD9C\uD588\uC2B5\uB2C8\uB2E4. \uAC80\uC0C9 \uBC94\uC704\uB97C \uC881\uD600 \uB098\uB220 \uCD94\uCD9C\uD558\uC138\uC694.
3653
3814
  `
3654
3815
  );
3655
3816
  }
3656
- throw failure;
3817
+ process.stderr.write(`${opts.output} \uC5D0 ${count}\uAC74 \uC800\uC7A5
3818
+ `);
3819
+ });
3820
+ }
3821
+ var exportCommand = createExportCommand();
3822
+ async function finalizeExportFile(tmp, output2, id, format, ops = defaultExportFileOps) {
3823
+ if (format === "json") {
3824
+ try {
3825
+ await ops.appendFile(tmp, "]\n");
3826
+ } catch (cause) {
3827
+ return await preserveCompletedExport(tmp, output2, id, "unfinalized", cause, ops);
3828
+ }
3657
3829
  }
3658
- stopSpinner(true, `${count}\uAC74 \uCD94\uCD9C \uC644\uB8CC`);
3659
3830
  try {
3660
- await (0, import_promises5.rename)(tmp, opts.output);
3661
- } catch (err) {
3662
- await (0, import_promises5.rm)(tmp, { force: true }).catch(() => {
3663
- });
3664
- const reason = err.code ?? (err instanceof Error ? err.message : String(err));
3665
- throw new NhnCloudCliError(`\uCD9C\uB825 \uD30C\uC77C\uC744 \uC4F8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: ${opts.output} (${reason})`, EXIT_PARAM_ERROR);
3831
+ await ops.rename(tmp, output2);
3832
+ return { ok: true };
3833
+ } catch (cause) {
3834
+ return await preserveCompletedExport(tmp, output2, id, "complete", cause, ops);
3666
3835
  }
3667
- await (0, import_promises5.rm)(`${opts.output}.partial`, { force: true }).catch(() => {
3668
- });
3669
- if (count >= MAX_TOTAL && (total > MAX_TOTAL || hasUnqueriedWindows)) {
3670
- const totalDescription = hasUnqueriedWindows ? `\uC870\uD68C\uD55C \uCC3D\uC5D0\uC11C ${total}\uAC74\uC744 \uD655\uC778\uD588\uACE0 \uB0A8\uC740 \uCC3D\uC744 \uC870\uD68C\uD558\uC9C0 \uC54A\uC740 \uCC44` : `\uC804\uCCB4 ${total}\uAC74 \uC911`;
3671
- process.stderr.write(
3672
- `\uACBD\uACE0: ${totalDescription} \uC0C1\uD55C ${MAX_TOTAL}\uAC74\uAE4C\uC9C0\uB9CC \uCD94\uCD9C\uD588\uC2B5\uB2C8\uB2E4. \uAC80\uC0C9 \uBC94\uC704\uB97C \uC881\uD600 \uB098\uB220 \uCD94\uCD9C\uD558\uC138\uC694.
3673
- `
3674
- );
3836
+ }
3837
+ async function preserveCompletedExport(tmp, output2, id, state, cause, ops) {
3838
+ const recoveryPath = `${output2}.${id}.${state}`;
3839
+ try {
3840
+ await ops.rename(tmp, recoveryPath);
3841
+ return { ok: false, state, cause, recoveryPath, preserved: true };
3842
+ } catch {
3843
+ return { ok: false, state, cause, recoveryPath, preserved: false };
3675
3844
  }
3676
- process.stderr.write(`${opts.output} \uC5D0 ${count}\uAC74 \uC800\uC7A5
3677
- `);
3678
- });
3845
+ }
3846
+ function errorReason(error) {
3847
+ if (error instanceof Error) {
3848
+ return error.code ?? error.message;
3849
+ }
3850
+ return String(error);
3851
+ }
3679
3852
  async function scrollNextWithHint(client, scrollKey) {
3680
3853
  try {
3681
3854
  return await client.scrollNext(scrollKey);
@@ -3699,8 +3872,37 @@ async function endAndClose(stream) {
3699
3872
  });
3700
3873
  }
3701
3874
 
3875
+ // src/commands/logncrash/available-token.ts
3876
+ var import_commander8 = require("commander");
3877
+ var availableTokenCommand = new import_commander8.Command("available-token").description("Log & Crash \uB0A8\uC740 \uC870\uD68C \uD1A0\uD070\uACFC \uCD94\uC815 \uB300\uAE30 \uC2DC\uAC04\uC744 \uD655\uC778").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
3878
+ const opts = cmd.optsWithGlobals();
3879
+ const client = await resolveLogncrashClient(opts.profile);
3880
+ startSpinner("\uC870\uD68C \uD1A0\uD070 \uD655\uC778 \uC911...");
3881
+ let status;
3882
+ try {
3883
+ const result = await client.availableToken();
3884
+ status = availableTokenStatus(result.availableToken);
3885
+ } catch (err) {
3886
+ stopSpinner(false);
3887
+ throw err;
3888
+ }
3889
+ stopSpinner(true);
3890
+ output(opts, {
3891
+ headers: ["\uD56D\uBAA9", "\uAC12"],
3892
+ rows: [
3893
+ ["\uB0A8\uC740 \uC870\uD68C \uD1A0\uD070", String(status.availableToken)],
3894
+ [
3895
+ "\uC591\uC218\uAE4C\uC9C0 \uCD94\uC815 \uB300\uAE30 \uC2DC\uAC04(\uCD08)",
3896
+ status.estimatedWaitSeconds === null ? "\uB300\uAE30 \uBD88\uD544\uC694" : String(status.estimatedWaitSeconds)
3897
+ ]
3898
+ ],
3899
+ raw: status,
3900
+ ids: [String(status.availableToken)]
3901
+ });
3902
+ });
3903
+
3702
3904
  // src/commands/deploy/run.ts
3703
- var import_commander7 = require("commander");
3905
+ var import_commander9 = require("commander");
3704
3906
 
3705
3907
  // src/services/deploy/client.ts
3706
3908
  var import_ky8 = __toESM(require("ky"));
@@ -3711,6 +3913,11 @@ function isBinaryGroup(val) {
3711
3913
  const descriptionType = typeof obj["description"];
3712
3914
  return (keyType === "number" || keyType === "string") && typeof obj["name"] === "string" && (descriptionType === "undefined" || descriptionType === "string" || obj["description"] === null);
3713
3915
  }
3916
+ function isScenario(val) {
3917
+ if (typeof val !== "object" || val === null) return false;
3918
+ const obj = val;
3919
+ return typeof obj["scenarioId"] === "number" && typeof obj["scenarioName"] === "string";
3920
+ }
3714
3921
  function isBinary(val) {
3715
3922
  if (typeof val !== "object" || val === null) return false;
3716
3923
  const obj = val;
@@ -3721,9 +3928,9 @@ function isBinary(val) {
3721
3928
  var DeployClient = class {
3722
3929
  accessToken;
3723
3930
  baseUrl;
3724
- constructor(accessToken) {
3931
+ constructor(accessToken, environment = "real") {
3725
3932
  this.accessToken = accessToken;
3726
- this.baseUrl = endpointFor("deploy");
3933
+ this.baseUrl = endpointFor("deploy", environment);
3727
3934
  }
3728
3935
  authHeaders() {
3729
3936
  return {
@@ -3795,6 +4002,24 @@ var DeployClient = class {
3795
4002
  throw toNhnCloudCliError(err);
3796
4003
  }
3797
4004
  }
4005
+ /** 공공망과 일반망 Deploy v2.1의 서버 그룹 시나리오 목록을 조회한다. */
4006
+ async scenarios(appKey, artifactId, serverGroupId) {
4007
+ const url = `${this.baseUrl}/api/v2.1/projects/${encodeURIComponent(appKey)}/artifacts/${encodeURIComponent(artifactId)}/server-groups/${encodeURIComponent(serverGroupId)}/scenarios`;
4008
+ try {
4009
+ const res = await import_ky8.default.get(url, {
4010
+ headers: this.authHeaders(),
4011
+ retry: 0,
4012
+ timeout: DEFAULT_TIMEOUT_MS
4013
+ }).json();
4014
+ const body = unwrap(res);
4015
+ if (!Array.isArray(body.scenarios) || !body.scenarios.every(isScenario)) {
4016
+ throw new NhnCloudCliError("scenarios \uC751\uB2F5 \uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 \u2014 scenarios \uBC30\uC5F4\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.", EXIT_API_ERROR);
4017
+ }
4018
+ return body.scenarios;
4019
+ } catch (err) {
4020
+ throw toNhnCloudCliError(err);
4021
+ }
4022
+ }
3798
4023
  /**
3799
4024
  * 배포 이력을 조회한다.
3800
4025
  */
@@ -3938,29 +4163,29 @@ var DeployClient = class {
3938
4163
  }
3939
4164
  };
3940
4165
 
4166
+ // src/commands/service-appkey.ts
4167
+ async function resolveServiceAppKey(service, profileName, missingMessage) {
4168
+ const credential = await getOptionalServiceCredential(service, profileName);
4169
+ if (!credential?.appkey) {
4170
+ throw new NhnCloudCliError(missingMessage, EXIT_CONFIG_ERROR);
4171
+ }
4172
+ return credential.appkey;
4173
+ }
4174
+
3941
4175
  // src/commands/deploy/helpers.ts
3942
4176
  async function createDeployClient(profileOpt) {
3943
4177
  const profileName = await resolveProfileName(profileOpt);
3944
4178
  const uak = await getUserAccessKey(profileName);
3945
- const accessToken = await getAccessToken(profileName, uak.id, uak.secret);
3946
- return { client: new DeployClient(accessToken), profileName };
4179
+ const environment = await getProfileEnvironment(profileName);
4180
+ const accessToken = await getAccessToken(profileName, uak.id, uak.secret, false, environment);
4181
+ return { client: new DeployClient(accessToken, environment), profileName };
3947
4182
  }
3948
4183
  async function resolveDeployAppKey(profileName) {
3949
- let cred;
3950
- try {
3951
- cred = await getServiceCredential("deploy", profileName);
3952
- } catch (err) {
3953
- if (!(err instanceof NhnCloudCliError) || err.exitCode !== EXIT_CONFIG_ERROR) {
3954
- throw err;
3955
- }
3956
- }
3957
- if (!cred?.appkey) {
3958
- throw new NhnCloudCliError(
3959
- "Deploy appKey \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.\nnhncloud configure --deploy-appkey <key> \uB97C \uC2E4\uD589\uD574 \uC124\uC815\uD558\uC138\uC694.",
3960
- EXIT_CONFIG_ERROR
3961
- );
3962
- }
3963
- return cred.appkey;
4184
+ return resolveServiceAppKey(
4185
+ "deploy",
4186
+ profileName,
4187
+ "Deploy appKey \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.\nnhncloud configure --deploy-appkey <key> \uB97C \uC2E4\uD589\uD574 \uC124\uC815\uD558\uC138\uC694."
4188
+ );
3964
4189
  }
3965
4190
  function requireCoordinate(value, flag) {
3966
4191
  if (!value) {
@@ -3970,7 +4195,7 @@ function requireCoordinate(value, flag) {
3970
4195
  }
3971
4196
 
3972
4197
  // src/commands/deploy/run.ts
3973
- var runCommand = new import_commander7.Command("run").description("\uBC30\uD3EC\uB97C \uC2E4\uD589\uD55C\uB2E4").option("--artifact-id <id>", "\uBC30\uD3EC\uD560 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--server-group-id <id>", "\uBC30\uD3EC \uB300\uC0C1 \uC11C\uBC84\uADF8\uB8F9 ID (server-groups \uB85C \uD655\uC778)").option("--scenario-ids <csv>", "\uC2E4\uD589\uD560 \uC2DC\uB098\uB9AC\uC624 ID \uBAA9\uB85D (\uC27C\uD45C \uAD6C\uBD84)").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 (_opts, cmd) => {
4198
+ var runCommand = new import_commander9.Command("run").description("\uBC30\uD3EC\uB97C \uC2E4\uD589\uD55C\uB2E4").option("--artifact-id <id>", "\uBC30\uD3EC\uD560 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--server-group-id <id>", "\uBC30\uD3EC \uB300\uC0C1 \uC11C\uBC84\uADF8\uB8F9 ID (server-groups \uB85C \uD655\uC778)").option("--scenario-ids <csv>", "\uC2E4\uD589\uD560 \uC2DC\uB098\uB9AC\uC624 ID \uBAA9\uB85D (\uC27C\uD45C \uAD6C\uBD84)").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 (_opts, cmd) => {
3974
4199
  const opts = cmd.optsWithGlobals();
3975
4200
  const concurrentNum = parsePositiveIntegerOption(opts.concurrent ?? "1", "--concurrent");
3976
4201
  const artifactId = requireCoordinate(opts.artifactId, "--artifact-id");
@@ -4006,8 +4231,8 @@ var runCommand = new import_commander7.Command("run").description("\uBC30\uD3EC\
4006
4231
  });
4007
4232
 
4008
4233
  // src/commands/deploy/artifacts.ts
4009
- var import_commander8 = require("commander");
4010
- var artifactsCommand = new import_commander8.Command("artifacts").description("\uC544\uD2F0\uD329\uD2B8 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4234
+ var import_commander10 = require("commander");
4235
+ var artifactsCommand = new import_commander10.Command("artifacts").description("\uC544\uD2F0\uD329\uD2B8 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4011
4236
  const opts = cmd.optsWithGlobals();
4012
4237
  const { client, profileName } = await createDeployClient(opts.profile);
4013
4238
  const appKey = await resolveDeployAppKey(profileName);
@@ -4036,8 +4261,8 @@ var artifactsCommand = new import_commander8.Command("artifacts").description("\
4036
4261
  });
4037
4262
 
4038
4263
  // src/commands/deploy/server-groups.ts
4039
- var import_commander9 = require("commander");
4040
- var serverGroupsCommand = new import_commander9.Command("server-groups").description("\uC11C\uBC84\uADF8\uB8F9 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--artifact-id <id>", "\uC870\uD68C\uD560 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4264
+ var import_commander11 = require("commander");
4265
+ var serverGroupsCommand = new import_commander11.Command("server-groups").description("\uC11C\uBC84\uADF8\uB8F9 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--artifact-id <id>", "\uC870\uD68C\uD560 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4041
4266
  const opts = cmd.optsWithGlobals();
4042
4267
  const artifactId = requireCoordinate(opts.artifactId, "--artifact-id");
4043
4268
  const { client, profileName } = await createDeployClient(opts.profile);
@@ -4059,9 +4284,34 @@ var serverGroupsCommand = new import_commander9.Command("server-groups").descrip
4059
4284
  });
4060
4285
  });
4061
4286
 
4287
+ // src/commands/deploy/scenarios.ts
4288
+ var import_commander12 = require("commander");
4289
+ var scenariosCommand = new import_commander12.Command("scenarios").description("\uC11C\uBC84\uADF8\uB8F9 \uC2DC\uB098\uB9AC\uC624 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--artifact-id <id>", "\uC544\uD2F0\uD329\uD2B8 ID").option("--server-group-id <id>", "\uC11C\uBC84\uADF8\uB8F9 ID").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4290
+ const opts = cmd.optsWithGlobals();
4291
+ const artifactId = requireCoordinate(opts.artifactId, "--artifact-id");
4292
+ const serverGroupId = requireCoordinate(opts.serverGroupId, "--server-group-id");
4293
+ const { client, profileName } = await createDeployClient(opts.profile);
4294
+ const appKey = await resolveDeployAppKey(profileName);
4295
+ startSpinner("\uC2DC\uB098\uB9AC\uC624 \uBAA9\uB85D \uC870\uD68C \uC911...");
4296
+ let scenarios;
4297
+ try {
4298
+ scenarios = await client.scenarios(appKey, artifactId, serverGroupId);
4299
+ } catch (err) {
4300
+ stopSpinner(false);
4301
+ throw err;
4302
+ }
4303
+ stopSpinner(true);
4304
+ output(opts, {
4305
+ headers: ["scenarioId", "scenarioName"],
4306
+ rows: scenarios.map((scenario) => [String(scenario.scenarioId), scenario.scenarioName]),
4307
+ raw: scenarios,
4308
+ ids: scenarios.map((scenario) => String(scenario.scenarioId))
4309
+ });
4310
+ });
4311
+
4062
4312
  // src/commands/deploy/histories.ts
4063
- var import_commander10 = require("commander");
4064
- var historiesCommand = new import_commander10.Command("histories").description("\uBC30\uD3EC \uC774\uB825\uC744 \uC870\uD68C\uD55C\uB2E4").option("--artifact-id <id>", "\uC870\uD68C\uD560 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4313
+ var import_commander13 = require("commander");
4314
+ var historiesCommand = new import_commander13.Command("histories").description("\uBC30\uD3EC \uC774\uB825\uC744 \uC870\uD68C\uD55C\uB2E4").option("--artifact-id <id>", "\uC870\uD68C\uD560 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4065
4315
  const opts = cmd.optsWithGlobals();
4066
4316
  const artifactId = requireCoordinate(opts.artifactId, "--artifact-id");
4067
4317
  const { client, profileName } = await createDeployClient(opts.profile);
@@ -4084,8 +4334,8 @@ var historiesCommand = new import_commander10.Command("histories").description("
4084
4334
  });
4085
4335
 
4086
4336
  // src/commands/deploy/binary-groups.ts
4087
- var import_commander11 = require("commander");
4088
- var binaryGroupsCommand = new import_commander11.Command("binary-groups").description("\uBC14\uC774\uB108\uB9AC \uADF8\uB8F9 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--artifact-id <id>", "\uC870\uD68C\uD560 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4337
+ var import_commander14 = require("commander");
4338
+ var binaryGroupsCommand = new import_commander14.Command("binary-groups").description("\uBC14\uC774\uB108\uB9AC \uADF8\uB8F9 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--artifact-id <id>", "\uC870\uD68C\uD560 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4089
4339
  const opts = cmd.optsWithGlobals();
4090
4340
  const artifactId = requireCoordinate(opts.artifactId, "--artifact-id");
4091
4341
  const { client, profileName } = await createDeployClient(opts.profile);
@@ -4116,7 +4366,7 @@ var binaryGroupsCommand = new import_commander11.Command("binary-groups").descri
4116
4366
  });
4117
4367
 
4118
4368
  // src/commands/deploy/binaries.ts
4119
- var import_commander12 = require("commander");
4369
+ var import_commander15 = require("commander");
4120
4370
  function parsePositiveInt(value, flag) {
4121
4371
  if (value === void 0) return void 0;
4122
4372
  if (!/^[1-9]\d*$/.test(value)) {
@@ -4127,7 +4377,7 @@ function parsePositiveInt(value, flag) {
4127
4377
  }
4128
4378
  return Number(value);
4129
4379
  }
4130
- var binariesCommand = new import_commander12.Command("binaries").description("\uD2B9\uC815 \uBC14\uC774\uB108\uB9AC \uADF8\uB8F9\uC758 \uBC14\uC774\uB108\uB9AC \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").requiredOption("--binary-group <key>", "\uC870\uD68C\uD560 \uBC14\uC774\uB108\uB9AC \uADF8\uB8F9 key (binary-groups \uB85C \uD655\uC778)").option("--page-num <n>", "\uD398\uC774\uC9C0 \uBC88\uD638 (1 \uC774\uC0C1)").option("--page-size <n>", "\uD398\uC774\uC9C0 \uD06C\uAE30 (1 \uC774\uC0C1)").option("--sort-key <k>", "\uC815\uB82C \uAE30\uC900 (\uC608: UPLOAD_DATE)").option("--sort-direction <d>", "\uC815\uB82C \uBC29\uD5A5 (\uC608: DESC)").option("--artifact-id <id>", "\uC870\uD68C\uD560 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4380
+ var binariesCommand = new import_commander15.Command("binaries").description("\uD2B9\uC815 \uBC14\uC774\uB108\uB9AC \uADF8\uB8F9\uC758 \uBC14\uC774\uB108\uB9AC \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").requiredOption("--binary-group <key>", "\uC870\uD68C\uD560 \uBC14\uC774\uB108\uB9AC \uADF8\uB8F9 key (binary-groups \uB85C \uD655\uC778)").option("--page-num <n>", "\uD398\uC774\uC9C0 \uBC88\uD638 (1 \uC774\uC0C1)").option("--page-size <n>", "\uD398\uC774\uC9C0 \uD06C\uAE30 (1 \uC774\uC0C1)").option("--sort-key <k>", "\uC815\uB82C \uAE30\uC900 (\uC608: UPLOAD_DATE)").option("--sort-direction <d>", "\uC815\uB82C \uBC29\uD5A5 (\uC608: DESC)").option("--artifact-id <id>", "\uC870\uD68C\uD560 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4131
4381
  const opts = cmd.optsWithGlobals();
4132
4382
  const binaryGroupKey = parsePositiveInt(opts.binaryGroup, "--binary-group");
4133
4383
  if (binaryGroupKey === void 0) {
@@ -4171,7 +4421,7 @@ var binariesCommand = new import_commander12.Command("binaries").description("\u
4171
4421
  });
4172
4422
 
4173
4423
  // src/commands/deploy/upload.ts
4174
- var import_commander13 = require("commander");
4424
+ var import_commander16 = require("commander");
4175
4425
  var import_node_fs5 = require("fs");
4176
4426
  var import_node_path7 = require("path");
4177
4427
  var MAX_UPLOAD_BYTES = 512 * 1024 * 1024;
@@ -4185,7 +4435,7 @@ function parsePositiveInt2(value, flag) {
4185
4435
  }
4186
4436
  return Number(value);
4187
4437
  }
4188
- var uploadCommand = new import_commander13.Command("upload").description("\uB85C\uCEEC \uD30C\uC77C\uC744 \uBC14\uC774\uB108\uB9AC \uADF8\uB8F9\uC5D0 \uC5C5\uB85C\uB4DC\uD55C\uB2E4").requiredOption("--file <path>", "\uC5C5\uB85C\uB4DC\uD560 \uD30C\uC77C \uACBD\uB85C").requiredOption("--binary-group <key>", "\uC5C5\uB85C\uB4DC \uB300\uC0C1 \uBC14\uC774\uB108\uB9AC \uADF8\uB8F9 key (binary-groups \uB85C \uD655\uC778)").option("--application-type <type>", "applicationType (\uC608: server)", "server").option("--description <text>", "\uBC14\uC774\uB108\uB9AC \uC124\uBA85").option("--artifact-id <id>", "\uC5C5\uB85C\uB4DC \uB300\uC0C1 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4438
+ var uploadCommand = new import_commander16.Command("upload").description("\uB85C\uCEEC \uD30C\uC77C\uC744 \uBC14\uC774\uB108\uB9AC \uADF8\uB8F9\uC5D0 \uC5C5\uB85C\uB4DC\uD55C\uB2E4").requiredOption("--file <path>", "\uC5C5\uB85C\uB4DC\uD560 \uD30C\uC77C \uACBD\uB85C").requiredOption("--binary-group <key>", "\uC5C5\uB85C\uB4DC \uB300\uC0C1 \uBC14\uC774\uB108\uB9AC \uADF8\uB8F9 key (binary-groups \uB85C \uD655\uC778)").option("--application-type <type>", "applicationType (\uC608: server)", "server").option("--description <text>", "\uBC14\uC774\uB108\uB9AC \uC124\uBA85").option("--artifact-id <id>", "\uC5C5\uB85C\uB4DC \uB300\uC0C1 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4189
4439
  const opts = cmd.optsWithGlobals();
4190
4440
  const binaryGroupKey = parsePositiveInt2(opts.binaryGroup, "--binary-group");
4191
4441
  if (binaryGroupKey === void 0) {
@@ -4246,7 +4496,7 @@ var uploadCommand = new import_commander13.Command("upload").description("\uB85C
4246
4496
  });
4247
4497
 
4248
4498
  // src/commands/deploy/download.ts
4249
- var import_commander14 = require("commander");
4499
+ var import_commander17 = require("commander");
4250
4500
  var import_node_fs6 = require("fs");
4251
4501
  var import_chalk4 = __toESM(require("chalk"));
4252
4502
  function parsePositiveInt3(value, flag) {
@@ -4276,7 +4526,7 @@ function assertWritable2(path5, force) {
4276
4526
  EXIT_PARAM_ERROR
4277
4527
  );
4278
4528
  }
4279
- var downloadCommand = new import_commander14.Command("download").description("\uBC14\uC774\uB108\uB9AC\uB97C \uB85C\uCEEC \uD30C\uC77C\uB85C \uB2E4\uC6B4\uB85C\uB4DC\uD55C\uB2E4").requiredOption("--binary-group <key>", "\uBC14\uC774\uB108\uB9AC \uADF8\uB8F9 key (binary-groups \uB85C \uD655\uC778)").requiredOption("--binary-key <key>", "\uB2E4\uC6B4\uB85C\uB4DC\uD560 \uBC14\uC774\uB108\uB9AC key (binaries \uB610\uB294 upload \uB85C \uD655\uC778)").requiredOption("-o, --output <file>", "\uC800\uC7A5\uD560 \uD30C\uC77C \uACBD\uB85C").option("--force", "\uB300\uC0C1 \uD30C\uC77C\uC774 \uC788\uC73C\uBA74 \uB36E\uC5B4\uC4F4\uB2E4").option("--artifact-id <id>", "\uB300\uC0C1 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4529
+ var downloadCommand = new import_commander17.Command("download").description("\uBC14\uC774\uB108\uB9AC\uB97C \uB85C\uCEEC \uD30C\uC77C\uB85C \uB2E4\uC6B4\uB85C\uB4DC\uD55C\uB2E4").requiredOption("--binary-group <key>", "\uBC14\uC774\uB108\uB9AC \uADF8\uB8F9 key (binary-groups \uB85C \uD655\uC778)").requiredOption("--binary-key <key>", "\uB2E4\uC6B4\uB85C\uB4DC\uD560 \uBC14\uC774\uB108\uB9AC key (binaries \uB610\uB294 upload \uB85C \uD655\uC778)").requiredOption("-o, --output <file>", "\uC800\uC7A5\uD560 \uD30C\uC77C \uACBD\uB85C").option("--force", "\uB300\uC0C1 \uD30C\uC77C\uC774 \uC788\uC73C\uBA74 \uB36E\uC5B4\uC4F4\uB2E4").option("--artifact-id <id>", "\uB300\uC0C1 \uC544\uD2F0\uD329\uD2B8 ID (artifacts \uB85C \uD655\uC778)").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
4280
4530
  const opts = cmd.optsWithGlobals();
4281
4531
  const binaryGroupKey = parsePositiveInt3(opts.binaryGroup, "--binary-group");
4282
4532
  const binaryKey = parsePositiveInt3(opts.binaryKey, "--binary-key");
@@ -4304,14 +4554,15 @@ var downloadCommand = new import_commander14.Command("download").description("\u
4304
4554
  });
4305
4555
 
4306
4556
  // src/commands/instance/list.ts
4307
- var import_commander15 = require("commander");
4557
+ var import_commander18 = require("commander");
4308
4558
 
4309
4559
  // src/commands/iaas.ts
4310
4560
  async function resolveIaasTokenContext(opts) {
4311
4561
  const profileName = await resolveProfileName(opts.profile);
4312
4562
  const iaas = await getIaasCredential(profileName);
4313
4563
  const effectiveIaas = opts.region ? { ...iaas, region: opts.region } : iaas;
4314
- const tokenContext = await getIaasToken(profileName, effectiveIaas);
4564
+ const environment = await getProfileEnvironment(profileName);
4565
+ const tokenContext = await getIaasToken(profileName, effectiveIaas, false, environment);
4315
4566
  return { profileName, ...tokenContext };
4316
4567
  }
4317
4568
 
@@ -4869,7 +5120,7 @@ async function resolveInstanceClient(opts) {
4869
5120
  function getIps(server) {
4870
5121
  return Object.values(server.addresses).flat().map((a) => a.addr).join(", ");
4871
5122
  }
4872
- var listCommand = new import_commander15.Command("list").description("\uC778\uC2A4\uD134\uC2A4 \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) => {
5123
+ var listCommand = new import_commander18.Command("list").description("\uC778\uC2A4\uD134\uC2A4 \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) => {
4873
5124
  const opts = cmd.optsWithGlobals();
4874
5125
  const { client } = await resolveInstanceClient(opts);
4875
5126
  startSpinner("\uC778\uC2A4\uD134\uC2A4 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -4890,7 +5141,7 @@ var listCommand = new import_commander15.Command("list").description("\uC778\uC2
4890
5141
  });
4891
5142
 
4892
5143
  // src/commands/volume/list.ts
4893
- var import_commander16 = require("commander");
5144
+ var import_commander19 = require("commander");
4894
5145
 
4895
5146
  // src/services/blockstorage/client.ts
4896
5147
  var import_ky10 = __toESM(require("ky"));
@@ -5008,7 +5259,7 @@ function parsePositiveInt4(value, flag) {
5008
5259
  }
5009
5260
  return Number(value);
5010
5261
  }
5011
- var listCommand2 = new import_commander16.Command("list").description("\uBCFC\uB968 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--sort <key:dir>", "\uC815\uB82C \uAE30\uC900 (\uC608: created_at:desc)").option("--limit <n>", "\uCD5C\uB300 \uBC18\uD658 \uAC1C\uC218").option("--offset <n>", "\uD398\uC774\uC9C0 \uC2DC\uC791 \uC624\uD504\uC14B").option("--marker <id>", "\uD398\uC774\uC9C0\uB124\uC774\uC158 \uB9C8\uCEE4 \uBCFC\uB968 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 (_opts, cmd) => {
5262
+ var listCommand2 = new import_commander19.Command("list").description("\uBCFC\uB968 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--sort <key:dir>", "\uC815\uB82C \uAE30\uC900 (\uC608: created_at:desc)").option("--limit <n>", "\uCD5C\uB300 \uBC18\uD658 \uAC1C\uC218").option("--offset <n>", "\uD398\uC774\uC9C0 \uC2DC\uC791 \uC624\uD504\uC14B").option("--marker <id>", "\uD398\uC774\uC9C0\uB124\uC774\uC158 \uB9C8\uCEE4 \uBCFC\uB968 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 (_opts, cmd) => {
5012
5263
  const opts = cmd.optsWithGlobals();
5013
5264
  const limitNum = opts.limit !== void 0 ? parsePositiveInt4(opts.limit, "--limit") : void 0;
5014
5265
  const offsetNum = opts.offset !== void 0 ? parsePositiveInt4(opts.offset, "--offset") : void 0;
@@ -5042,8 +5293,8 @@ var listCommand2 = new import_commander16.Command("list").description("\uBCFC\uB
5042
5293
  });
5043
5294
 
5044
5295
  // src/commands/volume/get.ts
5045
- var import_commander17 = require("commander");
5046
- var getCommand = new import_commander17.Command("get").description("\uB2E8\uC77C \uBCFC\uB968 \uC0C1\uD0DC\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<id>", "\uBCFC\uB968 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 (id, _opts, cmd) => {
5296
+ var import_commander20 = require("commander");
5297
+ var getCommand = new import_commander20.Command("get").description("\uB2E8\uC77C \uBCFC\uB968 \uC0C1\uD0DC\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<id>", "\uBCFC\uB968 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 (id, _opts, cmd) => {
5047
5298
  const opts = cmd.optsWithGlobals();
5048
5299
  const { client } = await resolveVolumeClient(opts);
5049
5300
  startSpinner("\uBCFC\uB968 \uC870\uD68C \uC911...");
@@ -5074,9 +5325,9 @@ var getCommand = new import_commander17.Command("get").description("\uB2E8\uC77C
5074
5325
  });
5075
5326
 
5076
5327
  // src/commands/volume/create.ts
5077
- var import_commander18 = require("commander");
5328
+ var import_commander21 = require("commander");
5078
5329
  var import_chalk5 = __toESM(require("chalk"));
5079
- var createCommand = new import_commander18.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) => {
5330
+ var createCommand = new import_commander21.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) => {
5080
5331
  const opts = cmd.optsWithGlobals();
5081
5332
  if (!/^[1-9]\d*$/.test(opts.size)) {
5082
5333
  throw new NhnCloudCliError(
@@ -5129,7 +5380,7 @@ var createCommand = new import_commander18.Command("create").description("\uBCFC
5129
5380
  });
5130
5381
 
5131
5382
  // src/commands/network/list.ts
5132
- var import_commander19 = require("commander");
5383
+ var import_commander22 = require("commander");
5133
5384
 
5134
5385
  // src/services/network/client.ts
5135
5386
  var import_ky11 = __toESM(require("ky"));
@@ -5308,7 +5559,7 @@ async function resolveNetworkClient(opts) {
5308
5559
  }
5309
5560
 
5310
5561
  // src/commands/network/list.ts
5311
- var listCommand3 = new import_commander19.Command("list").description("VPC \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").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) => {
5562
+ var listCommand3 = new import_commander22.Command("list").description("VPC \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").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) => {
5312
5563
  const opts = cmd.optsWithGlobals();
5313
5564
  const { client } = await resolveNetworkClient(opts);
5314
5565
  startSpinner("VPC \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -5329,8 +5580,8 @@ var listCommand3 = new import_commander19.Command("list").description("VPC \uBAA
5329
5580
  });
5330
5581
 
5331
5582
  // src/commands/network/subnet.ts
5332
- var import_commander20 = require("commander");
5333
- var subnetListCommand = new import_commander20.Command("list").description("\uC11C\uBE0C\uB137 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").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) => {
5583
+ var import_commander23 = require("commander");
5584
+ var subnetListCommand = new import_commander23.Command("list").description("\uC11C\uBE0C\uB137 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").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) => {
5334
5585
  const opts = cmd.optsWithGlobals();
5335
5586
  const { client } = await resolveNetworkClient(opts);
5336
5587
  startSpinner("\uC11C\uBE0C\uB137 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -5355,11 +5606,11 @@ var subnetListCommand = new import_commander20.Command("list").description("\uC1
5355
5606
  ids: subnets.map((s) => s.id)
5356
5607
  });
5357
5608
  });
5358
- var subnetCommand = new import_commander20.Command("subnet").description("\uC11C\uBE0C\uB137 \uAD00\uB828 \uBA85\uB839").addCommand(subnetListCommand);
5609
+ var subnetCommand = new import_commander23.Command("subnet").description("\uC11C\uBE0C\uB137 \uAD00\uB828 \uBA85\uB839").addCommand(subnetListCommand);
5359
5610
 
5360
5611
  // src/commands/floatingip/list.ts
5361
- var import_commander21 = require("commander");
5362
- var listCommand4 = new import_commander21.Command("list").description("Floating IP \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) => {
5612
+ var import_commander24 = require("commander");
5613
+ var listCommand4 = new import_commander24.Command("list").description("Floating IP \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) => {
5363
5614
  const opts = cmd.optsWithGlobals();
5364
5615
  const { client } = await resolveNetworkClient(opts);
5365
5616
  startSpinner("Floating IP \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -5386,9 +5637,9 @@ var listCommand4 = new import_commander21.Command("list").description("Floating
5386
5637
  });
5387
5638
 
5388
5639
  // src/commands/floatingip/create.ts
5389
- var import_commander22 = require("commander");
5640
+ var import_commander25 = require("commander");
5390
5641
  var import_chalk6 = __toESM(require("chalk"));
5391
- var createCommand2 = new import_commander22.Command("create").description("Floating IP \uB97C \uBC1C\uAE09\uD55C\uB2E4 (--network \uBBF8\uC9C0\uC815 \uC2DC \uC678\uBD80 VPC \uC790\uB3D9 \uC870\uD68C)").option("--network <id>", "\uC678\uBD80 \uB124\uD2B8\uC6CC\uD06C(VPC) id (\uBBF8\uC9C0\uC815 \uC2DC router:external=true \uC790\uB3D9 \uC870\uD68C)").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) => {
5642
+ var createCommand2 = new import_commander25.Command("create").description("Floating IP \uB97C \uBC1C\uAE09\uD55C\uB2E4 (--network \uBBF8\uC9C0\uC815 \uC2DC \uC678\uBD80 VPC \uC790\uB3D9 \uC870\uD68C)").option("--network <id>", "\uC678\uBD80 \uB124\uD2B8\uC6CC\uD06C(VPC) id (\uBBF8\uC9C0\uC815 \uC2DC router:external=true \uC790\uB3D9 \uC870\uD68C)").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) => {
5392
5643
  const opts = cmd.optsWithGlobals();
5393
5644
  const { client } = await resolveNetworkClient(opts);
5394
5645
  let networkId = opts.network;
@@ -5431,9 +5682,9 @@ var createCommand2 = new import_commander22.Command("create").description("Float
5431
5682
  });
5432
5683
 
5433
5684
  // src/commands/floatingip/delete.ts
5434
- var import_commander23 = require("commander");
5685
+ var import_commander26 = require("commander");
5435
5686
  var import_chalk7 = __toESM(require("chalk"));
5436
- var deleteCommand = new import_commander23.Command("delete").description("Floating IP \uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<id>", "Floating IP ID").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 (id, _opts, cmd) => {
5687
+ var deleteCommand = new import_commander26.Command("delete").description("Floating IP \uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<id>", "Floating IP ID").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 (id, _opts, cmd) => {
5437
5688
  const opts = cmd.optsWithGlobals();
5438
5689
  const isTTY = process.stdin.isTTY;
5439
5690
  if (!isTTY && !opts.yes) {
@@ -5467,8 +5718,8 @@ var deleteCommand = new import_commander23.Command("delete").description("Floati
5467
5718
  });
5468
5719
 
5469
5720
  // src/commands/instance/flavors.ts
5470
- var import_commander24 = require("commander");
5471
- var flavorsCommand = new import_commander24.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) => {
5721
+ var import_commander27 = require("commander");
5722
+ var flavorsCommand = new import_commander27.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) => {
5472
5723
  const opts = cmd.optsWithGlobals();
5473
5724
  const minDisk = parseNonNegativeIntegerOption(opts.minDisk, "--min-disk");
5474
5725
  const minRam = parseNonNegativeIntegerOption(opts.minRam, "--min-ram");
@@ -5511,8 +5762,8 @@ function isDetailList(flavors) {
5511
5762
  }
5512
5763
 
5513
5764
  // src/commands/instance/availability-zones.ts
5514
- var import_commander25 = require("commander");
5515
- var availabilityZonesCommand = new import_commander25.Command("availability-zones").description("\uAC00\uC6A9\uC131 \uC601\uC5ED(availability zone) \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (zoneName\xB7available)").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) => {
5765
+ var import_commander28 = require("commander");
5766
+ var availabilityZonesCommand = new import_commander28.Command("availability-zones").description("\uAC00\uC6A9\uC131 \uC601\uC5ED(availability zone) \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (zoneName\xB7available)").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) => {
5516
5767
  const opts = cmd.optsWithGlobals();
5517
5768
  const { client } = await resolveInstanceClient(opts);
5518
5769
  startSpinner("\uAC00\uC6A9\uC131 \uC601\uC5ED \uC870\uD68C \uC911...");
@@ -5533,14 +5784,14 @@ var availabilityZonesCommand = new import_commander25.Command("availability-zone
5533
5784
  });
5534
5785
 
5535
5786
  // src/commands/instance/get.ts
5536
- var import_commander26 = require("commander");
5787
+ var import_commander29 = require("commander");
5537
5788
  function getIps2(server) {
5538
5789
  return Object.values(server.addresses).flat().map((a) => a.addr).join(", ");
5539
5790
  }
5540
5791
  function getImageId(server) {
5541
5792
  return typeof server.image === "object" ? server.image.id : "";
5542
5793
  }
5543
- var getCommand2 = new import_commander26.Command("get").description("\uB2E8\uC77C \uC778\uC2A4\uD134\uC2A4 \uC0C1\uD0DC\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
5794
+ var getCommand2 = new import_commander29.Command("get").description("\uB2E8\uC77C \uC778\uC2A4\uD134\uC2A4 \uC0C1\uD0DC\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
5544
5795
  const opts = cmd.optsWithGlobals();
5545
5796
  const { client } = await resolveInstanceClient(opts);
5546
5797
  startSpinner("\uC778\uC2A4\uD134\uC2A4 \uC870\uD68C \uC911...");
@@ -5572,7 +5823,7 @@ var getCommand2 = new import_commander26.Command("get").description("\uB2E8\uC77
5572
5823
  });
5573
5824
 
5574
5825
  // src/commands/instance/create.ts
5575
- var import_commander27 = require("commander");
5826
+ var import_commander30 = require("commander");
5576
5827
  var import_node_fs7 = require("fs");
5577
5828
  var import_chalk8 = __toESM(require("chalk"));
5578
5829
  function getFirstIp(server) {
@@ -5589,7 +5840,7 @@ function getIps3(server) {
5589
5840
  function getImageId2(server) {
5590
5841
  return typeof server.image === "object" ? server.image.id : "";
5591
5842
  }
5592
- var createCommand3 = new import_commander27.Command("create").description("\uC778\uC2A4\uD134\uC2A4\uB97C \uC0DD\uC131\uD55C\uB2E4").requiredOption("--name <name>", "\uC778\uC2A4\uD134\uC2A4 \uC774\uB984").requiredOption("--flavor <id>", "flavor ID").requiredOption("--image <id>", "\uC774\uBBF8\uC9C0 ID").requiredOption("--network <uuid>", "\uB124\uD2B8\uC6CC\uD06C UUID (\uC5EC\uB7EC \uAC1C: \uBC18\uBCF5 \uC9C0\uC815)", (v, prev) => [...prev, v], []).option("--boot-volume-size <gb>", "boot-from-volume root \uBCFC\uB968 \uD06C\uAE30 (GB). GPU(g2) \uB4F1 boot-from-volume \uD544\uC218 flavor \uC5D0 \uC9C0\uC815").option("--key-name <name>", "\uD0A4\uD398\uC5B4 \uC774\uB984").option("--security-group <name>", "\uBCF4\uC548 \uADF8\uB8F9 \uC774\uB984 (\uC5EC\uB7EC \uAC1C: \uBC18\uBCF5 \uC9C0\uC815)", (v, prev) => [...prev, v], []).option("--ephemeral-disk-size <gb>", "\uC784\uC2DC \uB514\uC2A4\uD06C \uD06C\uAE30 (GB, NHN \uD655\uC7A5)").option("--protect", "\uC0AD\uC81C \uBC29\uC9C0 \uC124\uC815 (NHN \uD655\uC7A5)").option("--user-data <path>", "cloud-init user-data \uD30C\uC77C \uACBD\uB85C (base64 \uC778\uCF54\uB529\uD574 \uC8FC\uC785, \uC778\uCF54\uB529 \uD6C4 65535 \uBC14\uC774\uD2B8 \uD55C\uB3C4)").option("--wait", "ACTIVE \uC0C1\uD0DC\uAC00 \uB420 \uB54C\uAE4C\uC9C0 \uB300\uAE30").option("--timeout <sec>", "wait \uD0C0\uC784\uC544\uC6C3 (\uCD08, \uAE30\uBCF8 300)", "300").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) => {
5843
+ var createCommand3 = new import_commander30.Command("create").description("\uC778\uC2A4\uD134\uC2A4\uB97C \uC0DD\uC131\uD55C\uB2E4").requiredOption("--name <name>", "\uC778\uC2A4\uD134\uC2A4 \uC774\uB984").requiredOption("--flavor <id>", "flavor ID").requiredOption("--image <id>", "\uC774\uBBF8\uC9C0 ID").requiredOption("--network <uuid>", "\uB124\uD2B8\uC6CC\uD06C UUID (\uC5EC\uB7EC \uAC1C: \uBC18\uBCF5 \uC9C0\uC815)", (v, prev) => [...prev, v], []).option("--boot-volume-size <gb>", "boot-from-volume root \uBCFC\uB968 \uD06C\uAE30 (GB). GPU(g2) \uB4F1 boot-from-volume \uD544\uC218 flavor \uC5D0 \uC9C0\uC815").option("--key-name <name>", "\uD0A4\uD398\uC5B4 \uC774\uB984").option("--security-group <name>", "\uBCF4\uC548 \uADF8\uB8F9 \uC774\uB984 (\uC5EC\uB7EC \uAC1C: \uBC18\uBCF5 \uC9C0\uC815)", (v, prev) => [...prev, v], []).option("--ephemeral-disk-size <gb>", "\uC784\uC2DC \uB514\uC2A4\uD06C \uD06C\uAE30 (GB, NHN \uD655\uC7A5)").option("--protect", "\uC0AD\uC81C \uBC29\uC9C0 \uC124\uC815 (NHN \uD655\uC7A5)").option("--user-data <path>", "cloud-init user-data \uD30C\uC77C \uACBD\uB85C (base64 \uC778\uCF54\uB529\uD574 \uC8FC\uC785, \uC778\uCF54\uB529 \uD6C4 65535 \uBC14\uC774\uD2B8 \uD55C\uB3C4)").option("--wait", "ACTIVE \uC0C1\uD0DC\uAC00 \uB420 \uB54C\uAE4C\uC9C0 \uB300\uAE30").option("--timeout <sec>", "wait \uD0C0\uC784\uC544\uC6C3 (\uCD08, \uAE30\uBCF8 300)", "300").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) => {
5593
5844
  const opts = cmd.optsWithGlobals();
5594
5845
  const networks = opts.network ?? [];
5595
5846
  if (networks.length === 0) {
@@ -5688,9 +5939,9 @@ var createCommand3 = new import_commander27.Command("create").description("\uC77
5688
5939
  });
5689
5940
 
5690
5941
  // src/commands/instance/delete.ts
5691
- var import_commander28 = require("commander");
5942
+ var import_commander31 = require("commander");
5692
5943
  var import_chalk9 = __toESM(require("chalk"));
5693
- var deleteCommand2 = new import_commander28.Command("delete").description("\uC778\uC2A4\uD134\uC2A4\uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 ID").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 (id, _opts, cmd) => {
5944
+ var deleteCommand2 = new import_commander31.Command("delete").description("\uC778\uC2A4\uD134\uC2A4\uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 ID").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 (id, _opts, cmd) => {
5694
5945
  const opts = cmd.optsWithGlobals();
5695
5946
  const isTTY = process.stdin.isTTY;
5696
5947
  if (!isTTY && !opts.yes) {
@@ -5724,9 +5975,9 @@ var deleteCommand2 = new import_commander28.Command("delete").description("\uC77
5724
5975
  });
5725
5976
 
5726
5977
  // src/commands/instance/power.ts
5727
- var import_commander29 = require("commander");
5978
+ var import_commander32 = require("commander");
5728
5979
  var import_chalk10 = __toESM(require("chalk"));
5729
- var startCommand = new import_commander29.Command("start").description("\uC778\uC2A4\uD134\uC2A4\uB97C \uC2DC\uC791\uD55C\uB2E4 (SHUTOFF \u2192 ACTIVE)").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
5980
+ var startCommand = new import_commander32.Command("start").description("\uC778\uC2A4\uD134\uC2A4\uB97C \uC2DC\uC791\uD55C\uB2E4 (SHUTOFF \u2192 ACTIVE)").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
5730
5981
  const opts = cmd.optsWithGlobals();
5731
5982
  const { client } = await resolveInstanceClient(opts);
5732
5983
  startSpinner(`\uC778\uC2A4\uD134\uC2A4 \uC2DC\uC791 \uC911... (id: ${id})`);
@@ -5740,7 +5991,7 @@ var startCommand = new import_commander29.Command("start").description("\uC778\u
5740
5991
  process.stderr.write(import_chalk10.default.green(`\u2713 \uC778\uC2A4\uD134\uC2A4 "${id}" \uC2DC\uC791\uC744 \uC694\uCCAD\uD588\uC2B5\uB2C8\uB2E4 (\u2192 ACTIVE).
5741
5992
  `));
5742
5993
  });
5743
- var stopCommand = new import_commander29.Command("stop").description("\uC778\uC2A4\uD134\uC2A4\uB97C \uC815\uC9C0\uD55C\uB2E4 (ACTIVE/ERROR \u2192 SHUTOFF)").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
5994
+ var stopCommand = new import_commander32.Command("stop").description("\uC778\uC2A4\uD134\uC2A4\uB97C \uC815\uC9C0\uD55C\uB2E4 (ACTIVE/ERROR \u2192 SHUTOFF)").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
5744
5995
  const opts = cmd.optsWithGlobals();
5745
5996
  const { client } = await resolveInstanceClient(opts);
5746
5997
  startSpinner(`\uC778\uC2A4\uD134\uC2A4 \uC815\uC9C0 \uC911... (id: ${id})`);
@@ -5754,7 +6005,7 @@ var stopCommand = new import_commander29.Command("stop").description("\uC778\uC2
5754
6005
  process.stderr.write(import_chalk10.default.green(`\u2713 \uC778\uC2A4\uD134\uC2A4 "${id}" \uC815\uC9C0\uB97C \uC694\uCCAD\uD588\uC2B5\uB2C8\uB2E4 (\u2192 SHUTOFF).
5755
6006
  `));
5756
6007
  });
5757
- var rebootCommand = new import_commander29.Command("reboot").description("\uC778\uC2A4\uD134\uC2A4\uB97C \uC7AC\uBD80\uD305\uD55C\uB2E4 (\uAE30\uBCF8 SOFT, --hard \uB85C HARD)").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 ID").option("--hard", "HARD \uC7AC\uBD80\uD305 (\uAC15\uC81C \uC804\uC6D0 cycle, \uAE30\uBCF8\uC740 SOFT)").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 (id, _opts, cmd) => {
6008
+ var rebootCommand = new import_commander32.Command("reboot").description("\uC778\uC2A4\uD134\uC2A4\uB97C \uC7AC\uBD80\uD305\uD55C\uB2E4 (\uAE30\uBCF8 SOFT, --hard \uB85C HARD)").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 ID").option("--hard", "HARD \uC7AC\uBD80\uD305 (\uAC15\uC81C \uC804\uC6D0 cycle, \uAE30\uBCF8\uC740 SOFT)").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 (id, _opts, cmd) => {
5758
6009
  const opts = cmd.optsWithGlobals();
5759
6010
  const { client } = await resolveInstanceClient(opts);
5760
6011
  const type = opts.hard ? "HARD" : "SOFT";
@@ -5771,9 +6022,9 @@ var rebootCommand = new import_commander29.Command("reboot").description("\uC778
5771
6022
  });
5772
6023
 
5773
6024
  // src/commands/instance/resize.ts
5774
- var import_commander30 = require("commander");
6025
+ var import_commander33 = require("commander");
5775
6026
  var import_chalk11 = __toESM(require("chalk"));
5776
- var resizeCommand = new import_commander30.Command("resize").description("\uC778\uC2A4\uD134\uC2A4 \uD0C0\uC785(flavor)\uC744 \uBCC0\uACBD\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 ID").requiredOption("--flavor <id>", "\uBCC0\uACBD\uD560 flavor ID (instance flavors \uB85C \uD6C4\uBCF4 \uC870\uD68C)").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 (id, _opts, cmd) => {
6027
+ var resizeCommand = new import_commander33.Command("resize").description("\uC778\uC2A4\uD134\uC2A4 \uD0C0\uC785(flavor)\uC744 \uBCC0\uACBD\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 ID").requiredOption("--flavor <id>", "\uBCC0\uACBD\uD560 flavor ID (instance flavors \uB85C \uD6C4\uBCF4 \uC870\uD68C)").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 (id, _opts, cmd) => {
5777
6028
  const opts = cmd.optsWithGlobals();
5778
6029
  const { client } = await resolveInstanceClient(opts);
5779
6030
  startSpinner(`\uC778\uC2A4\uD134\uC2A4 \uD0C0\uC785 \uBCC0\uACBD \uC911... (id: ${id})`);
@@ -5791,7 +6042,7 @@ var resizeCommand = new import_commander30.Command("resize").description("\uC778
5791
6042
  )
5792
6043
  );
5793
6044
  });
5794
- var resizeConfirmCommand = new import_commander30.Command("resize-confirm").description("resize \uB97C \uD655\uC815\uD55C\uB2E4 (VERIFY_RESIZE \u2192 ACTIVE, \uC0C8 flavor \uB85C \uACE0\uC815)").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
6045
+ var resizeConfirmCommand = new import_commander33.Command("resize-confirm").description("resize \uB97C \uD655\uC815\uD55C\uB2E4 (VERIFY_RESIZE \u2192 ACTIVE, \uC0C8 flavor \uB85C \uACE0\uC815)").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
5795
6046
  const opts = cmd.optsWithGlobals();
5796
6047
  const { client } = await resolveInstanceClient(opts);
5797
6048
  startSpinner(`resize \uD655\uC815 \uC911... (id: ${id})`);
@@ -5805,7 +6056,7 @@ var resizeConfirmCommand = new import_commander30.Command("resize-confirm").desc
5805
6056
  process.stderr.write(import_chalk11.default.green(`\u2713 \uC778\uC2A4\uD134\uC2A4 "${id}" resize \uD655\uC815\uC744 \uC694\uCCAD\uD588\uC2B5\uB2C8\uB2E4 (\u2192 ACTIVE).
5806
6057
  `));
5807
6058
  });
5808
- var resizeRevertCommand = new import_commander30.Command("resize-revert").description("resize \uB97C \uB864\uBC31\uD55C\uB2E4 (VERIFY_RESIZE \u2192 ACTIVE, \uC774\uC804 flavor \uB85C \uBCF5\uADC0)").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
6059
+ var resizeRevertCommand = new import_commander33.Command("resize-revert").description("resize \uB97C \uB864\uBC31\uD55C\uB2E4 (VERIFY_RESIZE \u2192 ACTIVE, \uC774\uC804 flavor \uB85C \uBCF5\uADC0)").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
5809
6060
  const opts = cmd.optsWithGlobals();
5810
6061
  const { client } = await resolveInstanceClient(opts);
5811
6062
  startSpinner(`resize \uB864\uBC31 \uC911... (id: ${id})`);
@@ -5823,9 +6074,9 @@ var resizeRevertCommand = new import_commander30.Command("resize-revert").descri
5823
6074
  });
5824
6075
 
5825
6076
  // src/commands/instance/images.ts
5826
- var import_commander31 = require("commander");
6077
+ var import_commander34 = require("commander");
5827
6078
  var VISIBILITY_VALUES = ["public", "private", "shared"];
5828
- var imagesCommand = new import_commander31.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) => {
6079
+ var imagesCommand = new import_commander34.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) => {
5829
6080
  const opts = cmd.optsWithGlobals();
5830
6081
  const limit = parsePositiveIntegerOption(opts.limit, "--limit");
5831
6082
  if (opts.visibility !== void 0 && !VISIBILITY_VALUES.includes(opts.visibility)) {
@@ -5873,8 +6124,8 @@ var imagesCommand = new import_commander31.Command("images").description("\uC774
5873
6124
  });
5874
6125
 
5875
6126
  // src/commands/instance/keypairs.ts
5876
- var import_commander32 = require("commander");
5877
- var keypairsCommand = new import_commander32.Command("keypairs").description("\uD0A4\uD398\uC5B4 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (name\xB7fingerprint, \uC804\uCCB4 \uD544\uB4DC\uB294 --json)").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) => {
6127
+ var import_commander35 = require("commander");
6128
+ var keypairsCommand = new import_commander35.Command("keypairs").description("\uD0A4\uD398\uC5B4 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (name\xB7fingerprint, \uC804\uCCB4 \uD544\uB4DC\uB294 --json)").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) => {
5878
6129
  const opts = cmd.optsWithGlobals();
5879
6130
  const { client } = await resolveInstanceClient(opts);
5880
6131
  startSpinner("\uD0A4\uD398\uC5B4 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -5895,7 +6146,7 @@ var keypairsCommand = new import_commander32.Command("keypairs").description("\u
5895
6146
  });
5896
6147
 
5897
6148
  // src/commands/instance/keypair.ts
5898
- var import_commander33 = require("commander");
6149
+ var import_commander36 = require("commander");
5899
6150
  var import_node_fs8 = require("fs");
5900
6151
  var import_node_crypto5 = require("crypto");
5901
6152
  var import_chalk12 = __toESM(require("chalk"));
@@ -5938,7 +6189,7 @@ function savePrivateKey(filePath, privateKey) {
5938
6189
  );
5939
6190
  }
5940
6191
  }
5941
- var getKeypairCmd = new import_commander33.Command("get").description("\uB2E8\uC77C \uD0A4\uD398\uC5B4\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<name>", "\uD0A4\uD398\uC5B4 \uC774\uB984").option("--region <region>", "region override").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (name, _opts, cmd) => {
6192
+ var getKeypairCmd = new import_commander36.Command("get").description("\uB2E8\uC77C \uD0A4\uD398\uC5B4\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<name>", "\uD0A4\uD398\uC5B4 \uC774\uB984").option("--region <region>", "region override").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (name, _opts, cmd) => {
5942
6193
  const opts = cmd.optsWithGlobals();
5943
6194
  const { client } = await resolveInstanceClient(opts);
5944
6195
  startSpinner("\uD0A4\uD398\uC5B4 \uC870\uD68C \uC911...");
@@ -5963,7 +6214,7 @@ var getKeypairCmd = new import_commander33.Command("get").description("\uB2E8\uC
5963
6214
  ids: [kp.name]
5964
6215
  });
5965
6216
  });
5966
- var createKeypairCmd = new import_commander33.Command("create").description("\uD0A4\uD398\uC5B4\uB97C \uC0DD\uC131\uD55C\uB2E4 (--public-key \uBBF8\uC9C0\uC815 \uC2DC NHN \uC774 \uD0A4\uC30D \uC0DD\uC131 \u2014 private_key 1\uD68C\uC131)").argument("<name>", "\uD0A4\uD398\uC5B4 \uC774\uB984").option("--public-key <path|key>", "\uAE30\uC874 \uACF5\uAC1C\uD0A4 (\uD30C\uC77C \uACBD\uB85C \uB610\uB294 \uD0A4 \uBB38\uC790\uC5F4). \uC9C0\uC815 \uC2DC private_key \uBBF8\uBC18\uD658").option("-o, --output <keyfile>", "\uC0DD\uC131\uB41C private_key \uB97C \uD30C\uC77C(mode 0600)\uB85C \uC800\uC7A5").option("--region <region>", "region override").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (name, _opts, cmd) => {
6217
+ var createKeypairCmd = new import_commander36.Command("create").description("\uD0A4\uD398\uC5B4\uB97C \uC0DD\uC131\uD55C\uB2E4 (--public-key \uBBF8\uC9C0\uC815 \uC2DC NHN \uC774 \uD0A4\uC30D \uC0DD\uC131 \u2014 private_key 1\uD68C\uC131)").argument("<name>", "\uD0A4\uD398\uC5B4 \uC774\uB984").option("--public-key <path|key>", "\uAE30\uC874 \uACF5\uAC1C\uD0A4 (\uD30C\uC77C \uACBD\uB85C \uB610\uB294 \uD0A4 \uBB38\uC790\uC5F4). \uC9C0\uC815 \uC2DC private_key \uBBF8\uBC18\uD658").option("-o, --output <keyfile>", "\uC0DD\uC131\uB41C private_key \uB97C \uD30C\uC77C(mode 0600)\uB85C \uC800\uC7A5").option("--region <region>", "region override").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (name, _opts, cmd) => {
5967
6218
  const opts = cmd.optsWithGlobals();
5968
6219
  const publicKey = opts.publicKey !== void 0 ? resolvePublicKey(opts.publicKey) : void 0;
5969
6220
  if (opts.output !== void 0 && publicKey !== void 0) {
@@ -6022,7 +6273,7 @@ var createKeypairCmd = new import_commander33.Command("create").description("\uD
6022
6273
  ids: [meta.name]
6023
6274
  });
6024
6275
  });
6025
- var deleteKeypairCmd = new import_commander33.Command("delete").description("\uD0A4\uD398\uC5B4\uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<name>", "\uD0A4\uD398\uC5B4 \uC774\uB984").option("--region <region>", "region override").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (name, _opts, cmd) => {
6276
+ var deleteKeypairCmd = new import_commander36.Command("delete").description("\uD0A4\uD398\uC5B4\uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<name>", "\uD0A4\uD398\uC5B4 \uC774\uB984").option("--region <region>", "region override").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (name, _opts, cmd) => {
6026
6277
  const opts = cmd.optsWithGlobals();
6027
6278
  const { client } = await resolveInstanceClient(opts);
6028
6279
  startSpinner("\uD0A4\uD398\uC5B4 \uC0AD\uC81C \uC911...");
@@ -6036,12 +6287,12 @@ var deleteKeypairCmd = new import_commander33.Command("delete").description("\uD
6036
6287
  process.stderr.write(import_chalk12.default.green(`\u2713 \uD0A4\uD398\uC5B4 "${name}" \uAC00 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
6037
6288
  `));
6038
6289
  });
6039
- var keypairCommand = new import_commander33.Command("keypair").description("\uD0A4\uD398\uC5B4 \uB2E8\uAC74 \uAD00\uB9AC (get / create / delete)").addCommand(getKeypairCmd).addCommand(createKeypairCmd).addCommand(deleteKeypairCmd);
6290
+ var keypairCommand = new import_commander36.Command("keypair").description("\uD0A4\uD398\uC5B4 \uB2E8\uAC74 \uAD00\uB9AC (get / create / delete)").addCommand(getKeypairCmd).addCommand(createKeypairCmd).addCommand(deleteKeypairCmd);
6040
6291
 
6041
6292
  // src/commands/instance/volume.ts
6042
- var import_commander34 = require("commander");
6293
+ var import_commander37 = require("commander");
6043
6294
  var import_chalk13 = __toESM(require("chalk"));
6044
- var attachCommand = new import_commander34.Command("attach").description("\uBCFC\uB968\uC744 \uC778\uC2A4\uD134\uC2A4\uC5D0 \uC5F0\uACB0\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 ID").requiredOption("--volume <volumeId>", "\uC5F0\uACB0\uD560 \uBCFC\uB968 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 (id, _opts, cmd) => {
6295
+ var attachCommand = new import_commander37.Command("attach").description("\uBCFC\uB968\uC744 \uC778\uC2A4\uD134\uC2A4\uC5D0 \uC5F0\uACB0\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 ID").requiredOption("--volume <volumeId>", "\uC5F0\uACB0\uD560 \uBCFC\uB968 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 (id, _opts, cmd) => {
6045
6296
  const opts = cmd.optsWithGlobals();
6046
6297
  const { client } = await resolveInstanceClient(opts);
6047
6298
  startSpinner("\uBCFC\uB968 \uC5F0\uACB0 \uC911...");
@@ -6069,7 +6320,7 @@ var attachCommand = new import_commander34.Command("attach").description("\uBCFC
6069
6320
  ids: [att.id]
6070
6321
  });
6071
6322
  });
6072
- var detachCommand = new import_commander34.Command("detach").description("\uBCFC\uB968 \uC5F0\uACB0\uC744 \uD574\uC81C\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 ID").argument("<volumeId>", "\uD574\uC81C\uD560 \uBCFC\uB968 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 (id, volumeId, _opts, cmd) => {
6323
+ var detachCommand = new import_commander37.Command("detach").description("\uBCFC\uB968 \uC5F0\uACB0\uC744 \uD574\uC81C\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 ID").argument("<volumeId>", "\uD574\uC81C\uD560 \uBCFC\uB968 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 (id, volumeId, _opts, cmd) => {
6073
6324
  const opts = cmd.optsWithGlobals();
6074
6325
  const { client } = await resolveInstanceClient(opts);
6075
6326
  startSpinner("\uBCFC\uB968 \uC5F0\uACB0 \uD574\uC81C \uC911...");
@@ -6085,15 +6336,15 @@ var detachCommand = new import_commander34.Command("detach").description("\uBCFC
6085
6336
  `)
6086
6337
  );
6087
6338
  });
6088
- var volumeCommand = new import_commander34.Command("volume").description(
6339
+ var volumeCommand = new import_commander37.Command("volume").description(
6089
6340
  "\uC778\uC2A4\uD134\uC2A4 \uBCFC\uB968 \uC5F0\uACB0/\uD574\uC81C"
6090
6341
  );
6091
6342
  volumeCommand.addCommand(attachCommand);
6092
6343
  volumeCommand.addCommand(detachCommand);
6093
6344
 
6094
6345
  // src/commands/instance/volumes.ts
6095
- var import_commander35 = require("commander");
6096
- var volumesCommand = new import_commander35.Command("volumes").description("\uC778\uC2A4\uD134\uC2A4\uC5D0 \uC5F0\uACB0\uB41C \uBCFC\uB968 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
6346
+ var import_commander38 = require("commander");
6347
+ var volumesCommand = new import_commander38.Command("volumes").description("\uC778\uC2A4\uD134\uC2A4\uC5D0 \uC5F0\uACB0\uB41C \uBCFC\uB968 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "\uC778\uC2A4\uD134\uC2A4 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 (id, _opts, cmd) => {
6097
6348
  const opts = cmd.optsWithGlobals();
6098
6349
  const { client } = await resolveInstanceClient(opts);
6099
6350
  startSpinner("\uBCFC\uB968 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -6114,7 +6365,7 @@ var volumesCommand = new import_commander35.Command("volumes").description("\uC7
6114
6365
  });
6115
6366
 
6116
6367
  // src/commands/ncr/list.ts
6117
- var import_commander36 = require("commander");
6368
+ var import_commander39 = require("commander");
6118
6369
 
6119
6370
  // src/services/ncr/harbor-client.ts
6120
6371
  var import_ky12 = __toESM(require("ky"));
@@ -6203,25 +6454,16 @@ var HarborClient = class {
6203
6454
  async function createNcrClient(opts) {
6204
6455
  const profileName = await resolveProfileName(opts.profile);
6205
6456
  const uak = await getUserAccessKey(profileName);
6457
+ const environment = await getProfileEnvironment(profileName);
6206
6458
  const region = opts.region ?? "kr1";
6207
- return { client: new NcrClient(uak.id, uak.secret, region), profileName };
6459
+ return { client: new NcrClient(uak.id, uak.secret, region, environment), profileName };
6208
6460
  }
6209
6461
  async function resolveAppKey(profileName) {
6210
- let cred;
6211
- try {
6212
- cred = await getServiceCredential("ncr", profileName);
6213
- } catch (err) {
6214
- if (!(err instanceof NhnCloudCliError) || err.exitCode !== EXIT_CONFIG_ERROR) {
6215
- throw err;
6216
- }
6217
- }
6218
- if (!cred?.appkey) {
6219
- throw new NhnCloudCliError(
6220
- "NCR appKey \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.\nnhncloud configure --ncr-appkey <key> \uB97C \uC2E4\uD589\uD574 \uC124\uC815\uD558\uC138\uC694.",
6221
- EXIT_CONFIG_ERROR
6222
- );
6223
- }
6224
- return cred.appkey;
6462
+ return resolveServiceAppKey(
6463
+ "ncr",
6464
+ profileName,
6465
+ "NCR appKey \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.\nnhncloud configure --ncr-appkey <key> \uB97C \uC2E4\uD589\uD574 \uC124\uC815\uD558\uC138\uC694."
6466
+ );
6225
6467
  }
6226
6468
  async function createHarborClient(opts, registryArg) {
6227
6469
  const { client: ncrClient, profileName } = await createNcrClient(opts);
@@ -6251,7 +6493,7 @@ function parseHarborHost(uri) {
6251
6493
  }
6252
6494
 
6253
6495
  // src/commands/ncr/list.ts
6254
- var listCommand5 = new import_commander36.Command("list").description("NCR \uB808\uC9C0\uC2A4\uD2B8\uB9AC \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "NCR region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
6496
+ var listCommand5 = new import_commander39.Command("list").description("NCR \uB808\uC9C0\uC2A4\uD2B8\uB9AC \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "NCR region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
6255
6497
  const opts = cmd.optsWithGlobals();
6256
6498
  const { client, profileName } = await createNcrClient(opts);
6257
6499
  const appKey = await resolveAppKey(profileName);
@@ -6277,8 +6519,8 @@ var listCommand5 = new import_commander36.Command("list").description("NCR \uB80
6277
6519
  });
6278
6520
 
6279
6521
  // src/commands/ncr/get.ts
6280
- var import_commander37 = require("commander");
6281
- var getCommand3 = new import_commander37.Command("get").description("\uB2E8\uC77C NCR \uB808\uC9C0\uC2A4\uD2B8\uB9AC\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<registry>", "\uB808\uC9C0\uC2A4\uD2B8\uB9AC \uC774\uB984 \uB610\uB294 ID").option("--region <region>", "NCR region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (registry, _opts, cmd) => {
6522
+ var import_commander40 = require("commander");
6523
+ var getCommand3 = new import_commander40.Command("get").description("\uB2E8\uC77C NCR \uB808\uC9C0\uC2A4\uD2B8\uB9AC\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<registry>", "\uB808\uC9C0\uC2A4\uD2B8\uB9AC \uC774\uB984 \uB610\uB294 ID").option("--region <region>", "NCR region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (registry, _opts, cmd) => {
6282
6524
  const opts = cmd.optsWithGlobals();
6283
6525
  if (!registry.trim()) {
6284
6526
  throw new NhnCloudCliError(
@@ -6306,8 +6548,8 @@ var getCommand3 = new import_commander37.Command("get").description("\uB2E8\uC77
6306
6548
  });
6307
6549
 
6308
6550
  // src/commands/ncr/images.ts
6309
- var import_commander38 = require("commander");
6310
- var imagesCommand2 = new import_commander38.Command("images").description("\uB808\uC9C0\uC2A4\uD2B8\uB9AC\uC758 \uC774\uBBF8\uC9C0(repository) \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<registry>", "\uB808\uC9C0\uC2A4\uD2B8\uB9AC \uC774\uB984").option("--region <region>", "NCR region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (registry, _opts, cmd) => {
6551
+ var import_commander41 = require("commander");
6552
+ var imagesCommand2 = new import_commander41.Command("images").description("\uB808\uC9C0\uC2A4\uD2B8\uB9AC\uC758 \uC774\uBBF8\uC9C0(repository) \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<registry>", "\uB808\uC9C0\uC2A4\uD2B8\uB9AC \uC774\uB984").option("--region <region>", "NCR region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (registry, _opts, cmd) => {
6311
6553
  const opts = cmd.optsWithGlobals();
6312
6554
  if (!registry.trim()) {
6313
6555
  throw new NhnCloudCliError(
@@ -6341,8 +6583,8 @@ var imagesCommand2 = new import_commander38.Command("images").description("\uB80
6341
6583
  });
6342
6584
 
6343
6585
  // src/commands/ncr/tags.ts
6344
- var import_commander39 = require("commander");
6345
- var tagsCommand = new import_commander39.Command("tags").description("\uD2B9\uC815 \uC774\uBBF8\uC9C0\uC758 \uD0DC\uADF8 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<registry>", "\uB808\uC9C0\uC2A4\uD2B8\uB9AC \uC774\uB984").argument("<repository>", "\uC774\uBBF8\uC9C0(repository) \uC774\uB984 (\uC9E7\uC740 \uC774\uB984 \uB610\uB294 {project}/{repo})").option("--region <region>", "NCR region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (registry, repository, _opts, cmd) => {
6586
+ var import_commander42 = require("commander");
6587
+ var tagsCommand = new import_commander42.Command("tags").description("\uD2B9\uC815 \uC774\uBBF8\uC9C0\uC758 \uD0DC\uADF8 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<registry>", "\uB808\uC9C0\uC2A4\uD2B8\uB9AC \uC774\uB984").argument("<repository>", "\uC774\uBBF8\uC9C0(repository) \uC774\uB984 (\uC9E7\uC740 \uC774\uB984 \uB610\uB294 {project}/{repo})").option("--region <region>", "NCR region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (registry, repository, _opts, cmd) => {
6346
6588
  const opts = cmd.optsWithGlobals();
6347
6589
  if (!registry.trim()) {
6348
6590
  throw new NhnCloudCliError(
@@ -6383,7 +6625,7 @@ var tagsCommand = new import_commander39.Command("tags").description("\uD2B9\uC8
6383
6625
  });
6384
6626
 
6385
6627
  // src/commands/commands.ts
6386
- var import_commander40 = require("commander");
6628
+ var import_commander43 = require("commander");
6387
6629
  function commandPath(command) {
6388
6630
  const names = [];
6389
6631
  let current2 = command;
@@ -6421,7 +6663,7 @@ function collectCommandCatalog(program2) {
6421
6663
  return { commands };
6422
6664
  }
6423
6665
  function createCommandsCommand(program2) {
6424
- return new import_commander40.Command("commands").description("\uBA85\uB839 \uACBD\uB85C\uC640 \uC635\uC158 catalog\uB97C \uCD9C\uB825\uD55C\uB2E4").action((_opts, cmd) => {
6666
+ return new import_commander43.Command("commands").description("\uBA85\uB839 \uACBD\uB85C\uC640 \uC635\uC158 catalog\uB97C \uCD9C\uB825\uD55C\uB2E4").action((_opts, cmd) => {
6425
6667
  const opts = cmd.optsWithGlobals();
6426
6668
  const catalog = collectCommandCatalog(program2);
6427
6669
  output(opts, {
@@ -6438,7 +6680,7 @@ function createCommandsCommand(program2) {
6438
6680
  }
6439
6681
 
6440
6682
  // src/commands/nks/supports.ts
6441
- var import_commander41 = require("commander");
6683
+ var import_commander44 = require("commander");
6442
6684
 
6443
6685
  // src/commands/nks/helpers.ts
6444
6686
  var import_promises6 = require("fs/promises");
@@ -7011,7 +7253,7 @@ function parseNonNegativeInteger(value, optionName) {
7011
7253
  }
7012
7254
 
7013
7255
  // src/commands/nks/supports.ts
7014
- var supportsCommand = new import_commander41.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) => {
7256
+ var supportsCommand = new import_commander44.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) => {
7015
7257
  const opts = cmd.optsWithGlobals();
7016
7258
  const { client } = await resolveNksClient(opts);
7017
7259
  startSpinner("NKS \uC9C0\uC6D0 \uC815\uBCF4 \uC870\uD68C \uC911...");
@@ -7036,9 +7278,9 @@ var supportsCommand = new import_commander41.Command("supports").description("NK
7036
7278
 
7037
7279
  // src/commands/nks/cluster.ts
7038
7280
  var import_promises7 = require("fs/promises");
7039
- var import_commander42 = require("commander");
7281
+ var import_commander45 = require("commander");
7040
7282
  var import_chalk14 = __toESM(require("chalk"));
7041
- var listCommand6 = new import_commander42.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) => {
7283
+ var listCommand6 = new import_commander45.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) => {
7042
7284
  const opts = cmd.optsWithGlobals();
7043
7285
  const { client } = await resolveNksClient(opts);
7044
7286
  startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -7144,7 +7386,7 @@ async function writeKubeconfigFile(path5, contents, force) {
7144
7386
  throw err;
7145
7387
  }
7146
7388
  }
7147
- var createCommand4 = new import_commander42.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) => {
7389
+ var createCommand4 = new import_commander45.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) => {
7148
7390
  const opts = cmd.optsWithGlobals();
7149
7391
  const payload = await readJsonFile(opts.file);
7150
7392
  const { client } = await resolveNksClient(opts);
@@ -7159,7 +7401,7 @@ var createCommand4 = new import_commander42.Command("create").description("NKS \
7159
7401
  stopSpinner(true);
7160
7402
  uuidOutput(opts, result, "\uD074\uB7EC\uC2A4\uD130 \uC0DD\uC131");
7161
7403
  });
7162
- var deleteCommand3 = new import_commander42.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) => {
7404
+ var deleteCommand3 = new import_commander45.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) => {
7163
7405
  const opts = cmd.optsWithGlobals();
7164
7406
  const ok = await confirmDangerousAction(`NKS \uD074\uB7EC\uC2A4\uD130 "${cluster}" \uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?`, opts.yes);
7165
7407
  if (!ok) return;
@@ -7175,7 +7417,7 @@ var deleteCommand3 = new import_commander42.Command("delete").description("NKS \
7175
7417
  process.stderr.write(import_chalk14.default.green(`\u2713 NKS \uD074\uB7EC\uC2A4\uD130 "${cluster}" \uC0AD\uC81C \uC694\uCCAD \uC644\uB8CC
7176
7418
  `));
7177
7419
  });
7178
- var resizeCommand2 = new import_commander42.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) => {
7420
+ var resizeCommand2 = new import_commander45.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) => {
7179
7421
  const opts = cmd.optsWithGlobals();
7180
7422
  const nodeCount = parsePositiveInteger(opts.nodeCount, "--node-count");
7181
7423
  const nodesToRemove = opts.nodesToRemove?.split(",").map((node) => node.trim()).filter(Boolean);
@@ -7199,7 +7441,7 @@ var resizeCommand2 = new import_commander42.Command("resize").description("NKS \
7199
7441
  stopSpinner(true);
7200
7442
  uuidOutput(opts, result, "\uD074\uB7EC\uC2A4\uD130 resize");
7201
7443
  });
7202
- var setIpAclCommand = new import_commander42.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) => {
7444
+ var setIpAclCommand = new import_commander45.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) => {
7203
7445
  const opts = cmd.optsWithGlobals();
7204
7446
  const payload = await readJsonFile(opts.file);
7205
7447
  const { client } = await resolveNksClient(opts);
@@ -7214,7 +7456,7 @@ var setIpAclCommand = new import_commander42.Command("set-ipacl").description("N
7214
7456
  stopSpinner(true);
7215
7457
  uuidOutput(opts, result, "IP ACL \uC124\uC815");
7216
7458
  });
7217
- var renewCertificateCommand = new import_commander42.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) => {
7459
+ var renewCertificateCommand = new import_commander45.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) => {
7218
7460
  const opts = cmd.optsWithGlobals();
7219
7461
  const term = parsePositiveInteger(opts.termOfValidity, "--term-of-validity");
7220
7462
  if (term < 1 || term > 5) {
@@ -7232,7 +7474,7 @@ var renewCertificateCommand = new import_commander42.Command("renew-certificate"
7232
7474
  stopSpinner(true);
7233
7475
  uuidOutput(opts, result, "\uC778\uC99D\uC11C \uAC31\uC2E0");
7234
7476
  });
7235
- var updateSgwCommand = new import_commander42.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) => {
7477
+ var updateSgwCommand = new import_commander45.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) => {
7236
7478
  const opts = cmd.optsWithGlobals();
7237
7479
  const { client } = await resolveNksClient(opts);
7238
7480
  startSpinner("NKS \uC11C\uBE44\uC2A4 \uAC8C\uC774\uD2B8\uC6E8\uC774 \uBCC0\uACBD \uC694\uCCAD \uC911...");
@@ -7246,7 +7488,7 @@ var updateSgwCommand = new import_commander42.Command("update-sgw").description(
7246
7488
  stopSpinner(true);
7247
7489
  uuidOutput(opts, result, "\uC11C\uBE44\uC2A4 \uAC8C\uC774\uD2B8\uC6E8\uC774 \uBCC0\uACBD");
7248
7490
  });
7249
- var setControlPlaneLogCommand = new import_commander42.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) => {
7491
+ var setControlPlaneLogCommand = new import_commander45.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) => {
7250
7492
  const opts = cmd.optsWithGlobals();
7251
7493
  const controlPlaneLog = await readJsonFile(opts.file);
7252
7494
  const { client } = await resolveNksClient(opts);
@@ -7261,7 +7503,7 @@ var setControlPlaneLogCommand = new import_commander42.Command("set-control-plan
7261
7503
  stopSpinner(true);
7262
7504
  uuidOutput(opts, result, "control plane log \uC124\uC815");
7263
7505
  });
7264
- var getCommand4 = new import_commander42.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) => {
7506
+ var getCommand4 = new import_commander45.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) => {
7265
7507
  const opts = cmd.optsWithGlobals();
7266
7508
  const { client } = await resolveNksClient(opts);
7267
7509
  startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uC870\uD68C \uC911...");
@@ -7280,7 +7522,7 @@ var getCommand4 = new import_commander42.Command("get").description("NKS \uD074\
7280
7522
  ids: [resourceId(result)]
7281
7523
  });
7282
7524
  });
7283
- var eventsCommand = new import_commander42.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) => {
7525
+ var eventsCommand = new import_commander45.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) => {
7284
7526
  const opts = cmd.optsWithGlobals();
7285
7527
  const { client } = await resolveNksClient(opts);
7286
7528
  startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uC791\uC5C5 \uC774\uB825 \uC870\uD68C \uC911...");
@@ -7301,7 +7543,7 @@ var eventsCommand = new import_commander42.Command("events").description("NKS \u
7301
7543
  ids: events.map((event) => event.uuid)
7302
7544
  });
7303
7545
  });
7304
- var eventCommand = new import_commander42.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 (\uC815\uC218 id \uAC00 \uC544\uB2C8\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 (cluster, event, _opts, cmd) => {
7546
+ var eventCommand = new import_commander45.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 (\uC815\uC218 id \uAC00 \uC544\uB2C8\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 (cluster, event, _opts, cmd) => {
7305
7547
  const opts = cmd.optsWithGlobals();
7306
7548
  if (!isUuid(event)) {
7307
7549
  throw new NhnCloudCliError(
@@ -7330,7 +7572,7 @@ var eventCommand = new import_commander42.Command("event").description("NKS \uD0
7330
7572
  ids: [result.uuid]
7331
7573
  });
7332
7574
  });
7333
- var kubeconfigCommand = new import_commander42.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) => {
7575
+ var kubeconfigCommand = new import_commander45.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) => {
7334
7576
  const opts = cmd.optsWithGlobals();
7335
7577
  const { client } = await resolveNksClient(opts);
7336
7578
  startSpinner("NKS kubeconfig \uC870\uD68C \uC911...");
@@ -7350,7 +7592,7 @@ var kubeconfigCommand = new import_commander42.Command("kubeconfig").description
7350
7592
  }
7351
7593
  process.stdout.write(kubeconfig.endsWith("\n") ? kubeconfig : kubeconfig + "\n");
7352
7594
  });
7353
- var ipAclCommand = new import_commander42.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) => {
7595
+ var ipAclCommand = new import_commander45.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) => {
7354
7596
  const opts = cmd.optsWithGlobals();
7355
7597
  const { client } = await resolveNksClient(opts);
7356
7598
  startSpinner("NKS IP ACL \uC870\uD68C \uC911...");
@@ -7369,7 +7611,7 @@ var ipAclCommand = new import_commander42.Command("ipacl").description("NKS \uD0
7369
7611
  ids: [result.cluster_uuid]
7370
7612
  });
7371
7613
  });
7372
- var clusterAddonListCommand = new import_commander42.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) => {
7614
+ var clusterAddonListCommand = new import_commander45.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) => {
7373
7615
  const opts = cmd.optsWithGlobals();
7374
7616
  const { client } = await resolveNksClient(opts);
7375
7617
  startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -7388,7 +7630,7 @@ var clusterAddonListCommand = new import_commander42.Command("list").description
7388
7630
  ids: addons.map((addon) => addon.uuid ?? addon.id ?? addon.name)
7389
7631
  });
7390
7632
  });
7391
- var clusterAddonGetCommand = new import_commander42.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) => {
7633
+ var clusterAddonGetCommand = new import_commander45.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) => {
7392
7634
  const opts = cmd.optsWithGlobals();
7393
7635
  const { client } = await resolveNksClient(opts);
7394
7636
  startSpinner("NKS \uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uC870\uD68C \uC911...");
@@ -7416,7 +7658,7 @@ function parseResolveConflicts(value) {
7416
7658
  EXIT_PARAM_ERROR
7417
7659
  );
7418
7660
  }
7419
- var clusterAddonInstallCommand = new import_commander42.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("--addon-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) => {
7661
+ var clusterAddonInstallCommand = new import_commander45.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("--addon-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) => {
7420
7662
  const opts = cmd.optsWithGlobals();
7421
7663
  const resolveConflicts = parseResolveConflicts(opts.resolveConflicts);
7422
7664
  const { client } = await resolveNksClient(opts);
@@ -7435,7 +7677,7 @@ var clusterAddonInstallCommand = new import_commander42.Command("install").descr
7435
7677
  stopSpinner(true);
7436
7678
  uuidOutput(opts, result, "\uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uC124\uCE58");
7437
7679
  });
7438
- var clusterAddonUpdateCommand = new import_commander42.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("--addon-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) => {
7680
+ var clusterAddonUpdateCommand = new import_commander45.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("--addon-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) => {
7439
7681
  const opts = cmd.optsWithGlobals();
7440
7682
  const resolveConflicts = parseResolveConflicts(opts.resolveConflicts);
7441
7683
  const { client } = await resolveNksClient(opts);
@@ -7453,7 +7695,7 @@ var clusterAddonUpdateCommand = new import_commander42.Command("update").descrip
7453
7695
  stopSpinner(true);
7454
7696
  uuidOutput(opts, result, "\uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uC5C5\uB370\uC774\uD2B8");
7455
7697
  });
7456
- var clusterAddonRemoveCommand = new import_commander42.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) => {
7698
+ var clusterAddonRemoveCommand = new import_commander45.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) => {
7457
7699
  const opts = cmd.optsWithGlobals();
7458
7700
  const ok = await confirmDangerousAction(`NKS \uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 "${addon}" \uC744 \uC81C\uAC70\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?`, opts.yes);
7459
7701
  if (!ok) return;
@@ -7469,11 +7711,11 @@ var clusterAddonRemoveCommand = new import_commander42.Command("remove").descrip
7469
7711
  stopSpinner(true);
7470
7712
  uuidOutput(opts, result, "\uD074\uB7EC\uC2A4\uD130 \uC560\uB4DC\uC628 \uC81C\uAC70");
7471
7713
  });
7472
- var clusterAddonCommand = new import_commander42.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);
7473
- var clusterCommand = new import_commander42.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);
7714
+ var clusterAddonCommand = new import_commander45.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);
7715
+ var clusterCommand = new import_commander45.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);
7474
7716
 
7475
7717
  // src/commands/nks/nodegroup.ts
7476
- var import_commander43 = require("commander");
7718
+ var import_commander46 = require("commander");
7477
7719
  var import_chalk15 = __toESM(require("chalk"));
7478
7720
  function nodeGroupRow(nodegroup) {
7479
7721
  return [
@@ -7527,7 +7769,7 @@ async function confirmDangerousAction2(message, yes) {
7527
7769
  if (!ok) process.stderr.write(import_chalk15.default.yellow("\uC791\uC5C5\uC774 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\n"));
7528
7770
  return ok;
7529
7771
  }
7530
- var listCommand7 = new import_commander43.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) => {
7772
+ var listCommand7 = new import_commander46.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) => {
7531
7773
  const opts = cmd.optsWithGlobals();
7532
7774
  const { client } = await resolveNksClient(opts);
7533
7775
  startSpinner("NKS \uB178\uB4DC \uADF8\uB8F9 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -7546,7 +7788,7 @@ var listCommand7 = new import_commander43.Command("list").description("NKS \uB17
7546
7788
  ids: nodegroups.map((nodegroup) => nodegroup.uuid)
7547
7789
  });
7548
7790
  });
7549
- var getCommand5 = new import_commander43.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) => {
7791
+ var getCommand5 = new import_commander46.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) => {
7550
7792
  const opts = cmd.optsWithGlobals();
7551
7793
  const { client } = await resolveNksClient(opts);
7552
7794
  startSpinner("NKS \uB178\uB4DC \uADF8\uB8F9 \uC870\uD68C \uC911...");
@@ -7565,7 +7807,7 @@ var getCommand5 = new import_commander43.Command("get").description("NKS \uB178\
7565
7807
  ids: [result.uuid]
7566
7808
  });
7567
7809
  });
7568
- var createCommand5 = new import_commander43.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) => {
7810
+ var createCommand5 = new import_commander46.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) => {
7569
7811
  const opts = cmd.optsWithGlobals();
7570
7812
  const payload = await readJsonFile(opts.file);
7571
7813
  const { client } = await resolveNksClient(opts);
@@ -7580,7 +7822,7 @@ var createCommand5 = new import_commander43.Command("create").description("NKS \
7580
7822
  stopSpinner(true);
7581
7823
  uuidOutput2(opts, result, "\uB178\uB4DC \uADF8\uB8F9 \uC0DD\uC131");
7582
7824
  });
7583
- var deleteCommand4 = new import_commander43.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) => {
7825
+ var deleteCommand4 = new import_commander46.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) => {
7584
7826
  const opts = cmd.optsWithGlobals();
7585
7827
  const ok = await confirmDangerousAction2(`NKS \uB178\uB4DC \uADF8\uB8F9 "${nodegroup}" \uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?`, opts.yes);
7586
7828
  if (!ok) return;
@@ -7597,7 +7839,7 @@ var deleteCommand4 = new import_commander43.Command("delete").description("NKS \
7597
7839
  `));
7598
7840
  });
7599
7841
  function nodeActionCommand(name) {
7600
- return new import_commander43.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) => {
7842
+ return new import_commander46.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) => {
7601
7843
  const opts = cmd.optsWithGlobals();
7602
7844
  const nodes = parseCsv(opts.nodes, "--nodes");
7603
7845
  const { client } = await resolveNksClient(opts);
@@ -7613,7 +7855,7 @@ function nodeActionCommand(name) {
7613
7855
  uuidOutput2(opts, result, `\uB178\uB4DC ${name === "stop-node" ? "\uC911\uC9C0" : "\uC2DC\uC791"}`);
7614
7856
  });
7615
7857
  }
7616
- var autoscaleCommand = new import_commander43.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) => {
7858
+ var autoscaleCommand = new import_commander46.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) => {
7617
7859
  const opts = cmd.optsWithGlobals();
7618
7860
  const { client } = await resolveNksClient(opts);
7619
7861
  startSpinner("NKS \uB178\uB4DC \uADF8\uB8F9 autoscale \uC870\uD68C \uC911...");
@@ -7632,7 +7874,7 @@ var autoscaleCommand = new import_commander43.Command("autoscale").description("
7632
7874
  ids: []
7633
7875
  });
7634
7876
  });
7635
- var setAutoscaleCommand = new import_commander43.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) => {
7877
+ var setAutoscaleCommand = new import_commander46.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) => {
7636
7878
  const opts = cmd.optsWithGlobals();
7637
7879
  const payload = await readJsonFile(opts.file);
7638
7880
  const { client } = await resolveNksClient(opts);
@@ -7647,7 +7889,7 @@ var setAutoscaleCommand = new import_commander43.Command("set-autoscale").descri
7647
7889
  stopSpinner(true);
7648
7890
  uuidOutput2(opts, result, "autoscale \uBCC0\uACBD");
7649
7891
  });
7650
- var setMetricAutoscaleCommand = new import_commander43.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) => {
7892
+ var setMetricAutoscaleCommand = new import_commander46.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) => {
7651
7893
  const opts = cmd.optsWithGlobals();
7652
7894
  const payload = await readJsonFile(opts.file);
7653
7895
  const { client } = await resolveNksClient(opts);
@@ -7662,7 +7904,7 @@ var setMetricAutoscaleCommand = new import_commander43.Command("set-metric-autos
7662
7904
  stopSpinner(true);
7663
7905
  uuidOutput2(opts, result, "metric autoscale \uBCC0\uACBD");
7664
7906
  });
7665
- var upgradeCommand = new import_commander43.Command("upgrade").description("NKS \uB178\uB4DC \uADF8\uB8F9 Kubernetes version \uC744 \uC5C5\uADF8\uB808\uC774\uB4DC\uD55C\uB2E4 (default-master \uB85C control plane \uC5C5\uADF8\uB808\uC774\uB4DC)").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984. control plane \uC740 default-master \uB85C \uC9C0\uC815\uD55C\uB2E4").requiredOption("--kube-version <v>", "\uB300\uC0C1 Kubernetes version").option("--num-buffer-nodes <n>", "\uCD95\uCD9C\uB41C \uD30C\uB4DC\uB97C \uBC1B\uC744 \uC5EC\uC720 \uB178\uB4DC \uC218 (\uAE30\uBCF8 1, \uC791\uC5C5 \uD6C4 \uC790\uB3D9 \uC0AD\uC81C, \uC778\uC2A4\uD134\uC2A4 \uC694\uAE08 \uBC1C\uC0DD)").option("--num-max-unavailable-nodes <n>", "\uD55C \uBC88\uC5D0 \uC11C\uBE44\uC2A4 \uBD88\uAC00 \uC0C1\uD0DC\uB85C \uB458 \uB178\uB4DC \uC218 (\uAE30\uBCF8 1, \uD06C\uBA74 \uBE60\uB974\uACE0 \uAC00\uC6A9\uC131 \uB0AE\uC74C)").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) => {
7907
+ var upgradeCommand = new import_commander46.Command("upgrade").description("NKS \uB178\uB4DC \uADF8\uB8F9 Kubernetes version \uC744 \uC5C5\uADF8\uB808\uC774\uB4DC\uD55C\uB2E4 (default-master \uB85C control plane \uC5C5\uADF8\uB808\uC774\uB4DC)").argument("<cluster>", "\uD074\uB7EC\uC2A4\uD130 UUID \uB610\uB294 \uC774\uB984").argument("<nodegroup>", "\uB178\uB4DC \uADF8\uB8F9 UUID \uB610\uB294 \uC774\uB984. control plane \uC740 default-master \uB85C \uC9C0\uC815\uD55C\uB2E4").requiredOption("--kube-version <v>", "\uB300\uC0C1 Kubernetes version").option("--num-buffer-nodes <n>", "\uCD95\uCD9C\uB41C \uD30C\uB4DC\uB97C \uBC1B\uC744 \uC5EC\uC720 \uB178\uB4DC \uC218 (\uAE30\uBCF8 1, \uC791\uC5C5 \uD6C4 \uC790\uB3D9 \uC0AD\uC81C, \uC778\uC2A4\uD134\uC2A4 \uC694\uAE08 \uBC1C\uC0DD)").option("--num-max-unavailable-nodes <n>", "\uD55C \uBC88\uC5D0 \uC11C\uBE44\uC2A4 \uBD88\uAC00 \uC0C1\uD0DC\uB85C \uB458 \uB178\uB4DC \uC218 (\uAE30\uBCF8 1, \uD06C\uBA74 \uBE60\uB974\uACE0 \uAC00\uC6A9\uC131 \uB0AE\uC74C)").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) => {
7666
7908
  const opts = cmd.optsWithGlobals();
7667
7909
  const { client } = await resolveNksClient(opts);
7668
7910
  startSpinner("NKS \uB178\uB4DC \uADF8\uB8F9 upgrade \uC694\uCCAD \uC911...");
@@ -7680,7 +7922,7 @@ var upgradeCommand = new import_commander43.Command("upgrade").description("NKS
7680
7922
  stopSpinner(true);
7681
7923
  uuidOutput2(opts, result, "\uB178\uB4DC \uADF8\uB8F9 upgrade");
7682
7924
  });
7683
- var setUserscriptCommand = new import_commander43.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) => {
7925
+ var setUserscriptCommand = new import_commander46.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) => {
7684
7926
  const opts = cmd.optsWithGlobals();
7685
7927
  const contents = await readTextFile(opts.file);
7686
7928
  const { client } = await resolveNksClient(opts);
@@ -7695,7 +7937,7 @@ var setUserscriptCommand = new import_commander43.Command("set-userscript").desc
7695
7937
  stopSpinner(true);
7696
7938
  uuidOutput2(opts, result, "user script \uBCC0\uACBD");
7697
7939
  });
7698
- var updateFlavorCommand = new import_commander43.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>", "\uCD95\uCD9C\uB41C \uD30C\uB4DC\uB97C \uBC1B\uC744 \uC5EC\uC720 \uB178\uB4DC \uC218 (\uAE30\uBCF8 1, \uC791\uC5C5 \uD6C4 \uC790\uB3D9 \uC0AD\uC81C, \uC778\uC2A4\uD134\uC2A4 \uC694\uAE08 \uBC1C\uC0DD)").option("--num-max-unavailable-nodes <n>", "\uD55C \uBC88\uC5D0 \uC11C\uBE44\uC2A4 \uBD88\uAC00 \uC0C1\uD0DC\uB85C \uB458 \uB178\uB4DC \uC218 (\uAE30\uBCF8 1, \uD06C\uBA74 \uBE60\uB974\uACE0 \uAC00\uC6A9\uC131 \uB0AE\uC74C)").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) => {
7940
+ var updateFlavorCommand = new import_commander46.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>", "\uCD95\uCD9C\uB41C \uD30C\uB4DC\uB97C \uBC1B\uC744 \uC5EC\uC720 \uB178\uB4DC \uC218 (\uAE30\uBCF8 1, \uC791\uC5C5 \uD6C4 \uC790\uB3D9 \uC0AD\uC81C, \uC778\uC2A4\uD134\uC2A4 \uC694\uAE08 \uBC1C\uC0DD)").option("--num-max-unavailable-nodes <n>", "\uD55C \uBC88\uC5D0 \uC11C\uBE44\uC2A4 \uBD88\uAC00 \uC0C1\uD0DC\uB85C \uB458 \uB178\uB4DC \uC218 (\uAE30\uBCF8 1, \uD06C\uBA74 \uBE60\uB974\uACE0 \uAC00\uC6A9\uC131 \uB0AE\uC74C)").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) => {
7699
7941
  const opts = cmd.optsWithGlobals();
7700
7942
  const { client } = await resolveNksClient(opts);
7701
7943
  startSpinner("NKS \uB178\uB4DC \uADF8\uB8F9 flavor \uBCC0\uACBD \uC694\uCCAD \uC911...");
@@ -7714,7 +7956,7 @@ var updateFlavorCommand = new import_commander43.Command("update-flavor").descri
7714
7956
  uuidOutput2(opts, result, "flavor \uBCC0\uACBD");
7715
7957
  });
7716
7958
  function patchPayloadCommand(name) {
7717
- return new import_commander43.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) => {
7959
+ return new import_commander46.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) => {
7718
7960
  const opts = cmd.optsWithGlobals();
7719
7961
  const payload = await readJsonFile(opts.file);
7720
7962
  const { client } = await resolveNksClient(opts);
@@ -7730,10 +7972,10 @@ function patchPayloadCommand(name) {
7730
7972
  uuidOutput2(opts, result, name);
7731
7973
  });
7732
7974
  }
7733
- var nodegroupCommand = new import_commander43.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"));
7975
+ var nodegroupCommand = new import_commander46.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"));
7734
7976
 
7735
7977
  // src/commands/nks/addon.ts
7736
- var import_commander44 = require("commander");
7978
+ var import_commander47 = require("commander");
7737
7979
  function addonTypeRow(addonType) {
7738
7980
  return [
7739
7981
  addonType.uuid ?? addonType.id ?? addonType.name,
@@ -7749,7 +7991,7 @@ function addonRow2(addon) {
7749
7991
  addon.status ?? ""
7750
7992
  ];
7751
7993
  }
7752
- var addonTypeListCommand = new import_commander44.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) => {
7994
+ var addonTypeListCommand = new import_commander47.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) => {
7753
7995
  const opts = cmd.optsWithGlobals();
7754
7996
  const { client } = await resolveNksClient(opts);
7755
7997
  startSpinner("NKS \uC560\uB4DC\uC628 \uD0C0\uC785 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -7768,7 +8010,7 @@ var addonTypeListCommand = new import_commander44.Command("list").description("N
7768
8010
  ids: addonTypes.map((addonType) => addonType.uuid ?? addonType.id ?? addonType.name)
7769
8011
  });
7770
8012
  });
7771
- var addonTypeGetCommand = new import_commander44.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) => {
8013
+ var addonTypeGetCommand = new import_commander47.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) => {
7772
8014
  const opts = cmd.optsWithGlobals();
7773
8015
  const { client } = await resolveNksClient(opts);
7774
8016
  startSpinner("NKS \uC560\uB4DC\uC628 \uD0C0\uC785 \uC870\uD68C \uC911...");
@@ -7787,8 +8029,8 @@ var addonTypeGetCommand = new import_commander44.Command("get").description("NKS
7787
8029
  ids: [result.uuid ?? result.id ?? result.name]
7788
8030
  });
7789
8031
  });
7790
- var addonTypeCommand = new import_commander44.Command("addon-type").description("NKS \uC560\uB4DC\uC628 \uD0C0\uC785 \uAD00\uB828 \uBA85\uB839").addCommand(addonTypeListCommand).addCommand(addonTypeGetCommand);
7791
- var addonListCommand = new import_commander44.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) => {
8032
+ var addonTypeCommand = new import_commander47.Command("addon-type").description("NKS \uC560\uB4DC\uC628 \uD0C0\uC785 \uAD00\uB828 \uBA85\uB839").addCommand(addonTypeListCommand).addCommand(addonTypeGetCommand);
8033
+ var addonListCommand = new import_commander47.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) => {
7792
8034
  const opts = cmd.optsWithGlobals();
7793
8035
  const { client } = await resolveNksClient(opts);
7794
8036
  startSpinner("NKS \uC560\uB4DC\uC628 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -7811,7 +8053,7 @@ var addonListCommand = new import_commander44.Command("list").description("NKS \
7811
8053
  ids: addons.map((addon) => addon.uuid ?? addon.id ?? addon.name)
7812
8054
  });
7813
8055
  });
7814
- var addonGetCommand = new import_commander44.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) => {
8056
+ var addonGetCommand = new import_commander47.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) => {
7815
8057
  const opts = cmd.optsWithGlobals();
7816
8058
  const { client } = await resolveNksClient(opts);
7817
8059
  startSpinner("NKS \uC560\uB4DC\uC628 \uC870\uD68C \uC911...");
@@ -7830,10 +8072,10 @@ var addonGetCommand = new import_commander44.Command("get").description("NKS \uC
7830
8072
  ids: [result.uuid ?? result.id ?? result.name]
7831
8073
  });
7832
8074
  });
7833
- var addonCommand = new import_commander44.Command("addon").description("NKS \uC560\uB4DC\uC628 \uAD00\uB828 \uBA85\uB839").addCommand(addonListCommand).addCommand(addonGetCommand);
8075
+ var addonCommand = new import_commander47.Command("addon").description("NKS \uC560\uB4DC\uC628 \uAD00\uB828 \uBA85\uB839").addCommand(addonListCommand).addCommand(addonGetCommand);
7834
8076
 
7835
8077
  // src/commands/ncs/template.ts
7836
- var import_commander45 = require("commander");
8078
+ var import_commander48 = require("commander");
7837
8079
  var import_chalk16 = __toESM(require("chalk"));
7838
8080
 
7839
8081
  // src/commands/ncs/helpers.ts
@@ -7940,24 +8182,15 @@ function normalizeNcsTimeRange(from, to, now) {
7940
8182
  };
7941
8183
  }
7942
8184
  async function resolveNcsAppKey(profileName) {
7943
- let cred;
7944
- try {
7945
- cred = await getServiceCredential("ncs", profileName);
7946
- } catch (err) {
7947
- if (!(err instanceof NhnCloudCliError) || err.exitCode !== EXIT_CONFIG_ERROR) {
7948
- throw err;
7949
- }
7950
- }
7951
- if (!cred?.appkey) {
7952
- throw new NhnCloudCliError(
7953
- "NCS appKey \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. nhncloud configure --ncs-appkey <key> \uB97C \uC2E4\uD589\uD574 \uC124\uC815\uD558\uC138\uC694.",
7954
- EXIT_CONFIG_ERROR
7955
- );
7956
- }
7957
- return cred.appkey;
8185
+ return resolveServiceAppKey(
8186
+ "ncs",
8187
+ profileName,
8188
+ "NCS appKey \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. nhncloud configure --ncs-appkey <key> \uB97C \uC2E4\uD589\uD574 \uC124\uC815\uD558\uC138\uC694."
8189
+ );
7958
8190
  }
7959
8191
  async function resolveNcsClient(opts) {
7960
8192
  const profileName = await resolveProfileName(opts.profile);
8193
+ await requireRealEnvironment(profileName, "NCS");
7961
8194
  const uak = await getUserAccessKey(profileName);
7962
8195
  const accessToken = await getAccessToken(profileName, uak.id, uak.secret);
7963
8196
  const appKey = await resolveNcsAppKey(profileName);
@@ -8016,7 +8249,7 @@ async function confirmDestructive(message, yes) {
8016
8249
  }
8017
8250
 
8018
8251
  // src/commands/ncs/template.ts
8019
- var listCommand8 = new import_commander45.Command("list").description("NCS \uC124\uACC4\uB3C4(template) \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--page <page>", "\uC870\uD68C\uD560 page \uBC88\uD638").option("--size <size>", "page \uB2F9 \uD56D\uBAA9 \uC218 (\uAE30\uBCF8: API \uAE30\uBCF8\uAC12 10)").action(async (_opts, cmd) => {
8252
+ var listCommand8 = new import_commander48.Command("list").description("NCS \uC124\uACC4\uB3C4(template) \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--page <page>", "\uC870\uD68C\uD560 page \uBC88\uD638").option("--size <size>", "page \uB2F9 \uD56D\uBAA9 \uC218 (\uAE30\uBCF8: API \uAE30\uBCF8\uAC12 10)").action(async (_opts, cmd) => {
8020
8253
  const opts = cmd.optsWithGlobals();
8021
8254
  const { client } = await resolveNcsClient(opts);
8022
8255
  startSpinner("NCS \uC124\uACC4\uB3C4 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -8047,7 +8280,7 @@ var listCommand8 = new import_commander45.Command("list").description("NCS \uC12
8047
8280
  ids: templates.map((t) => t.id)
8048
8281
  });
8049
8282
  });
8050
- var getCommand6 = new import_commander45.Command("get").description("NCS \uC124\uACC4\uB3C4(template) \uB2E8\uAC74\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "template ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8283
+ var getCommand6 = new import_commander48.Command("get").description("NCS \uC124\uACC4\uB3C4(template) \uB2E8\uAC74\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "template ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8051
8284
  const opts = cmd.optsWithGlobals();
8052
8285
  requireNonEmpty(id, "id");
8053
8286
  const { client } = await resolveNcsClient(opts);
@@ -8075,7 +8308,7 @@ var getCommand6 = new import_commander45.Command("get").description("NCS \uC124\
8075
8308
  ids: [template.id]
8076
8309
  });
8077
8310
  });
8078
- var createCommand6 = new import_commander45.Command("create").description("NCS \uC124\uACC4\uB3C4(template) \uB97C \uC0DD\uC131\uD55C\uB2E4 (--file \uB85C JSON spec \uC804\uB2EC)").requiredOption("--file <path>", "template \uC0DD\uC131 spec \uC774 \uB2F4\uAE34 JSON \uD30C\uC77C \uACBD\uB85C").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
8311
+ var createCommand6 = new import_commander48.Command("create").description("NCS \uC124\uACC4\uB3C4(template) \uB97C \uC0DD\uC131\uD55C\uB2E4 (--file \uB85C JSON spec \uC804\uB2EC)").requiredOption("--file <path>", "template \uC0DD\uC131 spec \uC774 \uB2F4\uAE34 JSON \uD30C\uC77C \uACBD\uB85C").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
8079
8312
  const opts = cmd.optsWithGlobals();
8080
8313
  const payload = readJsonPayload(opts.file);
8081
8314
  const { client } = await resolveNcsClient(opts);
@@ -8103,7 +8336,7 @@ var createCommand6 = new import_commander45.Command("create").description("NCS \
8103
8336
  ids: [template.id]
8104
8337
  });
8105
8338
  });
8106
- var deleteCommand5 = new import_commander45.Command("delete").description("NCS \uC124\uACC4\uB3C4(template) \uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<id>", "template ID").option("--yes", "\uD655\uC778 \uD504\uB86C\uD504\uD2B8 \uC0DD\uB7B5 (CI/\uBE44\uB300\uD654\uD615 \uD544\uC218)").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8339
+ var deleteCommand5 = new import_commander48.Command("delete").description("NCS \uC124\uACC4\uB3C4(template) \uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<id>", "template ID").option("--yes", "\uD655\uC778 \uD504\uB86C\uD504\uD2B8 \uC0DD\uB7B5 (CI/\uBE44\uB300\uD654\uD615 \uD544\uC218)").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8107
8340
  const opts = cmd.optsWithGlobals();
8108
8341
  requireNonEmpty(id, "id");
8109
8342
  const ok = await confirmDestructive(`NCS \uC124\uACC4\uB3C4 "${id}" \uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?`, opts.yes);
@@ -8123,7 +8356,7 @@ var deleteCommand5 = new import_commander45.Command("delete").description("NCS \
8123
8356
  process.stderr.write(import_chalk16.default.green(`\u2713 NCS \uC124\uACC4\uB3C4 "${id}" \uAC00 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
8124
8357
  `));
8125
8358
  });
8126
- var versionListCommand = new import_commander45.Command("list").description("NCS \uC124\uACC4\uB3C4(template) \uC758 \uBC84\uC804 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "template ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--q <query>", "\uAC80\uC0C9\uC5B4").option("--sort <sort>", "\uC815\uB82C \uC870\uAC74").option("--page <page>", "\uC870\uD68C\uD560 page \uBC88\uD638").option("--size <size>", "page \uB2F9 \uD56D\uBAA9 \uC218 (\uAE30\uBCF8: API \uAE30\uBCF8\uAC12 10)").action(async (id, _opts, cmd) => {
8359
+ var versionListCommand = new import_commander48.Command("list").description("NCS \uC124\uACC4\uB3C4(template) \uC758 \uBC84\uC804 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "template ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--q <query>", "\uAC80\uC0C9\uC5B4").option("--sort <sort>", "\uC815\uB82C \uC870\uAC74").option("--page <page>", "\uC870\uD68C\uD560 page \uBC88\uD638").option("--size <size>", "page \uB2F9 \uD56D\uBAA9 \uC218 (\uAE30\uBCF8: API \uAE30\uBCF8\uAC12 10)").action(async (id, _opts, cmd) => {
8127
8360
  const opts = cmd.optsWithGlobals();
8128
8361
  requireNonEmpty(id, "id");
8129
8362
  const { client } = await resolveNcsClient(opts);
@@ -8156,7 +8389,7 @@ var versionListCommand = new import_commander45.Command("list").description("NCS
8156
8389
  ids: versions.map((v) => v.id)
8157
8390
  });
8158
8391
  });
8159
- var versionGetCommand = new import_commander45.Command("get").description("NCS \uC124\uACC4\uB3C4(template) \uBC84\uC804 \uB2E8\uAC74\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "template ID").argument("<version>", "\uBC84\uC804 \uAC12").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, version, _opts, cmd) => {
8392
+ var versionGetCommand = new import_commander48.Command("get").description("NCS \uC124\uACC4\uB3C4(template) \uBC84\uC804 \uB2E8\uAC74\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "template ID").argument("<version>", "\uBC84\uC804 \uAC12").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, version, _opts, cmd) => {
8160
8393
  const opts = cmd.optsWithGlobals();
8161
8394
  requireNonEmpty(id, "id");
8162
8395
  requireNonEmpty(version, "version");
@@ -8177,7 +8410,7 @@ var versionGetCommand = new import_commander45.Command("get").description("NCS \
8177
8410
  ids: [detail.id]
8178
8411
  });
8179
8412
  });
8180
- var versionCreateCommand = new import_commander45.Command("create").description("NCS \uC124\uACC4\uB3C4(template) \uC758 \uC0C8 \uBC84\uC804\uC744 \uC0DD\uC131\uD55C\uB2E4 (--file \uB85C JSON spec \uC804\uB2EC, sourceVersion \uD544\uC218)").argument("<id>", "template ID").requiredOption("--file <path>", "\uBC84\uC804 \uC0DD\uC131 spec \uC774 \uB2F4\uAE34 JSON \uD30C\uC77C \uACBD\uB85C (sourceVersion \uD544\uB4DC \uD544\uC218)").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8413
+ var versionCreateCommand = new import_commander48.Command("create").description("NCS \uC124\uACC4\uB3C4(template) \uC758 \uC0C8 \uBC84\uC804\uC744 \uC0DD\uC131\uD55C\uB2E4 (--file \uB85C JSON spec \uC804\uB2EC, sourceVersion \uD544\uC218)").argument("<id>", "template ID").requiredOption("--file <path>", "\uBC84\uC804 \uC0DD\uC131 spec \uC774 \uB2F4\uAE34 JSON \uD30C\uC77C \uACBD\uB85C (sourceVersion \uD544\uB4DC \uD544\uC218)").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8181
8414
  const opts = cmd.optsWithGlobals();
8182
8415
  requireNonEmpty(id, "id");
8183
8416
  const payload = readJsonPayload(opts.file);
@@ -8198,7 +8431,7 @@ var versionCreateCommand = new import_commander45.Command("create").description(
8198
8431
  ids: [version.id]
8199
8432
  });
8200
8433
  });
8201
- var versionDeleteCommand = new import_commander45.Command("delete").description("NCS \uC124\uACC4\uB3C4(template) \uBC84\uC804\uC744 \uC0AD\uC81C\uD55C\uB2E4").argument("<id>", "template ID").argument("<version>", "\uBC84\uC804 \uAC12").option("--yes", "\uD655\uC778 \uD504\uB86C\uD504\uD2B8 \uC0DD\uB7B5 (CI/\uBE44\uB300\uD654\uD615 \uD544\uC218)").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, version, _opts, cmd) => {
8434
+ var versionDeleteCommand = new import_commander48.Command("delete").description("NCS \uC124\uACC4\uB3C4(template) \uBC84\uC804\uC744 \uC0AD\uC81C\uD55C\uB2E4").argument("<id>", "template ID").argument("<version>", "\uBC84\uC804 \uAC12").option("--yes", "\uD655\uC778 \uD504\uB86C\uD504\uD2B8 \uC0DD\uB7B5 (CI/\uBE44\uB300\uD654\uD615 \uD544\uC218)").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, version, _opts, cmd) => {
8202
8435
  const opts = cmd.optsWithGlobals();
8203
8436
  requireNonEmpty(id, "id");
8204
8437
  requireNonEmpty(version, "version");
@@ -8224,11 +8457,11 @@ var versionDeleteCommand = new import_commander45.Command("delete").description(
8224
8457
  `)
8225
8458
  );
8226
8459
  });
8227
- var versionCommand = new import_commander45.Command("version").description("NCS \uC124\uACC4\uB3C4(template) \uBC84\uC804 \uAD00\uB9AC").addCommand(versionListCommand).addCommand(versionGetCommand).addCommand(versionCreateCommand).addCommand(versionDeleteCommand);
8228
- var templateCommand = new import_commander45.Command("template").description("NCS \uC124\uACC4\uB3C4(template) \uAD00\uB9AC").addCommand(listCommand8).addCommand(getCommand6).addCommand(createCommand6).addCommand(deleteCommand5).addCommand(versionCommand);
8460
+ var versionCommand = new import_commander48.Command("version").description("NCS \uC124\uACC4\uB3C4(template) \uBC84\uC804 \uAD00\uB9AC").addCommand(versionListCommand).addCommand(versionGetCommand).addCommand(versionCreateCommand).addCommand(versionDeleteCommand);
8461
+ var templateCommand = new import_commander48.Command("template").description("NCS \uC124\uACC4\uB3C4(template) \uAD00\uB9AC").addCommand(listCommand8).addCommand(getCommand6).addCommand(createCommand6).addCommand(deleteCommand5).addCommand(versionCommand);
8229
8462
 
8230
8463
  // src/commands/ncs/workload.ts
8231
- var import_commander46 = require("commander");
8464
+ var import_commander49 = require("commander");
8232
8465
  var import_chalk17 = __toESM(require("chalk"));
8233
8466
  function workloadRows(w) {
8234
8467
  return [
@@ -8243,7 +8476,7 @@ function workloadRows(w) {
8243
8476
  ];
8244
8477
  }
8245
8478
  var WORKLOAD_HEADERS = ["id", "name", "type", "status", "desired", "available"];
8246
- var listCommand9 = new import_commander46.Command("list").description("NCS workload(\uB7F0\uD0C0\uC784 \uC2E4\uD589) \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--q <query>", "\uC6CC\uD06C\uB85C\uB4DC \uC774\uB984\xB7\uD15C\uD50C\uB9BF ID\xB7\uD15C\uD50C\uB9BF \uBC84\uC804\uC73C\uB85C \uD544\uD130\uB9C1").option("--page <page>", "\uC870\uD68C\uD560 page \uBC88\uD638").option("--size <size>", "page \uB2F9 \uD56D\uBAA9 \uC218 (\uAE30\uBCF8: API \uAE30\uBCF8\uAC12 10)").action(async (_opts, cmd) => {
8479
+ var listCommand9 = new import_commander49.Command("list").description("NCS workload(\uB7F0\uD0C0\uC784 \uC2E4\uD589) \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--q <query>", "\uC6CC\uD06C\uB85C\uB4DC \uC774\uB984\xB7\uD15C\uD50C\uB9BF ID\xB7\uD15C\uD50C\uB9BF \uBC84\uC804\uC73C\uB85C \uD544\uD130\uB9C1").option("--page <page>", "\uC870\uD68C\uD560 page \uBC88\uD638").option("--size <size>", "page \uB2F9 \uD56D\uBAA9 \uC218 (\uAE30\uBCF8: API \uAE30\uBCF8\uAC12 10)").action(async (_opts, cmd) => {
8247
8480
  const opts = cmd.optsWithGlobals();
8248
8481
  const { client } = await resolveNcsClient(opts);
8249
8482
  startSpinner("NCS workload \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -8276,7 +8509,7 @@ var listCommand9 = new import_commander46.Command("list").description("NCS workl
8276
8509
  ids: workloads.map((w) => w.id)
8277
8510
  });
8278
8511
  });
8279
- var getCommand7 = new import_commander46.Command("get").description("NCS workload \uB2E8\uAC74\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8512
+ var getCommand7 = new import_commander49.Command("get").description("NCS workload \uB2E8\uAC74\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8280
8513
  const opts = cmd.optsWithGlobals();
8281
8514
  requireNonEmpty(id, "id");
8282
8515
  const { client } = await resolveNcsClient(opts);
@@ -8306,7 +8539,7 @@ var getCommand7 = new import_commander46.Command("get").description("NCS workloa
8306
8539
  ids: [workload.id]
8307
8540
  });
8308
8541
  });
8309
- var logsCommand = new import_commander46.Command("logs").description("NCS workload task \uC758 \uCEE8\uD14C\uC774\uB108 \uB85C\uADF8\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--task <taskId>", "task ID (\uD544\uC218)").option("--container <name>", "\uCEE8\uD14C\uC774\uB108 \uC774\uB984 (\uD544\uC218)").option(
8542
+ var logsCommand = new import_commander49.Command("logs").description("NCS workload task \uC758 \uCEE8\uD14C\uC774\uB108 \uB85C\uADF8\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--task <taskId>", "task ID (\uD544\uC218)").option("--container <name>", "\uCEE8\uD14C\uC774\uB108 \uC774\uB984 (\uD544\uC218)").option(
8310
8543
  "--from <time>",
8311
8544
  "\uB85C\uADF8 \uC2DC\uC791: \uC2DC\uAC04\uB300 \uD3EC\uD568 RFC3339, now \uB610\uB294 0 \uC774\uC0C1\uC758 \uC815\uC218\uC640 m/h/d \uB2E8\uC704 (\uC608: 30m, 1h, 2d). UTC Z\uB85C \uC815\uADDC\uD654\uD558\uBA70 \uC0DD\uB7B5 \uC2DC API \uAE30\uBCF8 \uBC94\uC704"
8312
8545
  ).option(
@@ -8351,7 +8584,7 @@ var logsCommand = new import_commander46.Command("logs").description("NCS worklo
8351
8584
  ids: []
8352
8585
  });
8353
8586
  });
8354
- var eventsCommand2 = new import_commander46.Command("events").description("NCS workload task \uC758 \uC774\uBCA4\uD2B8\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--task <taskId>", "task ID (\uD544\uC218)").option("--type <type>", "\uC774\uBCA4\uD2B8 \uD0C0\uC785 (Normal | Warning)").option("--q <query>", "\uC774\uBCA4\uD2B8 \uB0B4\uC6A9 \uD544\uD130\uB9C1").option(
8587
+ var eventsCommand2 = new import_commander49.Command("events").description("NCS workload task \uC758 \uC774\uBCA4\uD2B8\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--task <taskId>", "task ID (\uD544\uC218)").option("--type <type>", "\uC774\uBCA4\uD2B8 \uD0C0\uC785 (Normal | Warning)").option("--q <query>", "\uC774\uBCA4\uD2B8 \uB0B4\uC6A9 \uD544\uD130\uB9C1").option(
8355
8588
  "--from <time>",
8356
8589
  "\uC774\uBCA4\uD2B8 \uC2DC\uC791: \uC2DC\uAC04\uB300 \uD3EC\uD568 RFC3339, now \uB610\uB294 0 \uC774\uC0C1\uC758 \uC815\uC218\uC640 m/h/d \uB2E8\uC704 (\uC608: 30m, 1h, 2d). UTC Z\uB85C \uC815\uADDC\uD654\uD558\uBA70 \uC0DD\uB7B5 \uC2DC API \uAE30\uBCF8 \uBC94\uC704"
8357
8590
  ).option(
@@ -8393,7 +8626,7 @@ var eventsCommand2 = new import_commander46.Command("events").description("NCS w
8393
8626
  ids: []
8394
8627
  });
8395
8628
  });
8396
- var historyGetCommand = new import_commander46.Command("get").description("NCS workload \uC2E4\uD589 \uD788\uC2A4\uD1A0\uB9AC \uB2E8\uAC74\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").argument("<historyId>", "\uD788\uC2A4\uD1A0\uB9AC ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, historyId, _opts, cmd) => {
8629
+ var historyGetCommand = new import_commander49.Command("get").description("NCS workload \uC2E4\uD589 \uD788\uC2A4\uD1A0\uB9AC \uB2E8\uAC74\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").argument("<historyId>", "\uD788\uC2A4\uD1A0\uB9AC ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, historyId, _opts, cmd) => {
8397
8630
  const opts = cmd.optsWithGlobals();
8398
8631
  requireNonEmpty(id, "id");
8399
8632
  requireNonEmpty(historyId, "historyId");
@@ -8422,7 +8655,7 @@ var historyGetCommand = new import_commander46.Command("get").description("NCS w
8422
8655
  ids: [String(detail.id)]
8423
8656
  });
8424
8657
  });
8425
- var historyCommand = new import_commander46.Command("history").description("NCS workload \uC2E4\uD589 \uD788\uC2A4\uD1A0\uB9AC \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--page <page>", "\uC870\uD68C\uD560 page \uBC88\uD638").option("--size <size>", "page \uB2F9 \uD56D\uBAA9 \uC218 (\uAE30\uBCF8: API \uAE30\uBCF8\uAC12 10)").option("--sort <sort>", "\uC815\uB82C \uAE30\uC900 \uD544\uB4DC\uBA85 (\uC5ED\uC21C\uC740 \uD544\uB4DC\uBA85 \uC55E\uC5D0 - \uB97C \uBD99\uC784, \uC608: -id)").action(async (id, _opts, cmd) => {
8658
+ var historyCommand = new import_commander49.Command("history").description("NCS workload \uC2E4\uD589 \uD788\uC2A4\uD1A0\uB9AC \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--page <page>", "\uC870\uD68C\uD560 page \uBC88\uD638").option("--size <size>", "page \uB2F9 \uD56D\uBAA9 \uC218 (\uAE30\uBCF8: API \uAE30\uBCF8\uAC12 10)").option("--sort <sort>", "\uC815\uB82C \uAE30\uC900 \uD544\uB4DC\uBA85 (\uC5ED\uC21C\uC740 \uD544\uB4DC\uBA85 \uC55E\uC5D0 - \uB97C \uBD99\uC784, \uC608: -id)").action(async (id, _opts, cmd) => {
8426
8659
  const opts = cmd.optsWithGlobals();
8427
8660
  requireNonEmpty(id, "id");
8428
8661
  const { client } = await resolveNcsClient(opts);
@@ -8455,7 +8688,7 @@ var historyCommand = new import_commander46.Command("history").description("NCS
8455
8688
  ids: history.map((h) => String(h.id))
8456
8689
  });
8457
8690
  }).addCommand(historyGetCommand);
8458
- var scheduleHistoryCommand = new import_commander46.Command("schedule-history").description("NCS workload \uC608\uC57D \uC2E4\uD589 \uD788\uC2A4\uD1A0\uB9AC\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8691
+ var scheduleHistoryCommand = new import_commander49.Command("schedule-history").description("NCS workload \uC608\uC57D \uC2E4\uD589 \uD788\uC2A4\uD1A0\uB9AC\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8459
8692
  const opts = cmd.optsWithGlobals();
8460
8693
  requireNonEmpty(id, "id");
8461
8694
  const { client } = await resolveNcsClient(opts);
@@ -8476,7 +8709,7 @@ var scheduleHistoryCommand = new import_commander46.Command("schedule-history").
8476
8709
  ids: scheduleHistory.map((s) => s.id)
8477
8710
  });
8478
8711
  });
8479
- var createCommand7 = new import_commander46.Command("create").description("NCS workload(\uB7F0\uD0C0\uC784 \uC2E4\uD589) \uB97C \uC0DD\uC131\uD55C\uB2E4 (--file \uB85C JSON spec \uC804\uB2EC)").requiredOption("--file <path>", "workload \uC0DD\uC131 spec \uC774 \uB2F4\uAE34 JSON \uD30C\uC77C \uACBD\uB85C").option("--wait", "workload \uAC00 Running \uC0C1\uD0DC\uAC00 \uB420 \uB54C\uAE4C\uC9C0 \uB300\uAE30").option("--timeout <sec>", "wait \uD0C0\uC784\uC544\uC6C3 (\uCD08, \uAE30\uBCF8 300)", "300").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
8712
+ var createCommand7 = new import_commander49.Command("create").description("NCS workload(\uB7F0\uD0C0\uC784 \uC2E4\uD589) \uB97C \uC0DD\uC131\uD55C\uB2E4 (--file \uB85C JSON spec \uC804\uB2EC)").requiredOption("--file <path>", "workload \uC0DD\uC131 spec \uC774 \uB2F4\uAE34 JSON \uD30C\uC77C \uACBD\uB85C").option("--wait", "workload \uAC00 Running \uC0C1\uD0DC\uAC00 \uB420 \uB54C\uAE4C\uC9C0 \uB300\uAE30").option("--timeout <sec>", "wait \uD0C0\uC784\uC544\uC6C3 (\uCD08, \uAE30\uBCF8 300)", "300").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
8480
8713
  const opts = cmd.optsWithGlobals();
8481
8714
  const payload = readJsonPayload(opts.file);
8482
8715
  const timeoutMs = parsePositiveIntegerOption(opts.timeout ?? "300", "--timeout") * 1e3;
@@ -8507,7 +8740,7 @@ var createCommand7 = new import_commander46.Command("create").description("NCS w
8507
8740
  ids: [workload.id]
8508
8741
  });
8509
8742
  });
8510
- var updateCommand = new import_commander46.Command("update").description("NCS workload \uB97C \uC804\uCCB4 \uAD50\uCCB4\uD55C\uB2E4 (--file \uB85C JSON spec \uC804\uB2EC, PUT)").argument("<id>", "workload ID").requiredOption("--file <path>", "workload \uAD50\uCCB4 spec \uC774 \uB2F4\uAE34 JSON \uD30C\uC77C \uACBD\uB85C").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8743
+ var updateCommand = new import_commander49.Command("update").description("NCS workload \uB97C \uC804\uCCB4 \uAD50\uCCB4\uD55C\uB2E4 (--file \uB85C JSON spec \uC804\uB2EC, PUT)").argument("<id>", "workload ID").requiredOption("--file <path>", "workload \uAD50\uCCB4 spec \uC774 \uB2F4\uAE34 JSON \uD30C\uC77C \uACBD\uB85C").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8511
8744
  const opts = cmd.optsWithGlobals();
8512
8745
  requireNonEmpty(id, "id");
8513
8746
  const payload = readJsonPayload(opts.file);
@@ -8528,7 +8761,7 @@ var updateCommand = new import_commander46.Command("update").description("NCS wo
8528
8761
  ids: [workload.id]
8529
8762
  });
8530
8763
  });
8531
- var patchCommand = new import_commander46.Command("patch").description("NCS workload \uB97C \uBD80\uBD84 \uBCC0\uACBD\uD55C\uB2E4 (--file \uB85C JSON Patch \uBC30\uC5F4 \uC804\uB2EC, RFC 6902)").argument("<id>", "workload ID").requiredOption("--file <path>", "JSON Patch \uBC30\uC5F4(op/path/value)\uC774 \uB2F4\uAE34 \uD30C\uC77C \uACBD\uB85C").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8764
+ var patchCommand = new import_commander49.Command("patch").description("NCS workload \uB97C \uBD80\uBD84 \uBCC0\uACBD\uD55C\uB2E4 (--file \uB85C JSON Patch \uBC30\uC5F4 \uC804\uB2EC, RFC 6902)").argument("<id>", "workload ID").requiredOption("--file <path>", "JSON Patch \uBC30\uC5F4(op/path/value)\uC774 \uB2F4\uAE34 \uD30C\uC77C \uACBD\uB85C").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8532
8765
  const opts = cmd.optsWithGlobals();
8533
8766
  requireNonEmpty(id, "id");
8534
8767
  const payload = readJsonPayload(opts.file);
@@ -8549,7 +8782,7 @@ var patchCommand = new import_commander46.Command("patch").description("NCS work
8549
8782
  ids: [workload.id]
8550
8783
  });
8551
8784
  });
8552
- var pauseCommand = new import_commander46.Command("pause").description("NCS workload \uB97C \uC77C\uC2DC\uC815\uC9C0\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8785
+ var pauseCommand = new import_commander49.Command("pause").description("NCS workload \uB97C \uC77C\uC2DC\uC815\uC9C0\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8553
8786
  const opts = cmd.optsWithGlobals();
8554
8787
  requireNonEmpty(id, "id");
8555
8788
  const { client } = await resolveNcsClient(opts);
@@ -8564,7 +8797,7 @@ var pauseCommand = new import_commander46.Command("pause").description("NCS work
8564
8797
  process.stderr.write(import_chalk17.default.green(`\u2713 NCS workload "${id}" \uAC00 \uC77C\uC2DC\uC815\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
8565
8798
  `));
8566
8799
  });
8567
- var resumeCommand = new import_commander46.Command("resume").description("NCS workload \uB97C \uC7AC\uAC1C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8800
+ var resumeCommand = new import_commander49.Command("resume").description("NCS workload \uB97C \uC7AC\uAC1C\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8568
8801
  const opts = cmd.optsWithGlobals();
8569
8802
  requireNonEmpty(id, "id");
8570
8803
  const { client } = await resolveNcsClient(opts);
@@ -8579,7 +8812,7 @@ var resumeCommand = new import_commander46.Command("resume").description("NCS wo
8579
8812
  process.stderr.write(import_chalk17.default.green(`\u2713 NCS workload "${id}" \uAC00 \uC7AC\uAC1C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
8580
8813
  `));
8581
8814
  });
8582
- var restartCommand = new import_commander46.Command("restart").description("NCS workload task \uB97C \uC7AC\uC2DC\uC791\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--task <taskId>", "task ID (\uD544\uC218)").action(async (id, _opts, cmd) => {
8815
+ var restartCommand = new import_commander49.Command("restart").description("NCS workload task \uB97C \uC7AC\uC2DC\uC791\uD55C\uB2E4").argument("<id>", "workload ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").option("--task <taskId>", "task ID (\uD544\uC218)").action(async (id, _opts, cmd) => {
8583
8816
  const opts = cmd.optsWithGlobals();
8584
8817
  requireNonEmpty(id, "id");
8585
8818
  if (!opts.task || !opts.task.trim()) {
@@ -8602,7 +8835,7 @@ var restartCommand = new import_commander46.Command("restart").description("NCS
8602
8835
  `)
8603
8836
  );
8604
8837
  });
8605
- var deleteCommand6 = new import_commander46.Command("delete").description("NCS workload \uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<id>", "workload ID").option("--yes", "\uD655\uC778 \uD504\uB86C\uD504\uD2B8 \uC0DD\uB7B5 (CI/\uBE44\uB300\uD654\uD615 \uD544\uC218)").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8838
+ var deleteCommand6 = new import_commander49.Command("delete").description("NCS workload \uB97C \uC0AD\uC81C\uD55C\uB2E4").argument("<id>", "workload ID").option("--yes", "\uD655\uC778 \uD504\uB86C\uD504\uD2B8 \uC0DD\uB7B5 (CI/\uBE44\uB300\uD654\uD615 \uD544\uC218)").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (id, _opts, cmd) => {
8606
8839
  const opts = cmd.optsWithGlobals();
8607
8840
  requireNonEmpty(id, "id");
8608
8841
  const ok = await confirmDestructive(`NCS workload "${id}" \uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?`, opts.yes);
@@ -8622,10 +8855,10 @@ var deleteCommand6 = new import_commander46.Command("delete").description("NCS w
8622
8855
  process.stderr.write(import_chalk17.default.green(`\u2713 NCS workload "${id}" \uAC00 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
8623
8856
  `));
8624
8857
  });
8625
- var workloadCommand = new import_commander46.Command("workload").description("NCS workload(\uB7F0\uD0C0\uC784 \uC2E4\uD589) \uAD00\uB9AC").addCommand(listCommand9).addCommand(getCommand7).addCommand(logsCommand).addCommand(eventsCommand2).addCommand(historyCommand).addCommand(scheduleHistoryCommand).addCommand(createCommand7).addCommand(updateCommand).addCommand(patchCommand).addCommand(pauseCommand).addCommand(resumeCommand).addCommand(restartCommand).addCommand(deleteCommand6);
8858
+ var workloadCommand = new import_commander49.Command("workload").description("NCS workload(\uB7F0\uD0C0\uC784 \uC2E4\uD589) \uAD00\uB9AC").addCommand(listCommand9).addCommand(getCommand7).addCommand(logsCommand).addCommand(eventsCommand2).addCommand(historyCommand).addCommand(scheduleHistoryCommand).addCommand(createCommand7).addCommand(updateCommand).addCommand(patchCommand).addCommand(pauseCommand).addCommand(resumeCommand).addCommand(restartCommand).addCommand(deleteCommand6);
8626
8859
 
8627
8860
  // src/commands/ncs/malware.ts
8628
- var import_commander47 = require("commander");
8861
+ var import_commander50 = require("commander");
8629
8862
  function parseEnabledOption(value) {
8630
8863
  if (value === "true") return true;
8631
8864
  if (value === "false") return false;
@@ -8634,7 +8867,7 @@ function parseEnabledOption(value) {
8634
8867
  EXIT_PARAM_ERROR
8635
8868
  );
8636
8869
  }
8637
- var configGetCommand = new import_commander47.Command("get").description("NCS \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uC124\uC815\uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
8870
+ var configGetCommand = new import_commander50.Command("get").description("NCS \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uC124\uC815\uC744 \uC870\uD68C\uD55C\uB2E4").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
8638
8871
  const opts = cmd.optsWithGlobals();
8639
8872
  const { client } = await resolveNcsClient(opts);
8640
8873
  startSpinner("NCS \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uC124\uC815 \uC870\uD68C \uC911...");
@@ -8653,7 +8886,7 @@ var configGetCommand = new import_commander47.Command("get").description("NCS \u
8653
8886
  ids: []
8654
8887
  });
8655
8888
  });
8656
- var configSetCommand = new import_commander47.Command("set").description("NCS \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uC124\uC815\uC744 \uBCC0\uACBD\uD55C\uB2E4").requiredOption("--enabled <true|false>", "\uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uC0AC\uC6A9 \uC5EC\uBD80").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
8889
+ var configSetCommand = new import_commander50.Command("set").description("NCS \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uC124\uC815\uC744 \uBCC0\uACBD\uD55C\uB2E4").requiredOption("--enabled <true|false>", "\uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uC0AC\uC6A9 \uC5EC\uBD80").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, cmd) => {
8657
8890
  const opts = cmd.optsWithGlobals();
8658
8891
  const enabled = parseEnabledOption(opts.enabled);
8659
8892
  const { client } = await resolveNcsClient(opts);
@@ -8673,8 +8906,8 @@ var configSetCommand = new import_commander47.Command("set").description("NCS \u
8673
8906
  ids: []
8674
8907
  });
8675
8908
  });
8676
- var configCommand = new import_commander47.Command("config").description("NCS \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uC124\uC815 \uAD00\uB9AC").addCommand(configGetCommand).addCommand(configSetCommand);
8677
- var resultCommand = new import_commander47.Command("result").description("NCS workload \uC2E4\uD589 \uD788\uC2A4\uD1A0\uB9AC\uC758 \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uACB0\uACFC\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<workloadId>", "workload ID").argument("<historyId>", "\uD788\uC2A4\uD1A0\uB9AC ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (workloadId, historyId, _opts, cmd) => {
8909
+ var configCommand = new import_commander50.Command("config").description("NCS \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uC124\uC815 \uAD00\uB9AC").addCommand(configGetCommand).addCommand(configSetCommand);
8910
+ var resultCommand = new import_commander50.Command("result").description("NCS workload \uC2E4\uD589 \uD788\uC2A4\uD1A0\uB9AC\uC758 \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uACB0\uACFC\uB97C \uC870\uD68C\uD55C\uB2E4").argument("<workloadId>", "workload ID").argument("<historyId>", "\uD788\uC2A4\uD1A0\uB9AC ID").option("--region <region>", "NCS region (\uAE30\uBCF8: kr1, kr1/kr3 \uB9CC \uC9C0\uC6D0)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (workloadId, historyId, _opts, cmd) => {
8678
8911
  const opts = cmd.optsWithGlobals();
8679
8912
  requireNonEmpty(workloadId, "workloadId");
8680
8913
  requireNonEmpty(historyId, "historyId");
@@ -8705,10 +8938,10 @@ var resultCommand = new import_commander47.Command("result").description("NCS wo
8705
8938
  ids: []
8706
8939
  });
8707
8940
  });
8708
- var malwareCommand = new import_commander47.Command("malware").description("NCS \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uAD00\uB9AC").addCommand(configCommand).addCommand(resultCommand);
8941
+ var malwareCommand = new import_commander50.Command("malware").description("NCS \uC545\uC131\uCF54\uB4DC \uAC80\uC0AC \uAD00\uB9AC").addCommand(configCommand).addCommand(resultCommand);
8709
8942
 
8710
8943
  // src/commands/apigateway/service.ts
8711
- var import_commander48 = require("commander");
8944
+ var import_commander51 = require("commander");
8712
8945
 
8713
8946
  // src/commands/apigateway/helpers.ts
8714
8947
  var import_promises8 = require("fs/promises");
@@ -9390,24 +9623,15 @@ function writtenStageResourceOutput(resources) {
9390
9623
  };
9391
9624
  }
9392
9625
  async function resolveApiGatewayAppKey(profileName) {
9393
- let credential;
9394
- try {
9395
- credential = await getServiceCredential("apigateway", profileName);
9396
- } catch (err) {
9397
- if (!(err instanceof NhnCloudCliError) || err.exitCode !== EXIT_CONFIG_ERROR) {
9398
- throw err;
9399
- }
9400
- }
9401
- if (!credential?.appkey) {
9402
- throw new NhnCloudCliError(
9403
- "API Gateway appKey\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. nhncloud configure --apigateway-appkey <key>\uB85C \uC124\uC815\uD558\uC138\uC694.",
9404
- EXIT_CONFIG_ERROR
9405
- );
9406
- }
9407
- return credential.appkey;
9626
+ return resolveServiceAppKey(
9627
+ "apigateway",
9628
+ profileName,
9629
+ "API Gateway appKey\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. nhncloud configure --apigateway-appkey <key>\uB85C \uC124\uC815\uD558\uC138\uC694."
9630
+ );
9408
9631
  }
9409
9632
  async function resolveApiGatewayClient(opts) {
9410
9633
  const profileName = await resolveProfileName(opts.profile);
9634
+ await requireRealEnvironment(profileName, "API Gateway");
9411
9635
  const uak = await getUserAccessKey(profileName);
9412
9636
  const accessToken = await getAccessToken(profileName, uak.id, uak.secret);
9413
9637
  const appKey = await resolveApiGatewayAppKey(profileName);
@@ -9418,7 +9642,7 @@ async function resolveApiGatewayClient(opts) {
9418
9642
  }
9419
9643
 
9420
9644
  // src/commands/apigateway/service.ts
9421
- var listCommand10 = new import_commander48.Command("list").description("API Gateway service \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").option("--region <region>", "API Gateway region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, command) => {
9645
+ var listCommand10 = new import_commander51.Command("list").description("API Gateway service \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").option("--region <region>", "API Gateway region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (_opts, command) => {
9422
9646
  const opts = command.optsWithGlobals();
9423
9647
  const { client } = await resolveApiGatewayClient(opts);
9424
9648
  startSpinner("API Gateway service \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -9449,7 +9673,7 @@ var listCommand10 = new import_commander48.Command("list").description("API Gate
9449
9673
  ids: services.map((service) => sanitizeForTerminal(service.apigwServiceId))
9450
9674
  });
9451
9675
  });
9452
- var getCommand8 = new import_commander48.Command("get").description("API Gateway service \uD55C \uAC74\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID").option("--region <region>", "API Gateway region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (serviceId, _opts, command) => {
9676
+ var getCommand8 = new import_commander51.Command("get").description("API Gateway service \uD55C \uAC74\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID").option("--region <region>", "API Gateway region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984").action(async (serviceId, _opts, command) => {
9453
9677
  const opts = command.optsWithGlobals();
9454
9678
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
9455
9679
  const displayServiceId = sanitizeForTerminal(parsedServiceId);
@@ -9482,10 +9706,10 @@ var getCommand8 = new import_commander48.Command("get").description("API Gateway
9482
9706
  ids: [sanitizeForTerminal(service.apigwServiceId)]
9483
9707
  });
9484
9708
  });
9485
- var serviceCommand = new import_commander48.Command("service").description("API Gateway service \uC870\uD68C \uBA85\uB839").addCommand(listCommand10).addCommand(getCommand8);
9709
+ var serviceCommand = new import_commander51.Command("service").description("API Gateway service \uC870\uD68C \uBA85\uB839").addCommand(listCommand10).addCommand(getCommand8);
9486
9710
 
9487
9711
  // src/commands/apigateway/resource.ts
9488
- var import_commander49 = require("commander");
9712
+ var import_commander52 = require("commander");
9489
9713
  function addApiGatewayOptions(command) {
9490
9714
  return command.option("--region <region>", "API Gateway region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984");
9491
9715
  }
@@ -9567,7 +9791,7 @@ function updatedResourceOutput(opts, resources) {
9567
9791
  });
9568
9792
  }
9569
9793
  var listCommand11 = addApiGatewayOptions(
9570
- new import_commander49.Command("list").description("API Gateway resource \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID")
9794
+ new import_commander52.Command("list").description("API Gateway resource \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID")
9571
9795
  ).action(async (serviceId, _opts, command) => {
9572
9796
  const opts = command.optsWithGlobals();
9573
9797
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -9596,7 +9820,7 @@ var listCommand11 = addApiGatewayOptions(
9596
9820
  });
9597
9821
  });
9598
9822
  var parametersCommand = addApiGatewayOptions(
9599
- new import_commander49.Command("parameters").description("API Gateway resource \uC694\uCCAD parameter\uB97C \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID").argument("<resource-id>", "API Gateway resource ID")
9823
+ new import_commander52.Command("parameters").description("API Gateway resource \uC694\uCCAD parameter\uB97C \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID").argument("<resource-id>", "API Gateway resource ID")
9600
9824
  ).action(async (serviceId, resourceId2, _opts, command) => {
9601
9825
  const opts = command.optsWithGlobals();
9602
9826
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -9625,7 +9849,7 @@ var parametersCommand = addApiGatewayOptions(
9625
9849
  });
9626
9850
  });
9627
9851
  var responsesCommand = addApiGatewayOptions(
9628
- new import_commander49.Command("responses").description("API Gateway resource \uC751\uB2F5 \uC815\uC758\uB97C \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID").argument("<resource-id>", "API Gateway resource ID")
9852
+ new import_commander52.Command("responses").description("API Gateway resource \uC751\uB2F5 \uC815\uC758\uB97C \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID").argument("<resource-id>", "API Gateway resource ID")
9629
9853
  ).action(async (serviceId, resourceId2, _opts, command) => {
9630
9854
  const opts = command.optsWithGlobals();
9631
9855
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -9651,7 +9875,7 @@ var responsesCommand = addApiGatewayOptions(
9651
9875
  });
9652
9876
  });
9653
9877
  var setPathPluginCommand = addApiGatewayOptions(
9654
- new import_commander49.Command("set-path-plugin").description("API Gateway resource \uACBD\uB85C \uD50C\uB7EC\uADF8\uC778\uC744 \uC124\uC815\uD55C\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<resource-id>", "API Gateway resource ID").requiredOption("--config-file <path>", "\uD50C\uB7EC\uADF8\uC778 \uC124\uC815 JSON \uD30C\uC77C").option("--dry-run", "\uC4F0\uAE30 \uC5C6\uC774 \uC608\uC0C1 \uC601\uD5A5 \uBC94\uC704\uB97C \uCD9C\uB825\uD55C\uB2E4").option("--yes", "\uB9AC\uC18C\uC2A4 \uACBD\uB85C \uD50C\uB7EC\uADF8\uC778 \uC124\uC815\uC744 \uD655\uC778\uD55C\uB2E4")
9878
+ new import_commander52.Command("set-path-plugin").description("API Gateway resource \uACBD\uB85C \uD50C\uB7EC\uADF8\uC778\uC744 \uC124\uC815\uD55C\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<resource-id>", "API Gateway resource ID").requiredOption("--config-file <path>", "\uD50C\uB7EC\uADF8\uC778 \uC124\uC815 JSON \uD30C\uC77C").option("--dry-run", "\uC4F0\uAE30 \uC5C6\uC774 \uC608\uC0C1 \uC601\uD5A5 \uBC94\uC704\uB97C \uCD9C\uB825\uD55C\uB2E4").option("--yes", "\uB9AC\uC18C\uC2A4 \uACBD\uB85C \uD50C\uB7EC\uADF8\uC778 \uC124\uC815\uC744 \uD655\uC778\uD55C\uB2E4")
9655
9879
  ).action(async (serviceId, resourceId2, _opts, command) => {
9656
9880
  const opts = command.optsWithGlobals();
9657
9881
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -9725,7 +9949,7 @@ var setPathPluginCommand = addApiGatewayOptions(
9725
9949
  updatedResourceOutput(opts, updatedResources);
9726
9950
  });
9727
9951
  var setMethodPluginCommand = addApiGatewayOptions(
9728
- new import_commander49.Command("set-method-plugin").description("API Gateway resource \uBA54\uC11C\uB4DC \uD50C\uB7EC\uADF8\uC778\uC744 \uC124\uC815\uD55C\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<resource-id>", "API Gateway resource ID").requiredOption("--config-file <path>", "\uD50C\uB7EC\uADF8\uC778 \uC124\uC815 JSON \uD30C\uC77C").option("--dry-run", "\uC4F0\uAE30 \uC5C6\uC774 \uC608\uC0C1 \uBCC0\uACBD \uB0B4\uC6A9\uC744 \uCD9C\uB825\uD55C\uB2E4").option("--yes", "\uB9AC\uC18C\uC2A4 \uBA54\uC11C\uB4DC \uD50C\uB7EC\uADF8\uC778 \uC124\uC815\uC744 \uD655\uC778\uD55C\uB2E4")
9952
+ new import_commander52.Command("set-method-plugin").description("API Gateway resource \uBA54\uC11C\uB4DC \uD50C\uB7EC\uADF8\uC778\uC744 \uC124\uC815\uD55C\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<resource-id>", "API Gateway resource ID").requiredOption("--config-file <path>", "\uD50C\uB7EC\uADF8\uC778 \uC124\uC815 JSON \uD30C\uC77C").option("--dry-run", "\uC4F0\uAE30 \uC5C6\uC774 \uC608\uC0C1 \uBCC0\uACBD \uB0B4\uC6A9\uC744 \uCD9C\uB825\uD55C\uB2E4").option("--yes", "\uB9AC\uC18C\uC2A4 \uBA54\uC11C\uB4DC \uD50C\uB7EC\uADF8\uC778 \uC124\uC815\uC744 \uD655\uC778\uD55C\uB2E4")
9729
9953
  ).action(async (serviceId, resourceId2, _opts, command) => {
9730
9954
  const opts = command.optsWithGlobals();
9731
9955
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -9813,19 +10037,19 @@ var setMethodPluginCommand = addApiGatewayOptions(
9813
10037
  }
9814
10038
  updatedResourceOutput(opts, updatedResources);
9815
10039
  });
9816
- var resourceCommand = new import_commander49.Command("resource").description("API Gateway resource \uC870\uD68C \uBC0F \uBCC0\uACBD \uBA85\uB839").addCommand(listCommand11).addCommand(parametersCommand).addCommand(responsesCommand).addCommand(setPathPluginCommand).addCommand(setMethodPluginCommand);
10040
+ var resourceCommand = new import_commander52.Command("resource").description("API Gateway resource \uC870\uD68C \uBC0F \uBCC0\uACBD \uBA85\uB839").addCommand(listCommand11).addCommand(parametersCommand).addCommand(responsesCommand).addCommand(setPathPluginCommand).addCommand(setMethodPluginCommand);
9817
10041
 
9818
10042
  // src/commands/apigateway/stage.ts
9819
10043
  var import_promises9 = require("fs/promises");
9820
- var import_commander51 = require("commander");
10044
+ var import_commander54 = require("commander");
9821
10045
 
9822
10046
  // src/commands/apigateway/deploy.ts
9823
- var import_commander50 = require("commander");
10047
+ var import_commander53 = require("commander");
9824
10048
  function addApiGatewayOptions2(command) {
9825
10049
  return command.option("--region <region>", "API Gateway region (\uAE30\uBCF8: kr1)", "kr1").option("--profile <name>", "\uC0AC\uC6A9\uD560 profile \uC774\uB984");
9826
10050
  }
9827
10051
  var listCommand12 = addApiGatewayOptions2(
9828
- new import_commander50.Command("list").description("API Gateway stage \uBC30\uD3EC \uC774\uB825 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID")
10052
+ new import_commander53.Command("list").description("API Gateway stage \uBC30\uD3EC \uC774\uB825 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID")
9829
10053
  ).action(async (serviceId, stageId, _opts, command) => {
9830
10054
  const opts = command.optsWithGlobals();
9831
10055
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -9854,7 +10078,7 @@ var listCommand12 = addApiGatewayOptions2(
9854
10078
  });
9855
10079
  });
9856
10080
  var latestCommand = addApiGatewayOptions2(
9857
- new import_commander50.Command("latest").description("API Gateway stage \uCD5C\uC2E0 \uBC30\uD3EC \uACB0\uACFC\uB97C \uC870\uD68C\uD55C\uB2E4 (resource \uC804\uCCB4\uB294 --json)").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID")
10081
+ new import_commander53.Command("latest").description("API Gateway stage \uCD5C\uC2E0 \uBC30\uD3EC \uACB0\uACFC\uB97C \uC870\uD68C\uD55C\uB2E4 (resource \uC804\uCCB4\uB294 --json)").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID")
9858
10082
  ).action(async (serviceId, stageId, _opts, command) => {
9859
10083
  const opts = command.optsWithGlobals();
9860
10084
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -9884,7 +10108,7 @@ var latestCommand = addApiGatewayOptions2(
9884
10108
  });
9885
10109
  });
9886
10110
  var createCommand8 = addApiGatewayOptions2(
9887
- new import_commander50.Command("create").description("stage \uC124\uC815\uC744 API Gateway service \uC5D0 \uBC30\uD3EC\uD55C\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID").option("--description <text>", "\uBC30\uD3EC \uC124\uBA85 (\uCD5C\uB300 200\uC790)").option("--no-wait", "\uBC30\uD3EC \uACB0\uACFC\uB97C \uAE30\uB2E4\uB9AC\uC9C0 \uC54A\uACE0 \uC694\uCCAD\uB9CC \uD55C\uB2E4").option("--timeout <sec>", "\uBC30\uD3EC \uB300\uAE30 \uC0C1\uD55C (\uCD08, \uAE30\uBCF8 300)", "300").option("--yes", "\uBC30\uD3EC\uB97C \uD655\uC778\uD55C\uB2E4")
10111
+ new import_commander53.Command("create").description("stage \uC124\uC815\uC744 API Gateway service \uC5D0 \uBC30\uD3EC\uD55C\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID").option("--description <text>", "\uBC30\uD3EC \uC124\uBA85 (\uCD5C\uB300 200\uC790)").option("--no-wait", "\uBC30\uD3EC \uACB0\uACFC\uB97C \uAE30\uB2E4\uB9AC\uC9C0 \uC54A\uACE0 \uC694\uCCAD\uB9CC \uD55C\uB2E4").option("--timeout <sec>", "\uBC30\uD3EC \uB300\uAE30 \uC0C1\uD55C (\uCD08, \uAE30\uBCF8 300)", "300").option("--yes", "\uBC30\uD3EC\uB97C \uD655\uC778\uD55C\uB2E4")
9888
10112
  ).action(async (serviceId, stageId, _opts, command) => {
9889
10113
  const opts = command.optsWithGlobals();
9890
10114
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -9982,7 +10206,7 @@ var createCommand8 = addApiGatewayOptions2(
9982
10206
  });
9983
10207
  });
9984
10208
  var rollbackCommand = addApiGatewayOptions2(
9985
- new import_commander50.Command("rollback").description("\uBC30\uD3EC \uC774\uB825\uC73C\uB85C stage \uC124\uC815\uC744 \uB418\uB3CC\uB9B0\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID").argument("<deploy-id>", "\uB418\uB3CC\uB9B4 \uBC30\uD3EC ID").option("--yes", "\uB418\uB3CC\uB9AC\uAE30\uB97C \uD655\uC778\uD55C\uB2E4")
10209
+ new import_commander53.Command("rollback").description("\uBC30\uD3EC \uC774\uB825\uC73C\uB85C stage \uC124\uC815\uC744 \uB418\uB3CC\uB9B0\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID").argument("<deploy-id>", "\uB418\uB3CC\uB9B4 \uBC30\uD3EC ID").option("--yes", "\uB418\uB3CC\uB9AC\uAE30\uB97C \uD655\uC778\uD55C\uB2E4")
9986
10210
  ).action(async (serviceId, stageId, deployId, _opts, command) => {
9987
10211
  const opts = command.optsWithGlobals();
9988
10212
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -10010,7 +10234,7 @@ var rollbackCommand = addApiGatewayOptions2(
10010
10234
  );
10011
10235
  process.stderr.write("\uC644\uB8CC: \uC9C1\uC804\uAE4C\uC9C0\uC758 \uC2A4\uD14C\uC774\uC9C0 \uC124\uC815\uC740 \uC774 \uBC30\uD3EC \uC774\uB825\uC758 \uB0B4\uC6A9\uC73C\uB85C \uB300\uCCB4\uB410\uC2B5\uB2C8\uB2E4.\n");
10012
10236
  });
10013
- var deployCommand = new import_commander50.Command("deploy").description("API Gateway stage \uBC30\uD3EC \uC870\uD68C\uC640 \uC2E4\uD589 \uBA85\uB839").addCommand(listCommand12).addCommand(latestCommand).addCommand(createCommand8).addCommand(rollbackCommand);
10237
+ var deployCommand = new import_commander53.Command("deploy").description("API Gateway stage \uBC30\uD3EC \uC870\uD68C\uC640 \uC2E4\uD589 \uBA85\uB839").addCommand(listCommand12).addCommand(latestCommand).addCommand(createCommand8).addCommand(rollbackCommand);
10014
10238
 
10015
10239
  // src/commands/apigateway/stage.ts
10016
10240
  function addApiGatewayOptions3(command) {
@@ -10039,7 +10263,7 @@ async function writeStageSwaggerFile(path5, swagger, force) {
10039
10263
  }
10040
10264
  }
10041
10265
  var listCommand13 = addApiGatewayOptions3(
10042
- new import_commander51.Command("list").description("API Gateway stage \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (resourceUpdatedAt\uC740 \uB9AC\uC18C\uC2A4 \uBC18\uC601 \uC2DC\uAC01)").argument("<service-id>", "API Gateway service ID")
10266
+ new import_commander54.Command("list").description("API Gateway stage \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (resourceUpdatedAt\uC740 \uB9AC\uC18C\uC2A4 \uBC18\uC601 \uC2DC\uAC01)").argument("<service-id>", "API Gateway service ID")
10043
10267
  ).action(async (serviceId, _opts, command) => {
10044
10268
  const opts = command.optsWithGlobals();
10045
10269
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -10068,7 +10292,7 @@ var listCommand13 = addApiGatewayOptions3(
10068
10292
  });
10069
10293
  });
10070
10294
  var swaggerCommand = addApiGatewayOptions3(
10071
- new import_commander51.Command("swagger").description("API Gateway stage Swagger\uB97C \uCD9C\uB825\uD558\uAC70\uB098 \uC800\uC7A5\uD55C\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID").option("--output <file>", "Swagger JSON \uC800\uC7A5 \uACBD\uB85C").option("--force", "\uAE30\uC874 \uD30C\uC77C \uB36E\uC5B4\uC4F0\uAE30")
10295
+ new import_commander54.Command("swagger").description("API Gateway stage Swagger\uB97C \uCD9C\uB825\uD558\uAC70\uB098 \uC800\uC7A5\uD55C\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID").option("--output <file>", "Swagger JSON \uC800\uC7A5 \uACBD\uB85C").option("--force", "\uAE30\uC874 \uD30C\uC77C \uB36E\uC5B4\uC4F0\uAE30")
10072
10296
  ).action(async (serviceId, stageId, _opts, command) => {
10073
10297
  const opts = command.optsWithGlobals();
10074
10298
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -10092,7 +10316,7 @@ var swaggerCommand = addApiGatewayOptions3(
10092
10316
  printJson(swagger);
10093
10317
  });
10094
10318
  var resourcesCommand = addApiGatewayOptions3(
10095
- new import_commander51.Command("resources").description("\uBC30\uD3EC\uB41C API Gateway stage resource \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID")
10319
+ new import_commander54.Command("resources").description("\uBC30\uD3EC\uB41C API Gateway stage resource \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID")
10096
10320
  ).action(async (serviceId, stageId, _opts, command) => {
10097
10321
  const opts = command.optsWithGlobals();
10098
10322
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -10122,7 +10346,7 @@ var resourcesCommand = addApiGatewayOptions3(
10122
10346
  });
10123
10347
  });
10124
10348
  var updateCommand2 = addApiGatewayOptions3(
10125
- new import_commander51.Command("update").description("API Gateway stage\uC758 backend endpoint URL\uACFC \uC124\uBA85\uC744 \uC218\uC815\uD55C\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID").option("--backend-endpoint-url <url>", "\uBCC0\uACBD\uD560 backend endpoint URL").option("--description <text>", "\uBCC0\uACBD\uD560 stage \uC124\uBA85").option("--yes", "\uC2A4\uD14C\uC774\uC9C0 \uC218\uC815\uC744 \uD655\uC778\uD55C\uB2E4")
10349
+ new import_commander54.Command("update").description("API Gateway stage\uC758 backend endpoint URL\uACFC \uC124\uBA85\uC744 \uC218\uC815\uD55C\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID").option("--backend-endpoint-url <url>", "\uBCC0\uACBD\uD560 backend endpoint URL").option("--description <text>", "\uBCC0\uACBD\uD560 stage \uC124\uBA85").option("--yes", "\uC2A4\uD14C\uC774\uC9C0 \uC218\uC815\uC744 \uD655\uC778\uD55C\uB2E4")
10126
10350
  ).action(async (serviceId, stageId, _opts, command) => {
10127
10351
  const opts = command.optsWithGlobals();
10128
10352
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -10171,7 +10395,7 @@ var updateCommand2 = addApiGatewayOptions3(
10171
10395
  process.stderr.write("\uC548\uB0B4: \uC2A4\uD14C\uC774\uC9C0 \uBCC0\uACBD \uD6C4 \uC2E4\uC81C \uD2B8\uB798\uD53D \uBC18\uC601 \uC0C1\uD0DC\uB97C \uD655\uC778\uD558\uC138\uC694.\n");
10172
10396
  });
10173
10397
  var importResourcesCommand = addApiGatewayOptions3(
10174
- new import_commander51.Command("import-resources").description("API Gateway service \uC758 \uB9AC\uC18C\uC2A4\uB97C stage \uB85C \uAC00\uC838\uC628\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID").option("--yes", "\uC2A4\uD14C\uC774\uC9C0 \uBC18\uC601\uC744 \uD655\uC778\uD55C\uB2E4")
10398
+ new import_commander54.Command("import-resources").description("API Gateway service \uC758 \uB9AC\uC18C\uC2A4\uB97C stage \uB85C \uAC00\uC838\uC628\uB2E4").argument("<service-id>", "API Gateway service ID").argument("<stage-id>", "API Gateway stage ID").option("--yes", "\uC2A4\uD14C\uC774\uC9C0 \uBC18\uC601\uC744 \uD655\uC778\uD55C\uB2E4")
10175
10399
  ).action(async (serviceId, stageId, _opts, command) => {
10176
10400
  const opts = command.optsWithGlobals();
10177
10401
  const parsedServiceId = parseRequiredArgument(serviceId, "service-id");
@@ -10193,10 +10417,10 @@ var importResourcesCommand = addApiGatewayOptions3(
10193
10417
  "\uC548\uB0B4: \uBC18\uC601\uC740 \uC2A4\uD14C\uC774\uC9C0 \uC124\uC815\uB9CC \uBC14\uAFC9\uB2C8\uB2E4. \uC11C\uBE44\uC2A4\uC5D0 \uC801\uC6A9\uD558\uB824\uBA74 apigateway stage deploy create \uB97C \uC2E4\uD589\uD558\uC138\uC694.\n"
10194
10418
  );
10195
10419
  });
10196
- var stageCommand = new import_commander51.Command("stage").description("API Gateway stage \uC870\uD68C \uBC0F \uBCC0\uACBD \uBA85\uB839").addCommand(listCommand13).addCommand(swaggerCommand).addCommand(resourcesCommand).addCommand(updateCommand2).addCommand(importResourcesCommand).addCommand(deployCommand);
10420
+ var stageCommand = new import_commander54.Command("stage").description("API Gateway stage \uC870\uD68C \uBC0F \uBCC0\uACBD \uBA85\uB839").addCommand(listCommand13).addCommand(swaggerCommand).addCommand(resourcesCommand).addCommand(updateCommand2).addCommand(importResourcesCommand).addCommand(deployCommand);
10197
10421
 
10198
10422
  // src/commands/loadbalancer/list.ts
10199
- var import_commander52 = require("commander");
10423
+ var import_commander55 = require("commander");
10200
10424
 
10201
10425
  // src/commands/loadbalancer/helpers.ts
10202
10426
  var import_node_net = require("net");
@@ -10569,7 +10793,7 @@ async function resolveLoadBalancerClient(opts) {
10569
10793
  }
10570
10794
 
10571
10795
  // src/commands/loadbalancer/list.ts
10572
- var listCommand14 = new import_commander52.Command("list").description("Load Balancer \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").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) => {
10796
+ var listCommand14 = new import_commander55.Command("list").description("Load Balancer \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").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) => {
10573
10797
  const opts = cmd.optsWithGlobals();
10574
10798
  const { client } = await resolveLoadBalancerClient(opts);
10575
10799
  startSpinner("Load Balancer \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -10607,8 +10831,8 @@ var listCommand14 = new import_commander52.Command("list").description("Load Bal
10607
10831
  });
10608
10832
 
10609
10833
  // src/commands/loadbalancer/get.ts
10610
- var import_commander53 = require("commander");
10611
- var getCommand9 = new import_commander53.Command("get").description("Load Balancer\uB97C \uC774\uB984 \uB610\uB294 UUID\uB85C \uC870\uD68C\uD55C\uB2E4").argument("<loadbalancer>", "Load Balancer \uC774\uB984 \uB610\uB294 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 (loadBalancerInput, _opts, cmd) => {
10834
+ var import_commander56 = require("commander");
10835
+ var getCommand9 = new import_commander56.Command("get").description("Load Balancer\uB97C \uC774\uB984 \uB610\uB294 UUID\uB85C \uC870\uD68C\uD55C\uB2E4").argument("<loadbalancer>", "Load Balancer \uC774\uB984 \uB610\uB294 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 (loadBalancerInput, _opts, cmd) => {
10612
10836
  const opts = cmd.optsWithGlobals();
10613
10837
  const input = requireResourceInput(loadBalancerInput, "Load Balancer");
10614
10838
  const { client } = await resolveLoadBalancerClient(opts);
@@ -10645,10 +10869,10 @@ var getCommand9 = new import_commander53.Command("get").description("Load Balanc
10645
10869
  });
10646
10870
 
10647
10871
  // src/commands/loadbalancer/ipacl.ts
10648
- var import_commander55 = require("commander");
10872
+ var import_commander58 = require("commander");
10649
10873
 
10650
10874
  // src/commands/loadbalancer/target.ts
10651
- var import_commander54 = require("commander");
10875
+ var import_commander57 = require("commander");
10652
10876
 
10653
10877
  // src/commands/loadbalancer/rebind.ts
10654
10878
  function shellQuote(value) {
@@ -10779,7 +11003,7 @@ function targetWriteResult(operation, target, rebind) {
10779
11003
  rebind
10780
11004
  };
10781
11005
  }
10782
- var listCommand15 = new import_commander54.Command("list").description("IP ACL \uB300\uC0C1 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<group>", "IP ACL \uADF8\uB8F9 \uC774\uB984 \uB610\uB294 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 (groupInput, _opts, cmd) => {
11006
+ var listCommand15 = new import_commander57.Command("list").description("IP ACL \uB300\uC0C1 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4").argument("<group>", "IP ACL \uADF8\uB8F9 \uC774\uB984 \uB610\uB294 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 (groupInput, _opts, cmd) => {
10783
11007
  const opts = cmd.optsWithGlobals();
10784
11008
  const input = requireResourceInput(groupInput, "IP ACL \uADF8\uB8F9");
10785
11009
  const { client } = await resolveLoadBalancerClient(opts);
@@ -10808,7 +11032,7 @@ var listCommand15 = new import_commander54.Command("list").description("IP ACL \
10808
11032
  ids: targets.map((target) => target.id)
10809
11033
  });
10810
11034
  });
10811
- var addCommand = new import_commander54.Command("add").description("IP ACL \uB300\uC0C1\uC744 \uCD94\uAC00\uD558\uACE0 \uC5F0\uACB0\uB41C Load Balancer\uB97C \uC7AC\uBC14\uC778\uB529\uD55C\uB2E4").argument("<group>", "IP ACL \uADF8\uB8F9 \uC774\uB984 \uB610\uB294 UUID").requiredOption("--cidr <ip-or-cidr>", "\uCD94\uAC00\uD560 IP \uC8FC\uC18C \uB610\uB294 CIDR").option("--description <text>", "IP ACL \uB300\uC0C1 \uC124\uBA85").option("--no-rebind", "\uB300\uC0C1 \uCD94\uAC00 \uD6C4 Load Balancer \uC7AC\uBC14\uC778\uB529 \uC0DD\uB7B5").option("--yes", "\uB300\uC0C1 \uCD94\uAC00 \uD655\uC778").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 (groupInput, _opts, cmd) => {
11035
+ var addCommand = new import_commander57.Command("add").description("IP ACL \uB300\uC0C1\uC744 \uCD94\uAC00\uD558\uACE0 \uC5F0\uACB0\uB41C Load Balancer\uB97C \uC7AC\uBC14\uC778\uB529\uD55C\uB2E4").argument("<group>", "IP ACL \uADF8\uB8F9 \uC774\uB984 \uB610\uB294 UUID").requiredOption("--cidr <ip-or-cidr>", "\uCD94\uAC00\uD560 IP \uC8FC\uC18C \uB610\uB294 CIDR").option("--description <text>", "IP ACL \uB300\uC0C1 \uC124\uBA85").option("--no-rebind", "\uB300\uC0C1 \uCD94\uAC00 \uD6C4 Load Balancer \uC7AC\uBC14\uC778\uB529 \uC0DD\uB7B5").option("--yes", "\uB300\uC0C1 \uCD94\uAC00 \uD655\uC778").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 (groupInput, _opts, cmd) => {
10812
11036
  const opts = cmd.optsWithGlobals();
10813
11037
  requireYes2(opts.yes, "IP ACL \uB300\uC0C1 \uCD94\uAC00");
10814
11038
  const parsedGroup = requireResourceInput(groupInput, "IP ACL \uADF8\uB8F9");
@@ -10845,7 +11069,7 @@ var addCommand = new import_commander54.Command("add").description("IP ACL \uB30
10845
11069
  writeTargetWarnings(group, result);
10846
11070
  if (result.status === "partial") process.exitCode = EXIT_API_ERROR;
10847
11071
  });
10848
- var removeCommand = new import_commander54.Command("remove").description("IP ACL \uB300\uC0C1\uC744 \uC0AD\uC81C\uD558\uACE0 \uC5F0\uACB0\uB41C Load Balancer\uB97C \uC7AC\uBC14\uC778\uB529\uD55C\uB2E4").argument("<target-id>", "\uC0AD\uC81C\uD560 IP ACL \uB300\uC0C1 UUID").option("--no-rebind", "\uB300\uC0C1 \uC0AD\uC81C \uD6C4 Load Balancer \uC7AC\uBC14\uC778\uB529 \uC0DD\uB7B5").option("--yes", "\uB300\uC0C1 \uC0AD\uC81C \uD655\uC778").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 (targetInput, _opts, cmd) => {
11072
+ var removeCommand = new import_commander57.Command("remove").description("IP ACL \uB300\uC0C1\uC744 \uC0AD\uC81C\uD558\uACE0 \uC5F0\uACB0\uB41C Load Balancer\uB97C \uC7AC\uBC14\uC778\uB529\uD55C\uB2E4").argument("<target-id>", "\uC0AD\uC81C\uD560 IP ACL \uB300\uC0C1 UUID").option("--no-rebind", "\uB300\uC0C1 \uC0AD\uC81C \uD6C4 Load Balancer \uC7AC\uBC14\uC778\uB529 \uC0DD\uB7B5").option("--yes", "\uB300\uC0C1 \uC0AD\uC81C \uD655\uC778").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 (targetInput, _opts, cmd) => {
10849
11073
  const opts = cmd.optsWithGlobals();
10850
11074
  requireYes2(opts.yes, "IP ACL \uB300\uC0C1 \uC0AD\uC81C");
10851
11075
  const parsedTargetId = requireResourceInput(targetInput, "IP ACL \uB300\uC0C1");
@@ -10876,13 +11100,13 @@ var removeCommand = new import_commander54.Command("remove").description("IP ACL
10876
11100
  writeTargetWarnings(group, result);
10877
11101
  if (result.status === "partial") process.exitCode = EXIT_API_ERROR;
10878
11102
  });
10879
- var targetCommand = new import_commander54.Command("target").description("IP ACL \uB300\uC0C1 \uC870\uD68C\xB7\uAD00\uB9AC");
11103
+ var targetCommand = new import_commander57.Command("target").description("IP ACL \uB300\uC0C1 \uC870\uD68C\xB7\uAD00\uB9AC");
10880
11104
  targetCommand.addCommand(listCommand15);
10881
11105
  targetCommand.addCommand(addCommand);
10882
11106
  targetCommand.addCommand(removeCommand);
10883
11107
 
10884
11108
  // src/commands/loadbalancer/ipacl.ts
10885
- var listCommand16 = new import_commander55.Command("list").description("IP ACL \uADF8\uB8F9 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").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) => {
11109
+ var listCommand16 = new import_commander58.Command("list").description("IP ACL \uADF8\uB8F9 \uBAA9\uB85D\uC744 \uC870\uD68C\uD55C\uB2E4 (\uC804\uCCB4 \uD544\uB4DC\uB294 --json)").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) => {
10886
11110
  const opts = cmd.optsWithGlobals();
10887
11111
  const { client } = await resolveLoadBalancerClient(opts);
10888
11112
  startSpinner("IP ACL \uADF8\uB8F9 \uBAA9\uB85D \uC870\uD68C \uC911...");
@@ -10910,7 +11134,7 @@ var listCommand16 = new import_commander55.Command("list").description("IP ACL \
10910
11134
  ids: groups.map((group) => group.id)
10911
11135
  });
10912
11136
  });
10913
- var getCommand10 = new import_commander55.Command("get").description("IP ACL \uADF8\uB8F9\uC744 \uC774\uB984 \uB610\uB294 UUID\uB85C \uC870\uD68C\uD55C\uB2E4").argument("<group>", "IP ACL \uADF8\uB8F9 \uC774\uB984 \uB610\uB294 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 (groupInput, _opts, cmd) => {
11137
+ var getCommand10 = new import_commander58.Command("get").description("IP ACL \uADF8\uB8F9\uC744 \uC774\uB984 \uB610\uB294 UUID\uB85C \uC870\uD68C\uD55C\uB2E4").argument("<group>", "IP ACL \uADF8\uB8F9 \uC774\uB984 \uB610\uB294 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 (groupInput, _opts, cmd) => {
10914
11138
  const opts = cmd.optsWithGlobals();
10915
11139
  const input = requireResourceInput(groupInput, "IP ACL \uADF8\uB8F9");
10916
11140
  const { client } = await resolveLoadBalancerClient(opts);
@@ -10943,7 +11167,7 @@ var getCommand10 = new import_commander55.Command("get").description("IP ACL \uA
10943
11167
  ids: [group.id]
10944
11168
  });
10945
11169
  });
10946
- var createCommand9 = new import_commander55.Command("create").description("IP ACL \uADF8\uB8F9\uC744 \uC0DD\uC131\uD55C\uB2E4").requiredOption("--name <name>", "IP ACL \uADF8\uB8F9 \uC774\uB984").requiredOption("--action <ALLOW|DENY>", "IP \uC811\uADFC \uC81C\uC5B4 \uB3D9\uC791").option("--description <text>", "IP ACL \uADF8\uB8F9 \uC124\uBA85").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) => {
11170
+ var createCommand9 = new import_commander58.Command("create").description("IP ACL \uADF8\uB8F9\uC744 \uC0DD\uC131\uD55C\uB2E4").requiredOption("--name <name>", "IP ACL \uADF8\uB8F9 \uC774\uB984").requiredOption("--action <ALLOW|DENY>", "IP \uC811\uADFC \uC81C\uC5B4 \uB3D9\uC791").option("--description <text>", "IP ACL \uADF8\uB8F9 \uC124\uBA85").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) => {
10947
11171
  const opts = cmd.optsWithGlobals();
10948
11172
  const parsedName = requireResourceInput(opts.name ?? "", "IP ACL \uADF8\uB8F9");
10949
11173
  const parsedAction = parseIpAclAction(opts.action ?? "");
@@ -10974,7 +11198,7 @@ var createCommand9 = new import_commander55.Command("create").description("IP AC
10974
11198
  ids: [group.id]
10975
11199
  });
10976
11200
  });
10977
- var deleteCommand7 = new import_commander55.Command("delete").description("IP ACL \uADF8\uB8F9\uACFC \uD558\uC704 \uB300\uC0C1\uC744 \uC0AD\uC81C\uD55C\uB2E4").argument("<group>", "IP ACL \uADF8\uB8F9 \uC774\uB984 \uB610\uB294 UUID").option("--yes", "\uC0AD\uC81C\uC640 \uC5F0\uACB0 \uADDC\uCE59 \uC81C\uAC70 \uD655\uC778").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 (groupInput, _opts, cmd) => {
11201
+ var deleteCommand7 = new import_commander58.Command("delete").description("IP ACL \uADF8\uB8F9\uACFC \uD558\uC704 \uB300\uC0C1\uC744 \uC0AD\uC81C\uD55C\uB2E4").argument("<group>", "IP ACL \uADF8\uB8F9 \uC774\uB984 \uB610\uB294 UUID").option("--yes", "\uC0AD\uC81C\uC640 \uC5F0\uACB0 \uADDC\uCE59 \uC81C\uAC70 \uD655\uC778").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 (groupInput, _opts, cmd) => {
10978
11202
  const opts = cmd.optsWithGlobals();
10979
11203
  const confirmedYes = requireYes2(opts.yes, "IP ACL \uADF8\uB8F9 \uC0AD\uC81C");
10980
11204
  const parsedGroup = requireResourceInput(groupInput, "IP ACL \uADF8\uB8F9");
@@ -11006,7 +11230,7 @@ var deleteCommand7 = new import_commander55.Command("delete").description("IP AC
11006
11230
  ids: [groupId]
11007
11231
  });
11008
11232
  });
11009
- var ipaclCommand = new import_commander55.Command("ipacl").description("IP ACL \uADF8\uB8F9\xB7\uB300\uC0C1 \uC870\uD68C");
11233
+ var ipaclCommand = new import_commander58.Command("ipacl").description("IP ACL \uADF8\uB8F9\xB7\uB300\uC0C1 \uC870\uD68C");
11010
11234
  ipaclCommand.addCommand(listCommand16);
11011
11235
  ipaclCommand.addCommand(getCommand10);
11012
11236
  ipaclCommand.addCommand(createCommand9);
@@ -11022,7 +11246,7 @@ function configureLoadBalancerHelp(command) {
11022
11246
  }
11023
11247
 
11024
11248
  // src/commands/loadbalancer/binding.ts
11025
- var import_commander56 = require("commander");
11249
+ var import_commander59 = require("commander");
11026
11250
  function bindingResult(operation, loadBalancerId, groupIds) {
11027
11251
  return {
11028
11252
  operation,
@@ -11044,7 +11268,7 @@ function outputBindingResult(opts, result) {
11044
11268
  ids: [result.loadbalancer_id]
11045
11269
  });
11046
11270
  }
11047
- var setIpAclCommand2 = new import_commander56.Command("set-ipacl").description("Load Balancer\uC758 IP ACL \uADF8\uB8F9 \uC5F0\uACB0\uC744 \uC804\uCCB4 \uAD50\uCCB4\uD55C\uB2E4").argument("<loadbalancer>", "Load Balancer \uC774\uB984 \uB610\uB294 UUID").requiredOption(
11271
+ var setIpAclCommand2 = new import_commander59.Command("set-ipacl").description("Load Balancer\uC758 IP ACL \uADF8\uB8F9 \uC5F0\uACB0\uC744 \uC804\uCCB4 \uAD50\uCCB4\uD55C\uB2E4").argument("<loadbalancer>", "Load Balancer \uC774\uB984 \uB610\uB294 UUID").requiredOption(
11048
11272
  "--group <group>",
11049
11273
  "\uC801\uC6A9\uD560 IP ACL \uADF8\uB8F9 \uC774\uB984 \uB610\uB294 UUID (\uBC18\uBCF5 \uAC00\uB2A5)",
11050
11274
  collectOption
@@ -11084,7 +11308,7 @@ var setIpAclCommand2 = new import_commander56.Command("set-ipacl").description("
11084
11308
  bindingResult("loadbalancer-set-ipacl", loadBalancerId, groupIds)
11085
11309
  );
11086
11310
  });
11087
- var clearIpAclCommand = new import_commander56.Command("clear-ipacl").description("Load Balancer\uC758 \uBAA8\uB4E0 IP ACL \uADF8\uB8F9 \uC5F0\uACB0\uC744 \uD574\uC81C\uD55C\uB2E4").argument("<loadbalancer>", "Load Balancer \uC774\uB984 \uB610\uB294 UUID").option("--yes", "\uBAA8\uB4E0 IP ACL \uC5F0\uACB0 \uD574\uC81C \uD655\uC778").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 (loadBalancerInput, _opts, cmd) => {
11311
+ var clearIpAclCommand = new import_commander59.Command("clear-ipacl").description("Load Balancer\uC758 \uBAA8\uB4E0 IP ACL \uADF8\uB8F9 \uC5F0\uACB0\uC744 \uD574\uC81C\uD55C\uB2E4").argument("<loadbalancer>", "Load Balancer \uC774\uB984 \uB610\uB294 UUID").option("--yes", "\uBAA8\uB4E0 IP ACL \uC5F0\uACB0 \uD574\uC81C \uD655\uC778").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 (loadBalancerInput, _opts, cmd) => {
11088
11312
  const opts = cmd.optsWithGlobals();
11089
11313
  const confirmedYes = requireYes2(opts.yes, "Load Balancer IP ACL \uC5F0\uACB0 \uD574\uC81C");
11090
11314
  const parsedLoadBalancer = requireResourceInput(loadBalancerInput, "Load Balancer");
@@ -11109,15 +11333,16 @@ var clearIpAclCommand = new import_commander56.Command("clear-ipacl").descriptio
11109
11333
  var rootAgentHints = `
11110
11334
  Agent hints:
11111
11335
  - Prefer --json for structured output.
11112
- - Use --quiet only when the command documents an identifier output.
11336
+ - Use --quiet only when the command documents a one-line core value.
11113
11337
  - Use --profile <name> to avoid relying on default profile.
11114
11338
  - For IaaS/NKS commands, use --region <region> when region matters.
11115
11339
  - Run "nhncloud commands --json" to inspect command paths and options.
11116
11340
  `;
11117
11341
  var logncrashAgentWorkflow = `
11118
11342
  Agent workflow:
11119
- 1. nhncloud logncrash search --query '*' --from 1h --to now --json
11120
- 2. nhncloud logncrash export --query '<lucene>' --from 1h --to now --output logs.jsonl
11343
+ 1. nhncloud logncrash available-token --json
11344
+ 2. nhncloud logncrash search --query '*' --from 1h --to now --json
11345
+ 3. nhncloud logncrash export --query '<lucene>' --from 1h --to now --output logs.jsonl
11121
11346
  `;
11122
11347
  var deployAgentWorkflow = `
11123
11348
  Agent workflow:
@@ -11172,8 +11397,8 @@ Agent workflow:
11172
11397
  2. nhncloud ncs workload list --json
11173
11398
  3. nhncloud ncs workload get <id> --json
11174
11399
  `;
11175
- var program = new import_commander57.Command();
11176
- program.name("nhncloud").description("NHN Cloud CLI \u2014 AI agent & terminal friendly").version("0.15.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").option("--request-timeout <sec>", "HTTP \uC694\uCCAD \uD0C0\uC784\uC544\uC6C3 (\uCD08, \uAE30\uBCF8 30, \uBC94\uC704 1~3600). NHNCLOUD_REQUEST_TIMEOUT \uB85C\uB3C4 \uC9C0\uC815").addHelpText("after", rootAgentHints);
11400
+ var program = new import_commander60.Command();
11401
+ program.name("nhncloud").description("NHN Cloud CLI \u2014 AI agent & terminal friendly").version("0.17.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").option("--request-timeout <sec>", "HTTP \uC694\uCCAD \uD0C0\uC784\uC544\uC6C3 (\uCD08, \uAE30\uBCF8 30, \uBC94\uC704 1~3600). NHNCLOUD_REQUEST_TIMEOUT \uB85C\uB3C4 \uC9C0\uC815").addHelpText("after", rootAgentHints);
11177
11402
  program.hook("preAction", () => {
11178
11403
  const opts = program.opts();
11179
11404
  const rawTimeout = opts.requestTimeout ?? process.env["NHNCLOUD_REQUEST_TIMEOUT"];
@@ -11194,25 +11419,27 @@ program.hook("preAction", () => {
11194
11419
  }
11195
11420
  });
11196
11421
  program.addCommand(configureCommand);
11197
- var logncrashCommand = new import_commander57.Command("logncrash").description("Log & Crash \uAD00\uB828 \uBA85\uB839").addHelpText("after", logncrashAgentWorkflow);
11422
+ var logncrashCommand = new import_commander60.Command("logncrash").description("Log & Crash \uAD00\uB828 \uBA85\uB839").addHelpText("after", logncrashAgentWorkflow);
11423
+ logncrashCommand.addCommand(availableTokenCommand);
11198
11424
  logncrashCommand.addCommand(searchCommand);
11199
11425
  logncrashCommand.addCommand(sendCommand);
11200
11426
  logncrashCommand.addCommand(exportCommand);
11201
11427
  program.addCommand(logncrashCommand);
11202
- var deployCommand2 = new import_commander57.Command("deploy").description("NHN Cloud Deploy \uAD00\uB828 \uBA85\uB839").addHelpText("after", deployAgentWorkflow);
11428
+ var deployCommand2 = new import_commander60.Command("deploy").description("NHN Cloud Deploy \uAD00\uB828 \uBA85\uB839").addHelpText("after", deployAgentWorkflow);
11203
11429
  deployCommand2.hook("preSubcommand", async () => {
11204
11430
  await warnLegacyDeployTargets();
11205
11431
  });
11206
11432
  deployCommand2.addCommand(runCommand);
11207
11433
  deployCommand2.addCommand(artifactsCommand);
11208
11434
  deployCommand2.addCommand(serverGroupsCommand);
11435
+ deployCommand2.addCommand(scenariosCommand);
11209
11436
  deployCommand2.addCommand(historiesCommand);
11210
11437
  deployCommand2.addCommand(binaryGroupsCommand);
11211
11438
  deployCommand2.addCommand(binariesCommand);
11212
11439
  deployCommand2.addCommand(uploadCommand);
11213
11440
  deployCommand2.addCommand(downloadCommand);
11214
11441
  program.addCommand(deployCommand2);
11215
- var instanceCommand = new import_commander57.Command("instance").description("Compute \uC778\uC2A4\uD134\uC2A4 \uAD00\uB828 \uBA85\uB839").addHelpText("after", instanceAgentWorkflow);
11442
+ var instanceCommand = new import_commander60.Command("instance").description("Compute \uC778\uC2A4\uD134\uC2A4 \uAD00\uB828 \uBA85\uB839").addHelpText("after", instanceAgentWorkflow);
11216
11443
  instanceCommand.addCommand(listCommand);
11217
11444
  instanceCommand.addCommand(flavorsCommand);
11218
11445
  instanceCommand.addCommand(availabilityZonesCommand);
@@ -11231,23 +11458,23 @@ instanceCommand.addCommand(keypairCommand);
11231
11458
  instanceCommand.addCommand(volumeCommand);
11232
11459
  instanceCommand.addCommand(volumesCommand);
11233
11460
  program.addCommand(instanceCommand);
11234
- var networkCommand = new import_commander57.Command("network").description("VPC\xB7\uC11C\uBE0C\uB137 \uC870\uD68C").addHelpText("after", networkAgentWorkflow);
11461
+ var networkCommand = new import_commander60.Command("network").description("VPC\xB7\uC11C\uBE0C\uB137 \uC870\uD68C").addHelpText("after", networkAgentWorkflow);
11235
11462
  networkCommand.addCommand(listCommand3);
11236
11463
  networkCommand.addCommand(subnetCommand);
11237
11464
  program.addCommand(networkCommand);
11238
- var volumeCommand2 = new import_commander57.Command("volume").description("Block Storage \uBCFC\uB968 \uAD00\uB828 \uBA85\uB839").addHelpText("after", volumeAgentWorkflow);
11465
+ var volumeCommand2 = new import_commander60.Command("volume").description("Block Storage \uBCFC\uB968 \uAD00\uB828 \uBA85\uB839").addHelpText("after", volumeAgentWorkflow);
11239
11466
  volumeCommand2.addCommand(listCommand2);
11240
11467
  volumeCommand2.addCommand(getCommand);
11241
11468
  volumeCommand2.addCommand(createCommand);
11242
11469
  program.addCommand(volumeCommand2);
11243
- var floatingipCommand = new import_commander57.Command("floatingip").description(
11470
+ var floatingipCommand = new import_commander60.Command("floatingip").description(
11244
11471
  "Floating IP(\uC778\uC2A4\uD134\uC2A4 \uACF5\uC778 IP) \uAD00\uB9AC"
11245
11472
  ).addHelpText("after", floatingIpAgentWorkflow);
11246
11473
  floatingipCommand.addCommand(listCommand4);
11247
11474
  floatingipCommand.addCommand(createCommand2);
11248
11475
  floatingipCommand.addCommand(deleteCommand);
11249
11476
  program.addCommand(floatingipCommand);
11250
- var loadbalancerCommand = new import_commander57.Command("loadbalancer").description("Load Balancer\xB7IP ACL \uC870\uD68C\xB7\uAD00\uB9AC").addHelpText("after", loadbalancerAgentWorkflow);
11477
+ var loadbalancerCommand = new import_commander60.Command("loadbalancer").description("Load Balancer\xB7IP ACL \uC870\uD68C\xB7\uAD00\uB9AC").addHelpText("after", loadbalancerAgentWorkflow);
11251
11478
  loadbalancerCommand.addCommand(listCommand14);
11252
11479
  loadbalancerCommand.addCommand(getCommand9);
11253
11480
  loadbalancerCommand.addCommand(ipaclCommand);
@@ -11255,25 +11482,25 @@ loadbalancerCommand.addCommand(setIpAclCommand2);
11255
11482
  loadbalancerCommand.addCommand(clearIpAclCommand);
11256
11483
  configureLoadBalancerHelp(loadbalancerCommand);
11257
11484
  program.addCommand(loadbalancerCommand);
11258
- var ncrCommand = new import_commander57.Command("ncr").description("NHN Container Registry \uAD00\uB828 \uBA85\uB839").addHelpText("after", ncrAgentWorkflow);
11485
+ var ncrCommand = new import_commander60.Command("ncr").description("NHN Container Registry \uAD00\uB828 \uBA85\uB839").addHelpText("after", ncrAgentWorkflow);
11259
11486
  ncrCommand.addCommand(listCommand5);
11260
11487
  ncrCommand.addCommand(getCommand3);
11261
11488
  ncrCommand.addCommand(imagesCommand2);
11262
11489
  ncrCommand.addCommand(tagsCommand);
11263
11490
  program.addCommand(ncrCommand);
11264
- var nksCommand = new import_commander57.Command("nks").description("NHN Kubernetes Service \uAD00\uB828 \uBA85\uB839").addHelpText("after", nksAgentWorkflow);
11491
+ var nksCommand = new import_commander60.Command("nks").description("NHN Kubernetes Service \uAD00\uB828 \uBA85\uB839").addHelpText("after", nksAgentWorkflow);
11265
11492
  nksCommand.addCommand(supportsCommand);
11266
11493
  nksCommand.addCommand(clusterCommand);
11267
11494
  nksCommand.addCommand(nodegroupCommand);
11268
11495
  nksCommand.addCommand(addonTypeCommand);
11269
11496
  nksCommand.addCommand(addonCommand);
11270
11497
  program.addCommand(nksCommand);
11271
- var ncsCommand = new import_commander57.Command("ncs").description("NHN Container Service \uAD00\uB828 \uBA85\uB839").addHelpText("after", ncsAgentWorkflow);
11498
+ var ncsCommand = new import_commander60.Command("ncs").description("NHN Container Service \uAD00\uB828 \uBA85\uB839").addHelpText("after", ncsAgentWorkflow);
11272
11499
  ncsCommand.addCommand(templateCommand);
11273
11500
  ncsCommand.addCommand(workloadCommand);
11274
11501
  ncsCommand.addCommand(malwareCommand);
11275
11502
  program.addCommand(ncsCommand);
11276
- var apiGatewayCommand = new import_commander57.Command("apigateway").description("NHN API Gateway \uC870\uD68C \uBA85\uB839");
11503
+ var apiGatewayCommand = new import_commander60.Command("apigateway").description("NHN API Gateway \uC870\uD68C \uBA85\uB839");
11277
11504
  apiGatewayCommand.addCommand(serviceCommand);
11278
11505
  apiGatewayCommand.addCommand(resourceCommand);
11279
11506
  apiGatewayCommand.addCommand(stageCommand);
@@ -11281,7 +11508,11 @@ program.addCommand(apiGatewayCommand);
11281
11508
  program.addCommand(skillsCommand);
11282
11509
  program.addCommand(doctorCommand);
11283
11510
  program.addCommand(createCommandsCommand(program));
11511
+ configureCommanderExitCodes(program);
11284
11512
  program.parseAsync().catch((err) => {
11513
+ if (err instanceof import_commander60.CommanderError) {
11514
+ process.exit(err.exitCode);
11515
+ }
11285
11516
  const message = sanitizeMultilineForTerminal(
11286
11517
  err instanceof Error ? err.message : String(err)
11287
11518
  );