@rhseung/ps-cli 1.3.3 → 1.4.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/chunk-7MQMPJ3X.js +88 -0
- package/dist/{chunk-PNIGP6LX.js → chunk-7SVCS23X.js} +392 -96
- package/dist/{chunk-2E4VSP6O.js → chunk-NB4OIWND.js} +139 -139
- package/dist/{chunk-EIFFWFLS.js → chunk-OJZLQ6FK.js} +1 -1
- package/dist/chunk-QGMWUOJ3.js +23 -0
- package/dist/commands/config.js +298 -262
- package/dist/commands/fetch.js +262 -254
- package/dist/commands/init.js +138 -101
- package/dist/commands/open.js +74 -78
- package/dist/commands/run.js +99 -98
- package/dist/commands/stats.js +71 -65
- package/dist/commands/submit.js +112 -126
- package/dist/commands/test.js +203 -203
- package/dist/index.js +7 -6
- package/package.json +16 -6
- package/dist/chunk-6ENX5K3C.js +0 -84
- package/dist/chunk-FYS2JH42.js +0 -31
- package/dist/chunk-TQXMB7XV.js +0 -52
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
__commonJS,
|
|
4
|
-
__toESM
|
|
5
|
-
|
|
4
|
+
__toESM,
|
|
5
|
+
detectLanguageFromFile,
|
|
6
|
+
getSupportedLanguages,
|
|
7
|
+
getSupportedLanguagesString
|
|
8
|
+
} from "./chunk-7MQMPJ3X.js";
|
|
6
9
|
|
|
7
10
|
// node_modules/ajv/dist/compile/codegen/code.js
|
|
8
11
|
var require_code = __commonJS({
|
|
@@ -6728,9 +6731,9 @@ var require_dist = __commonJS({
|
|
|
6728
6731
|
}
|
|
6729
6732
|
});
|
|
6730
6733
|
|
|
6731
|
-
// node_modules/semver/internal/constants.js
|
|
6734
|
+
// node_modules/conf/node_modules/semver/internal/constants.js
|
|
6732
6735
|
var require_constants = __commonJS({
|
|
6733
|
-
"node_modules/semver/internal/constants.js"(exports, module) {
|
|
6736
|
+
"node_modules/conf/node_modules/semver/internal/constants.js"(exports, module) {
|
|
6734
6737
|
"use strict";
|
|
6735
6738
|
var SEMVER_SPEC_VERSION = "2.0.0";
|
|
6736
6739
|
var MAX_LENGTH = 256;
|
|
@@ -6760,9 +6763,9 @@ var require_constants = __commonJS({
|
|
|
6760
6763
|
}
|
|
6761
6764
|
});
|
|
6762
6765
|
|
|
6763
|
-
// node_modules/semver/internal/debug.js
|
|
6766
|
+
// node_modules/conf/node_modules/semver/internal/debug.js
|
|
6764
6767
|
var require_debug = __commonJS({
|
|
6765
|
-
"node_modules/semver/internal/debug.js"(exports, module) {
|
|
6768
|
+
"node_modules/conf/node_modules/semver/internal/debug.js"(exports, module) {
|
|
6766
6769
|
"use strict";
|
|
6767
6770
|
var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
|
|
6768
6771
|
};
|
|
@@ -6770,9 +6773,9 @@ var require_debug = __commonJS({
|
|
|
6770
6773
|
}
|
|
6771
6774
|
});
|
|
6772
6775
|
|
|
6773
|
-
// node_modules/semver/internal/re.js
|
|
6776
|
+
// node_modules/conf/node_modules/semver/internal/re.js
|
|
6774
6777
|
var require_re = __commonJS({
|
|
6775
|
-
"node_modules/semver/internal/re.js"(exports, module) {
|
|
6778
|
+
"node_modules/conf/node_modules/semver/internal/re.js"(exports, module) {
|
|
6776
6779
|
"use strict";
|
|
6777
6780
|
var {
|
|
6778
6781
|
MAX_SAFE_COMPONENT_LENGTH,
|
|
@@ -6858,9 +6861,9 @@ var require_re = __commonJS({
|
|
|
6858
6861
|
}
|
|
6859
6862
|
});
|
|
6860
6863
|
|
|
6861
|
-
// node_modules/semver/internal/parse-options.js
|
|
6864
|
+
// node_modules/conf/node_modules/semver/internal/parse-options.js
|
|
6862
6865
|
var require_parse_options = __commonJS({
|
|
6863
|
-
"node_modules/semver/internal/parse-options.js"(exports, module) {
|
|
6866
|
+
"node_modules/conf/node_modules/semver/internal/parse-options.js"(exports, module) {
|
|
6864
6867
|
"use strict";
|
|
6865
6868
|
var looseOption = Object.freeze({ loose: true });
|
|
6866
6869
|
var emptyOpts = Object.freeze({});
|
|
@@ -6877,9 +6880,9 @@ var require_parse_options = __commonJS({
|
|
|
6877
6880
|
}
|
|
6878
6881
|
});
|
|
6879
6882
|
|
|
6880
|
-
// node_modules/semver/internal/identifiers.js
|
|
6883
|
+
// node_modules/conf/node_modules/semver/internal/identifiers.js
|
|
6881
6884
|
var require_identifiers = __commonJS({
|
|
6882
|
-
"node_modules/semver/internal/identifiers.js"(exports, module) {
|
|
6885
|
+
"node_modules/conf/node_modules/semver/internal/identifiers.js"(exports, module) {
|
|
6883
6886
|
"use strict";
|
|
6884
6887
|
var numeric = /^[0-9]+$/;
|
|
6885
6888
|
var compareIdentifiers = (a, b) => {
|
|
@@ -6902,9 +6905,9 @@ var require_identifiers = __commonJS({
|
|
|
6902
6905
|
}
|
|
6903
6906
|
});
|
|
6904
6907
|
|
|
6905
|
-
// node_modules/semver/classes/semver.js
|
|
6908
|
+
// node_modules/conf/node_modules/semver/classes/semver.js
|
|
6906
6909
|
var require_semver = __commonJS({
|
|
6907
|
-
"node_modules/semver/classes/semver.js"(exports, module) {
|
|
6910
|
+
"node_modules/conf/node_modules/semver/classes/semver.js"(exports, module) {
|
|
6908
6911
|
"use strict";
|
|
6909
6912
|
var debug = require_debug();
|
|
6910
6913
|
var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
|
|
@@ -7181,9 +7184,9 @@ var require_semver = __commonJS({
|
|
|
7181
7184
|
}
|
|
7182
7185
|
});
|
|
7183
7186
|
|
|
7184
|
-
// node_modules/semver/functions/parse.js
|
|
7187
|
+
// node_modules/conf/node_modules/semver/functions/parse.js
|
|
7185
7188
|
var require_parse = __commonJS({
|
|
7186
|
-
"node_modules/semver/functions/parse.js"(exports, module) {
|
|
7189
|
+
"node_modules/conf/node_modules/semver/functions/parse.js"(exports, module) {
|
|
7187
7190
|
"use strict";
|
|
7188
7191
|
var SemVer = require_semver();
|
|
7189
7192
|
var parse = (version, options, throwErrors = false) => {
|
|
@@ -7203,9 +7206,9 @@ var require_parse = __commonJS({
|
|
|
7203
7206
|
}
|
|
7204
7207
|
});
|
|
7205
7208
|
|
|
7206
|
-
// node_modules/semver/functions/valid.js
|
|
7209
|
+
// node_modules/conf/node_modules/semver/functions/valid.js
|
|
7207
7210
|
var require_valid = __commonJS({
|
|
7208
|
-
"node_modules/semver/functions/valid.js"(exports, module) {
|
|
7211
|
+
"node_modules/conf/node_modules/semver/functions/valid.js"(exports, module) {
|
|
7209
7212
|
"use strict";
|
|
7210
7213
|
var parse = require_parse();
|
|
7211
7214
|
var valid = (version, options) => {
|
|
@@ -7216,9 +7219,9 @@ var require_valid = __commonJS({
|
|
|
7216
7219
|
}
|
|
7217
7220
|
});
|
|
7218
7221
|
|
|
7219
|
-
// node_modules/semver/functions/clean.js
|
|
7222
|
+
// node_modules/conf/node_modules/semver/functions/clean.js
|
|
7220
7223
|
var require_clean = __commonJS({
|
|
7221
|
-
"node_modules/semver/functions/clean.js"(exports, module) {
|
|
7224
|
+
"node_modules/conf/node_modules/semver/functions/clean.js"(exports, module) {
|
|
7222
7225
|
"use strict";
|
|
7223
7226
|
var parse = require_parse();
|
|
7224
7227
|
var clean = (version, options) => {
|
|
@@ -7229,9 +7232,9 @@ var require_clean = __commonJS({
|
|
|
7229
7232
|
}
|
|
7230
7233
|
});
|
|
7231
7234
|
|
|
7232
|
-
// node_modules/semver/functions/inc.js
|
|
7235
|
+
// node_modules/conf/node_modules/semver/functions/inc.js
|
|
7233
7236
|
var require_inc = __commonJS({
|
|
7234
|
-
"node_modules/semver/functions/inc.js"(exports, module) {
|
|
7237
|
+
"node_modules/conf/node_modules/semver/functions/inc.js"(exports, module) {
|
|
7235
7238
|
"use strict";
|
|
7236
7239
|
var SemVer = require_semver();
|
|
7237
7240
|
var inc = (version, release, options, identifier, identifierBase) => {
|
|
@@ -7253,9 +7256,9 @@ var require_inc = __commonJS({
|
|
|
7253
7256
|
}
|
|
7254
7257
|
});
|
|
7255
7258
|
|
|
7256
|
-
// node_modules/semver/functions/diff.js
|
|
7259
|
+
// node_modules/conf/node_modules/semver/functions/diff.js
|
|
7257
7260
|
var require_diff = __commonJS({
|
|
7258
|
-
"node_modules/semver/functions/diff.js"(exports, module) {
|
|
7261
|
+
"node_modules/conf/node_modules/semver/functions/diff.js"(exports, module) {
|
|
7259
7262
|
"use strict";
|
|
7260
7263
|
var parse = require_parse();
|
|
7261
7264
|
var diff = (version1, version2) => {
|
|
@@ -7297,9 +7300,9 @@ var require_diff = __commonJS({
|
|
|
7297
7300
|
}
|
|
7298
7301
|
});
|
|
7299
7302
|
|
|
7300
|
-
// node_modules/semver/functions/major.js
|
|
7303
|
+
// node_modules/conf/node_modules/semver/functions/major.js
|
|
7301
7304
|
var require_major = __commonJS({
|
|
7302
|
-
"node_modules/semver/functions/major.js"(exports, module) {
|
|
7305
|
+
"node_modules/conf/node_modules/semver/functions/major.js"(exports, module) {
|
|
7303
7306
|
"use strict";
|
|
7304
7307
|
var SemVer = require_semver();
|
|
7305
7308
|
var major = (a, loose) => new SemVer(a, loose).major;
|
|
@@ -7307,9 +7310,9 @@ var require_major = __commonJS({
|
|
|
7307
7310
|
}
|
|
7308
7311
|
});
|
|
7309
7312
|
|
|
7310
|
-
// node_modules/semver/functions/minor.js
|
|
7313
|
+
// node_modules/conf/node_modules/semver/functions/minor.js
|
|
7311
7314
|
var require_minor = __commonJS({
|
|
7312
|
-
"node_modules/semver/functions/minor.js"(exports, module) {
|
|
7315
|
+
"node_modules/conf/node_modules/semver/functions/minor.js"(exports, module) {
|
|
7313
7316
|
"use strict";
|
|
7314
7317
|
var SemVer = require_semver();
|
|
7315
7318
|
var minor = (a, loose) => new SemVer(a, loose).minor;
|
|
@@ -7317,9 +7320,9 @@ var require_minor = __commonJS({
|
|
|
7317
7320
|
}
|
|
7318
7321
|
});
|
|
7319
7322
|
|
|
7320
|
-
// node_modules/semver/functions/patch.js
|
|
7323
|
+
// node_modules/conf/node_modules/semver/functions/patch.js
|
|
7321
7324
|
var require_patch = __commonJS({
|
|
7322
|
-
"node_modules/semver/functions/patch.js"(exports, module) {
|
|
7325
|
+
"node_modules/conf/node_modules/semver/functions/patch.js"(exports, module) {
|
|
7323
7326
|
"use strict";
|
|
7324
7327
|
var SemVer = require_semver();
|
|
7325
7328
|
var patch = (a, loose) => new SemVer(a, loose).patch;
|
|
@@ -7327,9 +7330,9 @@ var require_patch = __commonJS({
|
|
|
7327
7330
|
}
|
|
7328
7331
|
});
|
|
7329
7332
|
|
|
7330
|
-
// node_modules/semver/functions/prerelease.js
|
|
7333
|
+
// node_modules/conf/node_modules/semver/functions/prerelease.js
|
|
7331
7334
|
var require_prerelease = __commonJS({
|
|
7332
|
-
"node_modules/semver/functions/prerelease.js"(exports, module) {
|
|
7335
|
+
"node_modules/conf/node_modules/semver/functions/prerelease.js"(exports, module) {
|
|
7333
7336
|
"use strict";
|
|
7334
7337
|
var parse = require_parse();
|
|
7335
7338
|
var prerelease = (version, options) => {
|
|
@@ -7340,9 +7343,9 @@ var require_prerelease = __commonJS({
|
|
|
7340
7343
|
}
|
|
7341
7344
|
});
|
|
7342
7345
|
|
|
7343
|
-
// node_modules/semver/functions/compare.js
|
|
7346
|
+
// node_modules/conf/node_modules/semver/functions/compare.js
|
|
7344
7347
|
var require_compare = __commonJS({
|
|
7345
|
-
"node_modules/semver/functions/compare.js"(exports, module) {
|
|
7348
|
+
"node_modules/conf/node_modules/semver/functions/compare.js"(exports, module) {
|
|
7346
7349
|
"use strict";
|
|
7347
7350
|
var SemVer = require_semver();
|
|
7348
7351
|
var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
|
|
@@ -7350,9 +7353,9 @@ var require_compare = __commonJS({
|
|
|
7350
7353
|
}
|
|
7351
7354
|
});
|
|
7352
7355
|
|
|
7353
|
-
// node_modules/semver/functions/rcompare.js
|
|
7356
|
+
// node_modules/conf/node_modules/semver/functions/rcompare.js
|
|
7354
7357
|
var require_rcompare = __commonJS({
|
|
7355
|
-
"node_modules/semver/functions/rcompare.js"(exports, module) {
|
|
7358
|
+
"node_modules/conf/node_modules/semver/functions/rcompare.js"(exports, module) {
|
|
7356
7359
|
"use strict";
|
|
7357
7360
|
var compare = require_compare();
|
|
7358
7361
|
var rcompare = (a, b, loose) => compare(b, a, loose);
|
|
@@ -7360,9 +7363,9 @@ var require_rcompare = __commonJS({
|
|
|
7360
7363
|
}
|
|
7361
7364
|
});
|
|
7362
7365
|
|
|
7363
|
-
// node_modules/semver/functions/compare-loose.js
|
|
7366
|
+
// node_modules/conf/node_modules/semver/functions/compare-loose.js
|
|
7364
7367
|
var require_compare_loose = __commonJS({
|
|
7365
|
-
"node_modules/semver/functions/compare-loose.js"(exports, module) {
|
|
7368
|
+
"node_modules/conf/node_modules/semver/functions/compare-loose.js"(exports, module) {
|
|
7366
7369
|
"use strict";
|
|
7367
7370
|
var compare = require_compare();
|
|
7368
7371
|
var compareLoose = (a, b) => compare(a, b, true);
|
|
@@ -7370,9 +7373,9 @@ var require_compare_loose = __commonJS({
|
|
|
7370
7373
|
}
|
|
7371
7374
|
});
|
|
7372
7375
|
|
|
7373
|
-
// node_modules/semver/functions/compare-build.js
|
|
7376
|
+
// node_modules/conf/node_modules/semver/functions/compare-build.js
|
|
7374
7377
|
var require_compare_build = __commonJS({
|
|
7375
|
-
"node_modules/semver/functions/compare-build.js"(exports, module) {
|
|
7378
|
+
"node_modules/conf/node_modules/semver/functions/compare-build.js"(exports, module) {
|
|
7376
7379
|
"use strict";
|
|
7377
7380
|
var SemVer = require_semver();
|
|
7378
7381
|
var compareBuild = (a, b, loose) => {
|
|
@@ -7384,9 +7387,9 @@ var require_compare_build = __commonJS({
|
|
|
7384
7387
|
}
|
|
7385
7388
|
});
|
|
7386
7389
|
|
|
7387
|
-
// node_modules/semver/functions/sort.js
|
|
7390
|
+
// node_modules/conf/node_modules/semver/functions/sort.js
|
|
7388
7391
|
var require_sort = __commonJS({
|
|
7389
|
-
"node_modules/semver/functions/sort.js"(exports, module) {
|
|
7392
|
+
"node_modules/conf/node_modules/semver/functions/sort.js"(exports, module) {
|
|
7390
7393
|
"use strict";
|
|
7391
7394
|
var compareBuild = require_compare_build();
|
|
7392
7395
|
var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
|
|
@@ -7394,9 +7397,9 @@ var require_sort = __commonJS({
|
|
|
7394
7397
|
}
|
|
7395
7398
|
});
|
|
7396
7399
|
|
|
7397
|
-
// node_modules/semver/functions/rsort.js
|
|
7400
|
+
// node_modules/conf/node_modules/semver/functions/rsort.js
|
|
7398
7401
|
var require_rsort = __commonJS({
|
|
7399
|
-
"node_modules/semver/functions/rsort.js"(exports, module) {
|
|
7402
|
+
"node_modules/conf/node_modules/semver/functions/rsort.js"(exports, module) {
|
|
7400
7403
|
"use strict";
|
|
7401
7404
|
var compareBuild = require_compare_build();
|
|
7402
7405
|
var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
|
|
@@ -7404,9 +7407,9 @@ var require_rsort = __commonJS({
|
|
|
7404
7407
|
}
|
|
7405
7408
|
});
|
|
7406
7409
|
|
|
7407
|
-
// node_modules/semver/functions/gt.js
|
|
7410
|
+
// node_modules/conf/node_modules/semver/functions/gt.js
|
|
7408
7411
|
var require_gt = __commonJS({
|
|
7409
|
-
"node_modules/semver/functions/gt.js"(exports, module) {
|
|
7412
|
+
"node_modules/conf/node_modules/semver/functions/gt.js"(exports, module) {
|
|
7410
7413
|
"use strict";
|
|
7411
7414
|
var compare = require_compare();
|
|
7412
7415
|
var gt = (a, b, loose) => compare(a, b, loose) > 0;
|
|
@@ -7414,9 +7417,9 @@ var require_gt = __commonJS({
|
|
|
7414
7417
|
}
|
|
7415
7418
|
});
|
|
7416
7419
|
|
|
7417
|
-
// node_modules/semver/functions/lt.js
|
|
7420
|
+
// node_modules/conf/node_modules/semver/functions/lt.js
|
|
7418
7421
|
var require_lt = __commonJS({
|
|
7419
|
-
"node_modules/semver/functions/lt.js"(exports, module) {
|
|
7422
|
+
"node_modules/conf/node_modules/semver/functions/lt.js"(exports, module) {
|
|
7420
7423
|
"use strict";
|
|
7421
7424
|
var compare = require_compare();
|
|
7422
7425
|
var lt = (a, b, loose) => compare(a, b, loose) < 0;
|
|
@@ -7424,9 +7427,9 @@ var require_lt = __commonJS({
|
|
|
7424
7427
|
}
|
|
7425
7428
|
});
|
|
7426
7429
|
|
|
7427
|
-
// node_modules/semver/functions/eq.js
|
|
7430
|
+
// node_modules/conf/node_modules/semver/functions/eq.js
|
|
7428
7431
|
var require_eq = __commonJS({
|
|
7429
|
-
"node_modules/semver/functions/eq.js"(exports, module) {
|
|
7432
|
+
"node_modules/conf/node_modules/semver/functions/eq.js"(exports, module) {
|
|
7430
7433
|
"use strict";
|
|
7431
7434
|
var compare = require_compare();
|
|
7432
7435
|
var eq = (a, b, loose) => compare(a, b, loose) === 0;
|
|
@@ -7434,9 +7437,9 @@ var require_eq = __commonJS({
|
|
|
7434
7437
|
}
|
|
7435
7438
|
});
|
|
7436
7439
|
|
|
7437
|
-
// node_modules/semver/functions/neq.js
|
|
7440
|
+
// node_modules/conf/node_modules/semver/functions/neq.js
|
|
7438
7441
|
var require_neq = __commonJS({
|
|
7439
|
-
"node_modules/semver/functions/neq.js"(exports, module) {
|
|
7442
|
+
"node_modules/conf/node_modules/semver/functions/neq.js"(exports, module) {
|
|
7440
7443
|
"use strict";
|
|
7441
7444
|
var compare = require_compare();
|
|
7442
7445
|
var neq = (a, b, loose) => compare(a, b, loose) !== 0;
|
|
@@ -7444,9 +7447,9 @@ var require_neq = __commonJS({
|
|
|
7444
7447
|
}
|
|
7445
7448
|
});
|
|
7446
7449
|
|
|
7447
|
-
// node_modules/semver/functions/gte.js
|
|
7450
|
+
// node_modules/conf/node_modules/semver/functions/gte.js
|
|
7448
7451
|
var require_gte = __commonJS({
|
|
7449
|
-
"node_modules/semver/functions/gte.js"(exports, module) {
|
|
7452
|
+
"node_modules/conf/node_modules/semver/functions/gte.js"(exports, module) {
|
|
7450
7453
|
"use strict";
|
|
7451
7454
|
var compare = require_compare();
|
|
7452
7455
|
var gte = (a, b, loose) => compare(a, b, loose) >= 0;
|
|
@@ -7454,9 +7457,9 @@ var require_gte = __commonJS({
|
|
|
7454
7457
|
}
|
|
7455
7458
|
});
|
|
7456
7459
|
|
|
7457
|
-
// node_modules/semver/functions/lte.js
|
|
7460
|
+
// node_modules/conf/node_modules/semver/functions/lte.js
|
|
7458
7461
|
var require_lte = __commonJS({
|
|
7459
|
-
"node_modules/semver/functions/lte.js"(exports, module) {
|
|
7462
|
+
"node_modules/conf/node_modules/semver/functions/lte.js"(exports, module) {
|
|
7460
7463
|
"use strict";
|
|
7461
7464
|
var compare = require_compare();
|
|
7462
7465
|
var lte = (a, b, loose) => compare(a, b, loose) <= 0;
|
|
@@ -7464,9 +7467,9 @@ var require_lte = __commonJS({
|
|
|
7464
7467
|
}
|
|
7465
7468
|
});
|
|
7466
7469
|
|
|
7467
|
-
// node_modules/semver/functions/cmp.js
|
|
7470
|
+
// node_modules/conf/node_modules/semver/functions/cmp.js
|
|
7468
7471
|
var require_cmp = __commonJS({
|
|
7469
|
-
"node_modules/semver/functions/cmp.js"(exports, module) {
|
|
7472
|
+
"node_modules/conf/node_modules/semver/functions/cmp.js"(exports, module) {
|
|
7470
7473
|
"use strict";
|
|
7471
7474
|
var eq = require_eq();
|
|
7472
7475
|
var neq = require_neq();
|
|
@@ -7514,9 +7517,9 @@ var require_cmp = __commonJS({
|
|
|
7514
7517
|
}
|
|
7515
7518
|
});
|
|
7516
7519
|
|
|
7517
|
-
// node_modules/semver/functions/coerce.js
|
|
7520
|
+
// node_modules/conf/node_modules/semver/functions/coerce.js
|
|
7518
7521
|
var require_coerce = __commonJS({
|
|
7519
|
-
"node_modules/semver/functions/coerce.js"(exports, module) {
|
|
7522
|
+
"node_modules/conf/node_modules/semver/functions/coerce.js"(exports, module) {
|
|
7520
7523
|
"use strict";
|
|
7521
7524
|
var SemVer = require_semver();
|
|
7522
7525
|
var parse = require_parse();
|
|
@@ -7560,9 +7563,9 @@ var require_coerce = __commonJS({
|
|
|
7560
7563
|
}
|
|
7561
7564
|
});
|
|
7562
7565
|
|
|
7563
|
-
// node_modules/semver/internal/lrucache.js
|
|
7566
|
+
// node_modules/conf/node_modules/semver/internal/lrucache.js
|
|
7564
7567
|
var require_lrucache = __commonJS({
|
|
7565
|
-
"node_modules/semver/internal/lrucache.js"(exports, module) {
|
|
7568
|
+
"node_modules/conf/node_modules/semver/internal/lrucache.js"(exports, module) {
|
|
7566
7569
|
"use strict";
|
|
7567
7570
|
var LRUCache = class {
|
|
7568
7571
|
constructor() {
|
|
@@ -7598,9 +7601,9 @@ var require_lrucache = __commonJS({
|
|
|
7598
7601
|
}
|
|
7599
7602
|
});
|
|
7600
7603
|
|
|
7601
|
-
// node_modules/semver/classes/range.js
|
|
7604
|
+
// node_modules/conf/node_modules/semver/classes/range.js
|
|
7602
7605
|
var require_range = __commonJS({
|
|
7603
|
-
"node_modules/semver/classes/range.js"(exports, module) {
|
|
7606
|
+
"node_modules/conf/node_modules/semver/classes/range.js"(exports, module) {
|
|
7604
7607
|
"use strict";
|
|
7605
7608
|
var SPACE_CHARACTERS = /\s+/g;
|
|
7606
7609
|
var Range = class _Range {
|
|
@@ -7975,9 +7978,9 @@ var require_range = __commonJS({
|
|
|
7975
7978
|
}
|
|
7976
7979
|
});
|
|
7977
7980
|
|
|
7978
|
-
// node_modules/semver/classes/comparator.js
|
|
7981
|
+
// node_modules/conf/node_modules/semver/classes/comparator.js
|
|
7979
7982
|
var require_comparator = __commonJS({
|
|
7980
|
-
"node_modules/semver/classes/comparator.js"(exports, module) {
|
|
7983
|
+
"node_modules/conf/node_modules/semver/classes/comparator.js"(exports, module) {
|
|
7981
7984
|
"use strict";
|
|
7982
7985
|
var ANY = /* @__PURE__ */ Symbol("SemVer ANY");
|
|
7983
7986
|
var Comparator = class _Comparator {
|
|
@@ -8088,9 +8091,9 @@ var require_comparator = __commonJS({
|
|
|
8088
8091
|
}
|
|
8089
8092
|
});
|
|
8090
8093
|
|
|
8091
|
-
// node_modules/semver/functions/satisfies.js
|
|
8094
|
+
// node_modules/conf/node_modules/semver/functions/satisfies.js
|
|
8092
8095
|
var require_satisfies = __commonJS({
|
|
8093
|
-
"node_modules/semver/functions/satisfies.js"(exports, module) {
|
|
8096
|
+
"node_modules/conf/node_modules/semver/functions/satisfies.js"(exports, module) {
|
|
8094
8097
|
"use strict";
|
|
8095
8098
|
var Range = require_range();
|
|
8096
8099
|
var satisfies = (version, range, options) => {
|
|
@@ -8105,9 +8108,9 @@ var require_satisfies = __commonJS({
|
|
|
8105
8108
|
}
|
|
8106
8109
|
});
|
|
8107
8110
|
|
|
8108
|
-
// node_modules/semver/ranges/to-comparators.js
|
|
8111
|
+
// node_modules/conf/node_modules/semver/ranges/to-comparators.js
|
|
8109
8112
|
var require_to_comparators = __commonJS({
|
|
8110
|
-
"node_modules/semver/ranges/to-comparators.js"(exports, module) {
|
|
8113
|
+
"node_modules/conf/node_modules/semver/ranges/to-comparators.js"(exports, module) {
|
|
8111
8114
|
"use strict";
|
|
8112
8115
|
var Range = require_range();
|
|
8113
8116
|
var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
|
|
@@ -8115,9 +8118,9 @@ var require_to_comparators = __commonJS({
|
|
|
8115
8118
|
}
|
|
8116
8119
|
});
|
|
8117
8120
|
|
|
8118
|
-
// node_modules/semver/ranges/max-satisfying.js
|
|
8121
|
+
// node_modules/conf/node_modules/semver/ranges/max-satisfying.js
|
|
8119
8122
|
var require_max_satisfying = __commonJS({
|
|
8120
|
-
"node_modules/semver/ranges/max-satisfying.js"(exports, module) {
|
|
8123
|
+
"node_modules/conf/node_modules/semver/ranges/max-satisfying.js"(exports, module) {
|
|
8121
8124
|
"use strict";
|
|
8122
8125
|
var SemVer = require_semver();
|
|
8123
8126
|
var Range = require_range();
|
|
@@ -8144,9 +8147,9 @@ var require_max_satisfying = __commonJS({
|
|
|
8144
8147
|
}
|
|
8145
8148
|
});
|
|
8146
8149
|
|
|
8147
|
-
// node_modules/semver/ranges/min-satisfying.js
|
|
8150
|
+
// node_modules/conf/node_modules/semver/ranges/min-satisfying.js
|
|
8148
8151
|
var require_min_satisfying = __commonJS({
|
|
8149
|
-
"node_modules/semver/ranges/min-satisfying.js"(exports, module) {
|
|
8152
|
+
"node_modules/conf/node_modules/semver/ranges/min-satisfying.js"(exports, module) {
|
|
8150
8153
|
"use strict";
|
|
8151
8154
|
var SemVer = require_semver();
|
|
8152
8155
|
var Range = require_range();
|
|
@@ -8173,9 +8176,9 @@ var require_min_satisfying = __commonJS({
|
|
|
8173
8176
|
}
|
|
8174
8177
|
});
|
|
8175
8178
|
|
|
8176
|
-
// node_modules/semver/ranges/min-version.js
|
|
8179
|
+
// node_modules/conf/node_modules/semver/ranges/min-version.js
|
|
8177
8180
|
var require_min_version = __commonJS({
|
|
8178
|
-
"node_modules/semver/ranges/min-version.js"(exports, module) {
|
|
8181
|
+
"node_modules/conf/node_modules/semver/ranges/min-version.js"(exports, module) {
|
|
8179
8182
|
"use strict";
|
|
8180
8183
|
var SemVer = require_semver();
|
|
8181
8184
|
var Range = require_range();
|
|
@@ -8232,9 +8235,9 @@ var require_min_version = __commonJS({
|
|
|
8232
8235
|
}
|
|
8233
8236
|
});
|
|
8234
8237
|
|
|
8235
|
-
// node_modules/semver/ranges/valid.js
|
|
8238
|
+
// node_modules/conf/node_modules/semver/ranges/valid.js
|
|
8236
8239
|
var require_valid2 = __commonJS({
|
|
8237
|
-
"node_modules/semver/ranges/valid.js"(exports, module) {
|
|
8240
|
+
"node_modules/conf/node_modules/semver/ranges/valid.js"(exports, module) {
|
|
8238
8241
|
"use strict";
|
|
8239
8242
|
var Range = require_range();
|
|
8240
8243
|
var validRange = (range, options) => {
|
|
@@ -8248,9 +8251,9 @@ var require_valid2 = __commonJS({
|
|
|
8248
8251
|
}
|
|
8249
8252
|
});
|
|
8250
8253
|
|
|
8251
|
-
// node_modules/semver/ranges/outside.js
|
|
8254
|
+
// node_modules/conf/node_modules/semver/ranges/outside.js
|
|
8252
8255
|
var require_outside = __commonJS({
|
|
8253
|
-
"node_modules/semver/ranges/outside.js"(exports, module) {
|
|
8256
|
+
"node_modules/conf/node_modules/semver/ranges/outside.js"(exports, module) {
|
|
8254
8257
|
"use strict";
|
|
8255
8258
|
var SemVer = require_semver();
|
|
8256
8259
|
var Comparator = require_comparator();
|
|
@@ -8317,9 +8320,9 @@ var require_outside = __commonJS({
|
|
|
8317
8320
|
}
|
|
8318
8321
|
});
|
|
8319
8322
|
|
|
8320
|
-
// node_modules/semver/ranges/gtr.js
|
|
8323
|
+
// node_modules/conf/node_modules/semver/ranges/gtr.js
|
|
8321
8324
|
var require_gtr = __commonJS({
|
|
8322
|
-
"node_modules/semver/ranges/gtr.js"(exports, module) {
|
|
8325
|
+
"node_modules/conf/node_modules/semver/ranges/gtr.js"(exports, module) {
|
|
8323
8326
|
"use strict";
|
|
8324
8327
|
var outside = require_outside();
|
|
8325
8328
|
var gtr = (version, range, options) => outside(version, range, ">", options);
|
|
@@ -8327,9 +8330,9 @@ var require_gtr = __commonJS({
|
|
|
8327
8330
|
}
|
|
8328
8331
|
});
|
|
8329
8332
|
|
|
8330
|
-
// node_modules/semver/ranges/ltr.js
|
|
8333
|
+
// node_modules/conf/node_modules/semver/ranges/ltr.js
|
|
8331
8334
|
var require_ltr = __commonJS({
|
|
8332
|
-
"node_modules/semver/ranges/ltr.js"(exports, module) {
|
|
8335
|
+
"node_modules/conf/node_modules/semver/ranges/ltr.js"(exports, module) {
|
|
8333
8336
|
"use strict";
|
|
8334
8337
|
var outside = require_outside();
|
|
8335
8338
|
var ltr = (version, range, options) => outside(version, range, "<", options);
|
|
@@ -8337,9 +8340,9 @@ var require_ltr = __commonJS({
|
|
|
8337
8340
|
}
|
|
8338
8341
|
});
|
|
8339
8342
|
|
|
8340
|
-
// node_modules/semver/ranges/intersects.js
|
|
8343
|
+
// node_modules/conf/node_modules/semver/ranges/intersects.js
|
|
8341
8344
|
var require_intersects = __commonJS({
|
|
8342
|
-
"node_modules/semver/ranges/intersects.js"(exports, module) {
|
|
8345
|
+
"node_modules/conf/node_modules/semver/ranges/intersects.js"(exports, module) {
|
|
8343
8346
|
"use strict";
|
|
8344
8347
|
var Range = require_range();
|
|
8345
8348
|
var intersects = (r1, r2, options) => {
|
|
@@ -8351,9 +8354,9 @@ var require_intersects = __commonJS({
|
|
|
8351
8354
|
}
|
|
8352
8355
|
});
|
|
8353
8356
|
|
|
8354
|
-
// node_modules/semver/ranges/simplify.js
|
|
8357
|
+
// node_modules/conf/node_modules/semver/ranges/simplify.js
|
|
8355
8358
|
var require_simplify = __commonJS({
|
|
8356
|
-
"node_modules/semver/ranges/simplify.js"(exports, module) {
|
|
8359
|
+
"node_modules/conf/node_modules/semver/ranges/simplify.js"(exports, module) {
|
|
8357
8360
|
"use strict";
|
|
8358
8361
|
var satisfies = require_satisfies();
|
|
8359
8362
|
var compare = require_compare();
|
|
@@ -8401,9 +8404,9 @@ var require_simplify = __commonJS({
|
|
|
8401
8404
|
}
|
|
8402
8405
|
});
|
|
8403
8406
|
|
|
8404
|
-
// node_modules/semver/ranges/subset.js
|
|
8407
|
+
// node_modules/conf/node_modules/semver/ranges/subset.js
|
|
8405
8408
|
var require_subset = __commonJS({
|
|
8406
|
-
"node_modules/semver/ranges/subset.js"(exports, module) {
|
|
8409
|
+
"node_modules/conf/node_modules/semver/ranges/subset.js"(exports, module) {
|
|
8407
8410
|
"use strict";
|
|
8408
8411
|
var Range = require_range();
|
|
8409
8412
|
var Comparator = require_comparator();
|
|
@@ -8563,9 +8566,9 @@ var require_subset = __commonJS({
|
|
|
8563
8566
|
}
|
|
8564
8567
|
});
|
|
8565
8568
|
|
|
8566
|
-
// node_modules/semver/index.js
|
|
8569
|
+
// node_modules/conf/node_modules/semver/index.js
|
|
8567
8570
|
var require_semver2 = __commonJS({
|
|
8568
|
-
"node_modules/semver/index.js"(exports, module) {
|
|
8571
|
+
"node_modules/conf/node_modules/semver/index.js"(exports, module) {
|
|
8569
8572
|
"use strict";
|
|
8570
8573
|
var internalRe = require_re();
|
|
8571
8574
|
var constants = require_constants();
|
|
@@ -8658,6 +8661,38 @@ var require_semver2 = __commonJS({
|
|
|
8658
8661
|
}
|
|
8659
8662
|
});
|
|
8660
8663
|
|
|
8664
|
+
// src/core/base-command.tsx
|
|
8665
|
+
import { render } from "ink";
|
|
8666
|
+
import { jsx } from "react/jsx-runtime";
|
|
8667
|
+
var Command = class {
|
|
8668
|
+
/**
|
|
8669
|
+
* 뷰 렌더링 헬퍼 메서드
|
|
8670
|
+
* React 컴포넌트를 렌더링하고 완료 시 정리합니다.
|
|
8671
|
+
* @param Component - 렌더링할 React 컴포넌트 (함수 컴포넌트 또는 클래스 필드로 정의된 화살표 함수)
|
|
8672
|
+
* @param props - 컴포넌트에 전달할 props (onComplete는 자동으로 추가됨)
|
|
8673
|
+
*/
|
|
8674
|
+
async renderView(Component, props) {
|
|
8675
|
+
return new Promise((resolve) => {
|
|
8676
|
+
const componentProps = {
|
|
8677
|
+
...props,
|
|
8678
|
+
onComplete: () => {
|
|
8679
|
+
resolve();
|
|
8680
|
+
}
|
|
8681
|
+
};
|
|
8682
|
+
const { unmount } = render(/* @__PURE__ */ jsx(Component, { ...componentProps }));
|
|
8683
|
+
const originalResolve = resolve;
|
|
8684
|
+
resolve = () => {
|
|
8685
|
+
unmount();
|
|
8686
|
+
originalResolve();
|
|
8687
|
+
};
|
|
8688
|
+
});
|
|
8689
|
+
}
|
|
8690
|
+
};
|
|
8691
|
+
|
|
8692
|
+
// src/utils/config.ts
|
|
8693
|
+
import { readFileSync, existsSync } from "fs";
|
|
8694
|
+
import { join, dirname } from "path";
|
|
8695
|
+
|
|
8661
8696
|
// node_modules/conf/dist/source/index.js
|
|
8662
8697
|
import { isDeepStrictEqual } from "util";
|
|
8663
8698
|
import process7 from "process";
|
|
@@ -9878,8 +9913,6 @@ var Conf = class {
|
|
|
9878
9913
|
};
|
|
9879
9914
|
|
|
9880
9915
|
// src/utils/config.ts
|
|
9881
|
-
import { readFileSync, existsSync } from "fs";
|
|
9882
|
-
import { join } from "path";
|
|
9883
9916
|
var config = new Conf({
|
|
9884
9917
|
projectName: "ps-cli",
|
|
9885
9918
|
defaults: {
|
|
@@ -9897,10 +9930,32 @@ var config = new Conf({
|
|
|
9897
9930
|
});
|
|
9898
9931
|
var projectConfigCache = null;
|
|
9899
9932
|
var projectConfigCachePath = null;
|
|
9933
|
+
function findProjectRoot(startDir = process.cwd()) {
|
|
9934
|
+
let currentDir = startDir;
|
|
9935
|
+
const rootPath = process.platform === "win32" ? currentDir.split("\\")[0] + "\\" : "/";
|
|
9936
|
+
while (currentDir !== rootPath) {
|
|
9937
|
+
const projectConfigPath = join(currentDir, ".ps-cli.json");
|
|
9938
|
+
if (existsSync(projectConfigPath)) {
|
|
9939
|
+
return currentDir;
|
|
9940
|
+
}
|
|
9941
|
+
const parentDir = dirname(currentDir);
|
|
9942
|
+
if (parentDir === currentDir) {
|
|
9943
|
+
break;
|
|
9944
|
+
}
|
|
9945
|
+
currentDir = parentDir;
|
|
9946
|
+
}
|
|
9947
|
+
return null;
|
|
9948
|
+
}
|
|
9900
9949
|
function getProjectConfigSync() {
|
|
9901
9950
|
try {
|
|
9902
9951
|
const cwd = process.cwd();
|
|
9903
|
-
const
|
|
9952
|
+
const projectRoot = findProjectRoot(cwd);
|
|
9953
|
+
if (!projectRoot) {
|
|
9954
|
+
projectConfigCache = null;
|
|
9955
|
+
projectConfigCachePath = null;
|
|
9956
|
+
return null;
|
|
9957
|
+
}
|
|
9958
|
+
const projectConfigPath = join(projectRoot, ".ps-cli.json");
|
|
9904
9959
|
if (projectConfigCache && projectConfigCachePath === projectConfigPath) {
|
|
9905
9960
|
return projectConfigCache;
|
|
9906
9961
|
}
|
|
@@ -9960,10 +10015,251 @@ function getProblemDir() {
|
|
|
9960
10015
|
return config.get("problemDir") ?? "problems";
|
|
9961
10016
|
}
|
|
9962
10017
|
|
|
10018
|
+
// src/utils/problem-id.ts
|
|
10019
|
+
import { join as join2 } from "path";
|
|
10020
|
+
function detectProblemIdFromPath(cwd = process.cwd()) {
|
|
10021
|
+
const problemDir = getProblemDir();
|
|
10022
|
+
const normalizedPath = cwd.replace(/\\/g, "/");
|
|
10023
|
+
if (problemDir === "." || problemDir === "") {
|
|
10024
|
+
const segments = normalizedPath.split("/").filter(Boolean);
|
|
10025
|
+
const lastSegment = segments[segments.length - 1];
|
|
10026
|
+
if (lastSegment) {
|
|
10027
|
+
const problemId2 = parseInt(lastSegment, 10);
|
|
10028
|
+
if (!isNaN(problemId2) && problemId2 > 0 && lastSegment === problemId2.toString()) {
|
|
10029
|
+
return problemId2;
|
|
10030
|
+
}
|
|
10031
|
+
}
|
|
10032
|
+
return null;
|
|
10033
|
+
}
|
|
10034
|
+
const dirPattern = `/${problemDir}/`;
|
|
10035
|
+
const dirIndex = normalizedPath.indexOf(dirPattern);
|
|
10036
|
+
if (dirIndex === -1) {
|
|
10037
|
+
return null;
|
|
10038
|
+
}
|
|
10039
|
+
const afterDir = normalizedPath.substring(dirIndex + dirPattern.length);
|
|
10040
|
+
if (!afterDir) {
|
|
10041
|
+
return null;
|
|
10042
|
+
}
|
|
10043
|
+
const firstSegment = afterDir.split("/")[0];
|
|
10044
|
+
if (!firstSegment) {
|
|
10045
|
+
return null;
|
|
10046
|
+
}
|
|
10047
|
+
const problemId = parseInt(firstSegment, 10);
|
|
10048
|
+
if (isNaN(problemId) || problemId <= 0) {
|
|
10049
|
+
return null;
|
|
10050
|
+
}
|
|
10051
|
+
if (firstSegment !== problemId.toString()) {
|
|
10052
|
+
return null;
|
|
10053
|
+
}
|
|
10054
|
+
return problemId;
|
|
10055
|
+
}
|
|
10056
|
+
function getProblemId(args, cwd = process.cwd()) {
|
|
10057
|
+
if (args.length > 0 && args[0]) {
|
|
10058
|
+
const problemId = parseInt(args[0], 10);
|
|
10059
|
+
if (!isNaN(problemId) && problemId > 0) {
|
|
10060
|
+
return problemId;
|
|
10061
|
+
}
|
|
10062
|
+
}
|
|
10063
|
+
return detectProblemIdFromPath(cwd);
|
|
10064
|
+
}
|
|
10065
|
+
function getProblemDirPath(problemId, cwd = process.cwd()) {
|
|
10066
|
+
const problemDir = getProblemDir();
|
|
10067
|
+
const projectRoot = findProjectRoot(cwd);
|
|
10068
|
+
const baseDir = projectRoot || cwd;
|
|
10069
|
+
if (problemDir === "." || problemDir === "") {
|
|
10070
|
+
return join2(baseDir, problemId.toString());
|
|
10071
|
+
}
|
|
10072
|
+
return join2(baseDir, problemDir, problemId.toString());
|
|
10073
|
+
}
|
|
10074
|
+
|
|
10075
|
+
// src/utils/execution-context.ts
|
|
10076
|
+
import { readdir } from "fs/promises";
|
|
10077
|
+
import { join as join3 } from "path";
|
|
10078
|
+
async function resolveProblemContext(args, options = {}) {
|
|
10079
|
+
const { requireId = false } = options;
|
|
10080
|
+
const currentPathProblemId = detectProblemIdFromPath(process.cwd());
|
|
10081
|
+
const problemId = getProblemId(args);
|
|
10082
|
+
if (requireId && problemId === null) {
|
|
10083
|
+
throw new Error(
|
|
10084
|
+
"\uBB38\uC81C \uBC88\uD638\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uBB38\uC81C \uBC88\uD638\uB97C \uC778\uC790\uB85C \uC804\uB2EC\uD558\uAC70\uB098 \uBB38\uC81C \uB514\uB809\uD1A0\uB9AC\uC5D0\uC11C \uC2E4\uD589\uD574\uC8FC\uC138\uC694."
|
|
10085
|
+
);
|
|
10086
|
+
}
|
|
10087
|
+
const isCurrentDir = problemId === null || problemId !== null && currentPathProblemId === problemId;
|
|
10088
|
+
const problemDir = problemId && !isCurrentDir ? getProblemDirPath(problemId) : process.cwd();
|
|
10089
|
+
return {
|
|
10090
|
+
problemId,
|
|
10091
|
+
problemDir,
|
|
10092
|
+
isCurrentDir
|
|
10093
|
+
};
|
|
10094
|
+
}
|
|
10095
|
+
async function resolveLanguage(problemDir, override) {
|
|
10096
|
+
if (override) {
|
|
10097
|
+
const validLanguages = getSupportedLanguages();
|
|
10098
|
+
if (!validLanguages.includes(override)) {
|
|
10099
|
+
throw new Error(
|
|
10100
|
+
`\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC5B8\uC5B4\uC785\uB2C8\uB2E4: ${override}
|
|
10101
|
+
\uC9C0\uC6D0 \uC5B8\uC5B4: ${validLanguages.join(
|
|
10102
|
+
", "
|
|
10103
|
+
)}`
|
|
10104
|
+
);
|
|
10105
|
+
}
|
|
10106
|
+
return override;
|
|
10107
|
+
}
|
|
10108
|
+
const solutionFilePath = await findSolutionFile(problemDir);
|
|
10109
|
+
const solutionFileName = solutionFilePath.split(/[/\\]/).pop() || "";
|
|
10110
|
+
const detectedLanguage = detectLanguageFromFile(solutionFileName);
|
|
10111
|
+
if (!detectedLanguage) {
|
|
10112
|
+
throw new Error(`\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC5B8\uC5B4\uC785\uB2C8\uB2E4: ${solutionFileName}`);
|
|
10113
|
+
}
|
|
10114
|
+
return detectedLanguage;
|
|
10115
|
+
}
|
|
10116
|
+
async function findSolutionFile(problemDir) {
|
|
10117
|
+
const files = await readdir(problemDir);
|
|
10118
|
+
const solutionFile = files.find((f) => f.startsWith("solution."));
|
|
10119
|
+
if (!solutionFile) {
|
|
10120
|
+
throw new Error("solution.* \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.");
|
|
10121
|
+
}
|
|
10122
|
+
return join3(problemDir, solutionFile);
|
|
10123
|
+
}
|
|
10124
|
+
|
|
10125
|
+
// src/core/command-builder.ts
|
|
10126
|
+
var commandMetadataMap = /* @__PURE__ */ new Map();
|
|
10127
|
+
function CommandDef(metadata) {
|
|
10128
|
+
return function(target) {
|
|
10129
|
+
commandMetadataMap.set(target, metadata);
|
|
10130
|
+
};
|
|
10131
|
+
}
|
|
10132
|
+
var CommandBuilder = class {
|
|
10133
|
+
/**
|
|
10134
|
+
* 메타데이터에서 CommandDefinition 생성
|
|
10135
|
+
*/
|
|
10136
|
+
static build(executeFn, metadata) {
|
|
10137
|
+
const fnMetadata = commandMetadataMap.get(
|
|
10138
|
+
executeFn
|
|
10139
|
+
);
|
|
10140
|
+
const finalMetadata = metadata || fnMetadata;
|
|
10141
|
+
if (!finalMetadata) {
|
|
10142
|
+
throw new Error(
|
|
10143
|
+
"Command \uBA54\uD0C0\uB370\uC774\uD130\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. @Command() \uB370\uCF54\uB808\uC774\uD130\uB97C \uC0AC\uC6A9\uD558\uAC70\uB098 metadata\uB97C \uC81C\uACF5\uD558\uC138\uC694."
|
|
10144
|
+
);
|
|
10145
|
+
}
|
|
10146
|
+
const help = this.generateHelp(finalMetadata);
|
|
10147
|
+
const wrappedExecute = async (args, flags) => {
|
|
10148
|
+
if (flags.help) {
|
|
10149
|
+
console.log(help.trim());
|
|
10150
|
+
process.exit(0);
|
|
10151
|
+
return;
|
|
10152
|
+
}
|
|
10153
|
+
if (finalMetadata.autoDetectProblemId !== false) {
|
|
10154
|
+
}
|
|
10155
|
+
if (finalMetadata.autoDetectLanguage && flags.language) {
|
|
10156
|
+
const validLanguages = getSupportedLanguages();
|
|
10157
|
+
const language = flags.language;
|
|
10158
|
+
if (!validLanguages.includes(language)) {
|
|
10159
|
+
console.error(
|
|
10160
|
+
`\uC624\uB958: \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC5B8\uC5B4\uC785\uB2C8\uB2E4. (${getSupportedLanguagesString()})`
|
|
10161
|
+
);
|
|
10162
|
+
process.exit(1);
|
|
10163
|
+
return;
|
|
10164
|
+
}
|
|
10165
|
+
}
|
|
10166
|
+
return executeFn(args, flags);
|
|
10167
|
+
};
|
|
10168
|
+
return {
|
|
10169
|
+
name: finalMetadata.name,
|
|
10170
|
+
help,
|
|
10171
|
+
execute: wrappedExecute
|
|
10172
|
+
};
|
|
10173
|
+
}
|
|
10174
|
+
/**
|
|
10175
|
+
* Help 문자열 생성
|
|
10176
|
+
*/
|
|
10177
|
+
static generateHelp(metadata) {
|
|
10178
|
+
const lines = [];
|
|
10179
|
+
lines.push(` \uC0AC\uC6A9\uBC95:`);
|
|
10180
|
+
lines.push(
|
|
10181
|
+
` $ ps ${metadata.name}${metadata.requireProblemId ? " <\uBB38\uC81C\uBC88\uD638>" : " [\uBB38\uC81C\uBC88\uD638]"} [\uC635\uC158]`
|
|
10182
|
+
);
|
|
10183
|
+
lines.push("");
|
|
10184
|
+
lines.push(` \uC124\uBA85:`);
|
|
10185
|
+
const descriptionLines = metadata.description.split("\n");
|
|
10186
|
+
for (const line of descriptionLines) {
|
|
10187
|
+
lines.push(` ${line}`);
|
|
10188
|
+
}
|
|
10189
|
+
lines.push("");
|
|
10190
|
+
if (metadata.flags && metadata.flags.length > 0) {
|
|
10191
|
+
lines.push(` \uC635\uC158:`);
|
|
10192
|
+
for (const flag of metadata.flags) {
|
|
10193
|
+
const flagLine = [];
|
|
10194
|
+
flagLine.push(` --${flag.name}`);
|
|
10195
|
+
if (flag.options?.shortFlag) {
|
|
10196
|
+
flagLine.push(`, -${flag.options.shortFlag}`);
|
|
10197
|
+
}
|
|
10198
|
+
if (flag.options?.description) {
|
|
10199
|
+
flagLine.push(` ${flag.options.description}`);
|
|
10200
|
+
}
|
|
10201
|
+
lines.push(flagLine.join(""));
|
|
10202
|
+
}
|
|
10203
|
+
lines.push("");
|
|
10204
|
+
}
|
|
10205
|
+
if (metadata.examples && metadata.examples.length > 0) {
|
|
10206
|
+
lines.push(` \uC608\uC81C:`);
|
|
10207
|
+
for (const example of metadata.examples) {
|
|
10208
|
+
lines.push(` $ ps ${example}`);
|
|
10209
|
+
}
|
|
10210
|
+
}
|
|
10211
|
+
return lines.join("\n");
|
|
10212
|
+
}
|
|
10213
|
+
/**
|
|
10214
|
+
* 간편한 Command 정의 헬퍼
|
|
10215
|
+
*/
|
|
10216
|
+
static define(name, description, execute, options) {
|
|
10217
|
+
const metadata = {
|
|
10218
|
+
name,
|
|
10219
|
+
description,
|
|
10220
|
+
flags: options?.flags,
|
|
10221
|
+
requireProblemId: options?.requireProblemId,
|
|
10222
|
+
autoDetectProblemId: options?.autoDetectProblemId ?? true,
|
|
10223
|
+
autoDetectLanguage: options?.autoDetectLanguage,
|
|
10224
|
+
examples: options?.examples
|
|
10225
|
+
};
|
|
10226
|
+
return this.build(execute, metadata);
|
|
10227
|
+
}
|
|
10228
|
+
/**
|
|
10229
|
+
* 클래스에서 CommandDefinition 생성
|
|
10230
|
+
* @Command() 데코레이터가 적용된 클래스에서 메타데이터를 읽어 CommandDefinition을 생성합니다.
|
|
10231
|
+
*/
|
|
10232
|
+
static fromClass(CommandClass) {
|
|
10233
|
+
const metadata = commandMetadataMap.get(CommandClass);
|
|
10234
|
+
if (!metadata) {
|
|
10235
|
+
throw new Error(
|
|
10236
|
+
`Command \uD074\uB798\uC2A4\uC5D0 @Command() \uB370\uCF54\uB808\uC774\uD130\uAC00 \uC801\uC6A9\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4: ${CommandClass.name}`
|
|
10237
|
+
);
|
|
10238
|
+
}
|
|
10239
|
+
const instance = new CommandClass();
|
|
10240
|
+
const execute = instance.execute.bind(instance);
|
|
10241
|
+
if (typeof execute !== "function") {
|
|
10242
|
+
throw new Error(
|
|
10243
|
+
`Command \uD074\uB798\uC2A4\uC5D0 execute \uBA54\uC11C\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4: ${CommandClass.name}`
|
|
10244
|
+
);
|
|
10245
|
+
}
|
|
10246
|
+
return this.build(execute, metadata);
|
|
10247
|
+
}
|
|
10248
|
+
};
|
|
10249
|
+
|
|
9963
10250
|
export {
|
|
10251
|
+
Command,
|
|
9964
10252
|
getDefaultLanguage,
|
|
9965
10253
|
getEditor,
|
|
9966
10254
|
getAutoOpenEditor,
|
|
9967
10255
|
getSolvedAcHandle,
|
|
9968
|
-
getProblemDir
|
|
10256
|
+
getProblemDir,
|
|
10257
|
+
detectProblemIdFromPath,
|
|
10258
|
+
getProblemId,
|
|
10259
|
+
getProblemDirPath,
|
|
10260
|
+
resolveProblemContext,
|
|
10261
|
+
resolveLanguage,
|
|
10262
|
+
findSolutionFile,
|
|
10263
|
+
CommandDef,
|
|
10264
|
+
CommandBuilder
|
|
9969
10265
|
};
|