api2cli 0.1.3 → 0.3.1
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 +57 -31
- package/package.json +17 -4
package/dist/index.js
CHANGED
|
@@ -5,21 +5,35 @@ var __getProtoOf = Object.getPrototypeOf;
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
6
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
function __accessProp(key) {
|
|
9
|
+
return this[key];
|
|
10
|
+
}
|
|
11
|
+
var __toESMCache_node;
|
|
12
|
+
var __toESMCache_esm;
|
|
8
13
|
var __toESM = (mod, isNodeMode, target) => {
|
|
14
|
+
var canCache = mod != null && typeof mod === "object";
|
|
15
|
+
if (canCache) {
|
|
16
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
17
|
+
var cached = cache.get(mod);
|
|
18
|
+
if (cached)
|
|
19
|
+
return cached;
|
|
20
|
+
}
|
|
9
21
|
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
10
22
|
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
11
23
|
for (let key of __getOwnPropNames(mod))
|
|
12
24
|
if (!__hasOwnProp.call(to, key))
|
|
13
25
|
__defProp(to, key, {
|
|
14
|
-
get: (
|
|
26
|
+
get: __accessProp.bind(mod, key),
|
|
15
27
|
enumerable: true
|
|
16
28
|
});
|
|
29
|
+
if (canCache)
|
|
30
|
+
cache.set(mod, to);
|
|
17
31
|
return to;
|
|
18
32
|
};
|
|
19
33
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
20
34
|
var __require = import.meta.require;
|
|
21
35
|
|
|
22
|
-
//
|
|
36
|
+
// node_modules/commander/lib/error.js
|
|
23
37
|
var require_error = __commonJS((exports) => {
|
|
24
38
|
class CommanderError extends Error {
|
|
25
39
|
constructor(exitCode, code, message) {
|
|
@@ -43,7 +57,7 @@ var require_error = __commonJS((exports) => {
|
|
|
43
57
|
exports.InvalidArgumentError = InvalidArgumentError;
|
|
44
58
|
});
|
|
45
59
|
|
|
46
|
-
//
|
|
60
|
+
// node_modules/commander/lib/argument.js
|
|
47
61
|
var require_argument = __commonJS((exports) => {
|
|
48
62
|
var { InvalidArgumentError } = require_error();
|
|
49
63
|
|
|
@@ -122,7 +136,7 @@ var require_argument = __commonJS((exports) => {
|
|
|
122
136
|
exports.humanReadableArgName = humanReadableArgName;
|
|
123
137
|
});
|
|
124
138
|
|
|
125
|
-
//
|
|
139
|
+
// node_modules/commander/lib/help.js
|
|
126
140
|
var require_help = __commonJS((exports) => {
|
|
127
141
|
var { humanReadableArgName } = require_argument();
|
|
128
142
|
|
|
@@ -472,7 +486,7 @@ ${itemIndentStr}`);
|
|
|
472
486
|
exports.stripColor = stripColor;
|
|
473
487
|
});
|
|
474
488
|
|
|
475
|
-
//
|
|
489
|
+
// node_modules/commander/lib/option.js
|
|
476
490
|
var require_option = __commonJS((exports) => {
|
|
477
491
|
var { InvalidArgumentError } = require_error();
|
|
478
492
|
|
|
@@ -650,7 +664,7 @@ var require_option = __commonJS((exports) => {
|
|
|
650
664
|
exports.DualOptions = DualOptions;
|
|
651
665
|
});
|
|
652
666
|
|
|
653
|
-
//
|
|
667
|
+
// node_modules/commander/lib/suggestSimilar.js
|
|
654
668
|
var require_suggestSimilar = __commonJS((exports) => {
|
|
655
669
|
var maxDistance = 3;
|
|
656
670
|
function editDistance(a, b) {
|
|
@@ -723,7 +737,7 @@ var require_suggestSimilar = __commonJS((exports) => {
|
|
|
723
737
|
exports.suggestSimilar = suggestSimilar;
|
|
724
738
|
});
|
|
725
739
|
|
|
726
|
-
//
|
|
740
|
+
// node_modules/commander/lib/command.js
|
|
727
741
|
var require_command = __commonJS((exports) => {
|
|
728
742
|
var EventEmitter = __require("events").EventEmitter;
|
|
729
743
|
var childProcess = __require("child_process");
|
|
@@ -965,8 +979,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
965
979
|
this._exitCallback = (err) => {
|
|
966
980
|
if (err.code !== "commander.executeSubCommandAsync") {
|
|
967
981
|
throw err;
|
|
968
|
-
} else {
|
|
969
|
-
}
|
|
982
|
+
} else {}
|
|
970
983
|
};
|
|
971
984
|
}
|
|
972
985
|
return this;
|
|
@@ -2034,7 +2047,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
2034
2047
|
exports.useColor = useColor;
|
|
2035
2048
|
});
|
|
2036
2049
|
|
|
2037
|
-
//
|
|
2050
|
+
// node_modules/commander/index.js
|
|
2038
2051
|
var require_commander = __commonJS((exports) => {
|
|
2039
2052
|
var { Argument } = require_argument();
|
|
2040
2053
|
var { Command } = require_command();
|
|
@@ -2054,7 +2067,7 @@ var require_commander = __commonJS((exports) => {
|
|
|
2054
2067
|
exports.InvalidOptionArgumentError = InvalidArgumentError;
|
|
2055
2068
|
});
|
|
2056
2069
|
|
|
2057
|
-
//
|
|
2070
|
+
// node_modules/picocolors/picocolors.js
|
|
2058
2071
|
var require_picocolors = __commonJS((exports, module) => {
|
|
2059
2072
|
var p = process || {};
|
|
2060
2073
|
var argv = p.argv || [];
|
|
@@ -2124,7 +2137,7 @@ var require_picocolors = __commonJS((exports, module) => {
|
|
|
2124
2137
|
module.exports.createColors = createColors;
|
|
2125
2138
|
});
|
|
2126
2139
|
|
|
2127
|
-
//
|
|
2140
|
+
// node_modules/commander/esm.mjs
|
|
2128
2141
|
var import__ = __toESM(require_commander(), 1);
|
|
2129
2142
|
var {
|
|
2130
2143
|
program,
|
|
@@ -2401,9 +2414,10 @@ import { existsSync as existsSync7, readdirSync as readdirSync4 } from "fs";
|
|
|
2401
2414
|
|
|
2402
2415
|
// src/lib/shell.ts
|
|
2403
2416
|
var import_picocolors5 = __toESM(require_picocolors(), 1);
|
|
2404
|
-
import { existsSync as existsSync6, readFileSync as readFileSync2, writeFileSync as writeFileSync2, appendFileSync } from "fs";
|
|
2417
|
+
import { existsSync as existsSync6, readFileSync as readFileSync2, writeFileSync as writeFileSync2, appendFileSync, symlinkSync, unlinkSync, chmodSync } from "fs";
|
|
2405
2418
|
import { homedir as homedir2 } from "os";
|
|
2406
2419
|
import { join as join6 } from "path";
|
|
2420
|
+
var BIN_DIR = join6(homedir2(), ".local", "bin");
|
|
2407
2421
|
var MARKER_START = "# >>> api2cli >>>";
|
|
2408
2422
|
var MARKER_END = "# <<< api2cli <<<";
|
|
2409
2423
|
function getShellRc() {
|
|
@@ -2417,14 +2431,12 @@ function getShellRc() {
|
|
|
2417
2431
|
return zshrc;
|
|
2418
2432
|
return join6(homedir2(), ".bashrc");
|
|
2419
2433
|
}
|
|
2420
|
-
function
|
|
2434
|
+
function ensureBinInPath() {
|
|
2421
2435
|
const rcFile = getShellRc();
|
|
2422
2436
|
const content = existsSync6(rcFile) ? readFileSync2(rcFile, "utf-8") : "";
|
|
2423
|
-
const exportLine = `export PATH="${
|
|
2424
|
-
if (content.includes(
|
|
2425
|
-
console.log(`${import_picocolors5.default.dim(app)} already in PATH`);
|
|
2437
|
+
const exportLine = `export PATH="${BIN_DIR}:$PATH"`;
|
|
2438
|
+
if (content.includes(BIN_DIR))
|
|
2426
2439
|
return;
|
|
2427
|
-
}
|
|
2428
2440
|
if (content.includes(MARKER_START)) {
|
|
2429
2441
|
const updated = content.replace(MARKER_END, `${exportLine}
|
|
2430
2442
|
${MARKER_END}`);
|
|
@@ -2436,22 +2448,36 @@ ${exportLine}
|
|
|
2436
2448
|
${MARKER_END}
|
|
2437
2449
|
`);
|
|
2438
2450
|
}
|
|
2439
|
-
console.log(`${import_picocolors5.default.green("+")} Added ${import_picocolors5.default.bold(app)} to PATH in ${import_picocolors5.default.dim(rcFile)}`);
|
|
2440
|
-
console.log(` Run: ${import_picocolors5.default.cyan(`source ${rcFile}`)}`);
|
|
2441
2451
|
}
|
|
2442
|
-
function
|
|
2443
|
-
const
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
const
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2452
|
+
function addToPath(app, distDir) {
|
|
2453
|
+
const { mkdirSync: mkdirSync3 } = __require("fs");
|
|
2454
|
+
mkdirSync3(BIN_DIR, { recursive: true });
|
|
2455
|
+
const target = join6(distDir, `${app}-cli.js`);
|
|
2456
|
+
const linkPath = join6(BIN_DIR, `${app}-cli`);
|
|
2457
|
+
if (!existsSync6(target)) {
|
|
2458
|
+
console.error(`${import_picocolors5.default.red("\u2717")} Built file not found: ${target}`);
|
|
2459
|
+
console.error(` Run: ${import_picocolors5.default.cyan(`npx api2cli bundle ${app}`)}`);
|
|
2460
|
+
process.exit(1);
|
|
2461
|
+
}
|
|
2462
|
+
chmodSync(target, 493);
|
|
2463
|
+
if (existsSync6(linkPath)) {
|
|
2464
|
+
unlinkSync(linkPath);
|
|
2465
|
+
}
|
|
2466
|
+
symlinkSync(target, linkPath);
|
|
2467
|
+
ensureBinInPath();
|
|
2468
|
+
console.log(`${import_picocolors5.default.green("+")} Linked ${import_picocolors5.default.bold(`${app}-cli`)} -> ${import_picocolors5.default.dim(linkPath)}`);
|
|
2469
|
+
console.log(`
|
|
2470
|
+
Run this to use it now:
|
|
2471
|
+
${import_picocolors5.default.cyan(`export PATH="$HOME/.local/bin:$PATH" && ${app}-cli --help`)}`);
|
|
2472
|
+
}
|
|
2473
|
+
function removeFromPath(app, _distDir) {
|
|
2474
|
+
const linkPath = join6(BIN_DIR, `${app}-cli`);
|
|
2475
|
+
if (!existsSync6(linkPath)) {
|
|
2476
|
+
console.log(`${import_picocolors5.default.dim(app)} not linked`);
|
|
2451
2477
|
return;
|
|
2452
2478
|
}
|
|
2453
|
-
|
|
2454
|
-
console.log(`${import_picocolors5.default.red("-")}
|
|
2479
|
+
unlinkSync(linkPath);
|
|
2480
|
+
console.log(`${import_picocolors5.default.red("-")} Unlinked ${import_picocolors5.default.bold(`${app}-cli`)}`);
|
|
2455
2481
|
}
|
|
2456
2482
|
|
|
2457
2483
|
// src/commands/link.ts
|
package/package.json
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "api2cli",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Turn any REST API into a standardized, agent-ready CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"api2cli": "./dist/index.js"
|
|
8
8
|
},
|
|
9
|
-
"files": [
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
10
13
|
"scripts": {
|
|
11
14
|
"build": "bun build src/index.ts --outfile dist/index.js --target bun",
|
|
12
|
-
"dev": "bun run src/index.ts"
|
|
15
|
+
"dev": "bun run src/index.ts",
|
|
16
|
+
"release": "release-it"
|
|
13
17
|
},
|
|
14
18
|
"dependencies": {
|
|
15
19
|
"commander": "^13.0.0",
|
|
@@ -17,10 +21,19 @@
|
|
|
17
21
|
},
|
|
18
22
|
"devDependencies": {
|
|
19
23
|
"@types/bun": "latest",
|
|
24
|
+
"release-it": "^19.0.4",
|
|
20
25
|
"typescript": "^5.7.0"
|
|
21
26
|
},
|
|
22
27
|
"license": "MIT",
|
|
23
|
-
"keywords": [
|
|
28
|
+
"keywords": [
|
|
29
|
+
"cli",
|
|
30
|
+
"api",
|
|
31
|
+
"rest",
|
|
32
|
+
"agent",
|
|
33
|
+
"skill",
|
|
34
|
+
"mcp",
|
|
35
|
+
"agentskills"
|
|
36
|
+
],
|
|
24
37
|
"repository": {
|
|
25
38
|
"type": "git",
|
|
26
39
|
"url": "https://github.com/Melvynx/api2cli.git",
|