kubiy-paas-cli 0.1.1 → 0.1.4

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.
@@ -0,0 +1,51 @@
1
+ name: Publish to npm
2
+
3
+ on:
4
+ # Opción 1: manual desde GitHub
5
+ workflow_dispatch:
6
+
7
+ # Opción 2: cuando hagas push de un tag tipo v1.2.3
8
+ push:
9
+ tags:
10
+ - "v*"
11
+
12
+ permissions:
13
+ id-token: write # Necesario para OIDC con npm
14
+ contents: read
15
+
16
+ jobs:
17
+ publish:
18
+ runs-on: ubuntu-latest
19
+
20
+ steps:
21
+ - name: Checkout
22
+ uses: actions/checkout@v4
23
+
24
+ - name: Setup Node
25
+ uses: actions/setup-node@v4
26
+ with:
27
+ node-version: "20"
28
+ registry-url: "https://registry.npmjs.org"
29
+
30
+ # Asegúrate de tener npm reciente (npm 11+ soporta bien trusted publishing) :contentReference[oaicite:3]{index=3}
31
+ - name: Update npm
32
+ run: npm install -g npm@latest
33
+
34
+ - name: Install dependencies
35
+ run: |
36
+ if [ -f package-lock.json ] || [ -f npm-shrinkwrap.json ]; then
37
+ echo "Lockfile encontrado, usando npm ci"
38
+ npm ci
39
+ else
40
+ echo "Sin lockfile, usando npm install"
41
+ npm install
42
+ fi
43
+
44
+ - name: Build
45
+ run: npm run build --if-present
46
+
47
+ - name: Test
48
+ run: npm test --if-present
49
+
50
+ - name: Publish to npm
51
+ run: npm publish --access public
package/fix-link.js CHANGED
@@ -1,72 +1,72 @@
1
- #!/usr/bin/env node
2
-
3
- const fs = require('fs');
4
- const path = require('path');
5
- const os = require('os');
6
-
7
- const isWin = process.platform === 'win32';
8
-
9
- if (isWin) {
10
- // ==========================
11
- // LADO WINDOWS (lo que ya tenías)
12
- // ==========================
13
-
14
- // Ruta donde npm instala los comandos globales (típico en Windows)
15
- const npmBinPath = path.join(os.homedir(), 'AppData', 'Roaming', 'npm');
16
- const kubiyCmdPath = path.join(npmBinPath, 'kubiy.cmd');
17
- const kubiyPs1Path = path.join(npmBinPath, 'kubiy.ps1');
18
-
19
- // Corregir kubiy.cmd
20
- if (fs.existsSync(kubiyCmdPath)) {
21
- let content = fs.readFileSync(kubiyCmdPath, 'utf8');
22
-
23
- // Verificar si necesita corrección (no tiene 'node' explícito)
24
- if (!content.includes('node "%dp0%')) {
25
- // Reemplazar la línea que ejecuta el .js directamente
26
- content = content.replace(
27
- /"%dp0%\\node_modules\\kubiy-paas-cli\\index\.js"/g,
28
- 'node "%dp0%\\node_modules\\kubiy-paas-cli\\index.js"'
29
- );
30
-
31
- fs.writeFileSync(kubiyCmdPath, content, 'utf8');
32
- console.log('✅ Archivo kubiy.cmd corregido');
33
- }
34
- }
35
-
36
- // Corregir kubiy.ps1
37
- if (fs.existsSync(kubiyPs1Path)) {
38
- let content = fs.readFileSync(kubiyPs1Path, 'utf8');
39
-
40
- // Verificar si necesita corrección (no tiene 'node' explícito)
41
- if (!content.includes('node "$basedir')) {
42
- // Reemplazar las líneas que ejecutan el .js directamente
43
- content = content.replace(
44
- /& "`\$basedir\/node_modules\/kubiy-paas-cli\/index\.js"/g,
45
- '& node "$basedir/node_modules/kubiy-paas-cli/index.js"'
46
- );
47
- // También corregir la versión sin backticks (por si acaso)
48
- content = content.replace(
49
- /& "\$basedir\/node_modules\/kubiy-paas-cli\/index\.js"/g,
50
- '& node "$basedir/node_modules/kubiy-paas-cli/index.js"'
51
- );
52
-
53
- fs.writeFileSync(kubiyPs1Path, content, 'utf8');
54
- console.log('✅ Archivo kubiy.ps1 corregido');
55
- }
56
- }
57
-
58
- } else {
59
- // ==========================
60
- // LADO UNIX / MAC
61
- // ==========================
62
- try {
63
- const indexPath = path.join(__dirname, 'index.js');
64
-
65
- if (fs.existsSync(indexPath)) {
66
- fs.chmodSync(indexPath, 0o755);
67
- console.log('✅ Unix: permisos ejecutables aplicados a index.js (chmod +x)');
68
- }
69
- } catch (e) {
70
- console.log('⚠ No se pudo aplicar chmod a index.js en Unix:', e.message);
71
- }
72
- }
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const os = require('os');
6
+
7
+ const isWin = process.platform === 'win32';
8
+
9
+ if (isWin) {
10
+ // ==========================
11
+ // LADO WINDOWS (lo que ya tenías)
12
+ // ==========================
13
+
14
+ // Ruta donde npm instala los comandos globales (típico en Windows)
15
+ const npmBinPath = path.join(os.homedir(), 'AppData', 'Roaming', 'npm');
16
+ const kubiyCmdPath = path.join(npmBinPath, 'kubiy.cmd');
17
+ const kubiyPs1Path = path.join(npmBinPath, 'kubiy.ps1');
18
+
19
+ // Corregir kubiy.cmd
20
+ if (fs.existsSync(kubiyCmdPath)) {
21
+ let content = fs.readFileSync(kubiyCmdPath, 'utf8');
22
+
23
+ // Verificar si necesita corrección (no tiene 'node' explícito)
24
+ if (!content.includes('node "%dp0%')) {
25
+ // Reemplazar la línea que ejecuta el .js directamente
26
+ content = content.replace(
27
+ /"%dp0%\\node_modules\\kubiy-paas-cli\\index\.js"/g,
28
+ 'node "%dp0%\\node_modules\\kubiy-paas-cli\\index.js"'
29
+ );
30
+
31
+ fs.writeFileSync(kubiyCmdPath, content, 'utf8');
32
+ console.log('✅ Archivo kubiy.cmd corregido');
33
+ }
34
+ }
35
+
36
+ // Corregir kubiy.ps1
37
+ if (fs.existsSync(kubiyPs1Path)) {
38
+ let content = fs.readFileSync(kubiyPs1Path, 'utf8');
39
+
40
+ // Verificar si necesita corrección (no tiene 'node' explícito)
41
+ if (!content.includes('node "$basedir')) {
42
+ // Reemplazar las líneas que ejecutan el .js directamente
43
+ content = content.replace(
44
+ /& "`\$basedir\/node_modules\/kubiy-paas-cli\/index\.js"/g,
45
+ '& node "$basedir/node_modules/kubiy-paas-cli/index.js"'
46
+ );
47
+ // También corregir la versión sin backticks (por si acaso)
48
+ content = content.replace(
49
+ /& "\$basedir\/node_modules\/kubiy-paas-cli\/index\.js"/g,
50
+ '& node "$basedir/node_modules/kubiy-paas-cli/index.js"'
51
+ );
52
+
53
+ fs.writeFileSync(kubiyPs1Path, content, 'utf8');
54
+ console.log('✅ Archivo kubiy.ps1 corregido');
55
+ }
56
+ }
57
+
58
+ } else {
59
+ // ==========================
60
+ // LADO UNIX / MAC
61
+ // ==========================
62
+ try {
63
+ const indexPath = path.join(__dirname, 'index.js');
64
+
65
+ if (fs.existsSync(indexPath)) {
66
+ fs.chmodSync(indexPath, 0o755);
67
+ console.log('✅ Unix: permisos ejecutables aplicados a index.js (chmod +x)');
68
+ }
69
+ } catch (e) {
70
+ console.log('⚠ No se pudo aplicar chmod a index.js en Unix:', e.message);
71
+ }
72
+ }
package/index.js CHANGED
@@ -1,55 +1,55 @@
1
- #!/usr/bin/env node
2
-
3
- const path = require("path");
4
- const { logInfo, logError } = require("./src/logger");
5
-
6
- const args = process.argv.slice(2);
7
- const command = args[0];
8
-
9
- async function main() {
10
- try {
11
- switch (command) {
12
- case "login":
13
- await require("./src/commands/login").run(args.slice(1));
14
- break;
15
- case "whoami":
16
- await require("./src/commands/whoami").run(args.slice(1));
17
- break;
18
- case "service:get":
19
- await require("./src/commands/service-get").run(args.slice(1));
20
- break;
21
- case "git:connect":
22
- await require("./src/commands/git-connect").run(args.slice(1));
23
- break;
24
- case "deploy":
25
- await require("./src/commands/deploy").run();
26
- break;
27
- case "version":
28
- case "--version":
29
- case "-v":
30
- await require("./src/commands/version").run(args.slice(1));
31
- break;
32
- default:
33
- printHelp();
34
- process.exit(0);
35
- }
36
- } catch (err) {
37
- logError("Error en CLI:", err.message || err);
38
- process.exit(1);
39
- }
40
- }
41
-
42
- function printHelp() {
43
- logInfo("Kubiy PaaS CLI");
44
- console.log("");
45
- console.log("Uso:");
46
- console.log(" kubiy login <cliToken>");
47
- console.log(" kubiy whoami");
48
- console.log(" kubiy service:get <serviceId>");
49
- console.log(" kubiy git:connect <serviceId>");
50
- console.log(" kubiy deploy");
51
- console.log(" kubiy version");
52
- console.log("");
53
- }
54
-
55
- main();
1
+ #!/usr/bin/env node
2
+
3
+ const path = require("path");
4
+ const { logInfo, logError } = require("./src/logger");
5
+
6
+ const args = process.argv.slice(2);
7
+ const command = args[0];
8
+
9
+ async function main() {
10
+ try {
11
+ switch (command) {
12
+ case "login":
13
+ await require("./src/commands/login").run(args.slice(1));
14
+ break;
15
+ case "whoami":
16
+ await require("./src/commands/whoami").run(args.slice(1));
17
+ break;
18
+ case "service:get":
19
+ await require("./src/commands/service-get").run(args.slice(1));
20
+ break;
21
+ case "git:connect":
22
+ await require("./src/commands/git-connect").run(args.slice(1));
23
+ break;
24
+ case "deploy":
25
+ await require("./src/commands/deploy").run();
26
+ break;
27
+ case "version":
28
+ case "--version":
29
+ case "-v":
30
+ await require("./src/commands/version").run(args.slice(1));
31
+ break;
32
+ default:
33
+ printHelp();
34
+ process.exit(0);
35
+ }
36
+ } catch (err) {
37
+ logError("Error en CLI:", err.message || err);
38
+ process.exit(1);
39
+ }
40
+ }
41
+
42
+ function printHelp() {
43
+ logInfo("Kubiy PaaS CLI");
44
+ console.log("");
45
+ console.log("Uso:");
46
+ console.log(" kubiy login <cliToken>");
47
+ console.log(" kubiy whoami");
48
+ console.log(" kubiy service:get <serviceId>");
49
+ console.log(" kubiy git:connect <serviceId>");
50
+ console.log(" kubiy deploy");
51
+ console.log(" kubiy version");
52
+ console.log("");
53
+ }
54
+
55
+ main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kubiy-paas-cli",
3
- "version": "0.1.1",
3
+ "version": "0.1.4",
4
4
  "description": "CLI para la plataforma PaaS de Kubiy",
5
5
  "main": "index.js",
6
6
  "bin": {
package/src/api.js CHANGED
@@ -1,79 +1,79 @@
1
- const https = require("https");
2
- const { getCliToken } = require("./config");
3
- const { logError } = require("./logger");
4
-
5
- // Ajusta esta URL a tu API real
6
- const API_BASE = process.env.KUBIY_API_BASE || "https://i5c812hwh2.execute-api.us-east-1.amazonaws.com";
7
-
8
- function request(method, path, body, opts = {}) {
9
- return new Promise((resolve, reject) => {
10
- const token = opts.token || getCliToken();
11
- const url = new URL(path, API_BASE);
12
-
13
- const headers = {
14
- "Accept": "application/json"
15
- };
16
-
17
- let payload = null;
18
- if (body) {
19
- payload = JSON.stringify(body);
20
- headers["Content-Type"] = "application/json";
21
- headers["Content-Length"] = Buffer.byteLength(payload);
22
- }
23
-
24
- if (token) {
25
- headers["Authorization"] = `Bearer ${token}`;
26
- }
27
-
28
- const options = {
29
- method,
30
- headers
31
- };
32
-
33
- const req = https.request(url, options, (res) => {
34
- let data = "";
35
-
36
- res.on("data", (chunk) => (data += chunk));
37
- res.on("end", () => {
38
- if (!data) {
39
- return resolve(null);
40
- }
41
-
42
- if (res.statusCode >= 200 && res.statusCode < 300) {
43
- try {
44
- resolve(JSON.parse(data));
45
- } catch (e) {
46
- resolve(data);
47
- }
48
- } else {
49
- reject(
50
- new Error(
51
- `API ${res.statusCode}: ${data || res.statusMessage || "Error"}`
52
- )
53
- );
54
- }
55
- });
56
- });
57
-
58
- req.on("error", reject);
59
-
60
- if (payload) {
61
- req.write(payload);
62
- }
63
- req.end();
64
- });
65
- }
66
-
67
- function apiGet(path, opts) {
68
- return request("GET", path, null, opts);
69
- }
70
-
71
- function apiPost(path, body, opts) {
72
- return request("POST", path, body, opts);
73
- }
74
-
75
- module.exports = {
76
- apiGet,
77
- apiPost,
78
- API_BASE
79
- };
1
+ const https = require("https");
2
+ const { getCliToken } = require("./config");
3
+ const { logError } = require("./logger");
4
+
5
+ // Ajusta esta URL a tu API real
6
+ const API_BASE = process.env.KUBIY_API_BASE || "https://i5c812hwh2.execute-api.us-east-1.amazonaws.com";
7
+
8
+ function request(method, path, body, opts = {}) {
9
+ return new Promise((resolve, reject) => {
10
+ const token = opts.token || getCliToken();
11
+ const url = new URL(path, API_BASE);
12
+
13
+ const headers = {
14
+ "Accept": "application/json"
15
+ };
16
+
17
+ let payload = null;
18
+ if (body) {
19
+ payload = JSON.stringify(body);
20
+ headers["Content-Type"] = "application/json";
21
+ headers["Content-Length"] = Buffer.byteLength(payload);
22
+ }
23
+
24
+ if (token) {
25
+ headers["Authorization"] = `Bearer ${token}`;
26
+ }
27
+
28
+ const options = {
29
+ method,
30
+ headers
31
+ };
32
+
33
+ const req = https.request(url, options, (res) => {
34
+ let data = "";
35
+
36
+ res.on("data", (chunk) => (data += chunk));
37
+ res.on("end", () => {
38
+ if (!data) {
39
+ return resolve(null);
40
+ }
41
+
42
+ if (res.statusCode >= 200 && res.statusCode < 300) {
43
+ try {
44
+ resolve(JSON.parse(data));
45
+ } catch (e) {
46
+ resolve(data);
47
+ }
48
+ } else {
49
+ reject(
50
+ new Error(
51
+ `API ${res.statusCode}: ${data || res.statusMessage || "Error"}`
52
+ )
53
+ );
54
+ }
55
+ });
56
+ });
57
+
58
+ req.on("error", reject);
59
+
60
+ if (payload) {
61
+ req.write(payload);
62
+ }
63
+ req.end();
64
+ });
65
+ }
66
+
67
+ function apiGet(path, opts) {
68
+ return request("GET", path, null, opts);
69
+ }
70
+
71
+ function apiPost(path, body, opts) {
72
+ return request("POST", path, body, opts);
73
+ }
74
+
75
+ module.exports = {
76
+ apiGet,
77
+ apiPost,
78
+ API_BASE
79
+ };