@gzl10/osx-cli 4.0.0 → 4.0.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/cli.js CHANGED
@@ -8,7 +8,34 @@ import {
8
8
  import { program } from "commander";
9
9
 
10
10
  // src/commands/extract.ts
11
- import { writeFileSync } from "fs";
11
+ import { existsSync, readFileSync, writeFileSync } from "fs";
12
+ import { homedir } from "os";
13
+ import { join } from "path";
14
+ function loadHomeEnv() {
15
+ const envPath = join(homedir(), ".env");
16
+ if (!existsSync(envPath)) return {};
17
+ const content = readFileSync(envPath, "utf-8");
18
+ const vars = {};
19
+ for (const line of content.split("\n")) {
20
+ const match = line.match(/^(\w+)=(.*)$/);
21
+ if (match) {
22
+ vars[match[1]] = match[2].replace(/^["']|["']$/g, "");
23
+ }
24
+ }
25
+ return {
26
+ user: vars.USER,
27
+ password: vars.PWD
28
+ };
29
+ }
30
+ function setupTnsAdmin() {
31
+ if (process.env.TNS_ADMIN) return;
32
+ const home = homedir();
33
+ const tnsPath = join(home, "tnsnames.ora");
34
+ if (existsSync(tnsPath)) {
35
+ process.env.TNS_ADMIN = home;
36
+ console.error(`Usando tnsnames.ora de ${home}`);
37
+ }
38
+ }
12
39
  function formatOracleError(message, tns, schema) {
13
40
  if (message.includes("ORA-01017")) {
14
41
  return `
@@ -83,15 +110,23 @@ function formatOracleError(message, tns, schema) {
83
110
  `;
84
111
  }
85
112
  async function extractCommand(tables, options) {
86
- const user = options.user || process.env.OSX_USER;
87
- const password = options.password || process.env.OSX_PASSWORD;
113
+ const homeEnv = loadHomeEnv();
114
+ const user = options.user || process.env.OSX_USER || homeEnv.user;
115
+ const password = options.password || process.env.OSX_PASSWORD || homeEnv.password;
88
116
  const schema = options.schema || options.tns;
117
+ if (!options.tns) {
118
+ console.error(
119
+ '\n\u274C Error: Debes especificar el TNS o conexi\xF3n\n\nUso:\n osx extract <TABLA> --tns <ALIAS> # Usa tnsnames.ora\n osx extract <TABLA> --tns host:port/sid # Easy Connect\n\nEjemplos:\n osx extract D0001 --tns MDI1\n osx extract D0001 --tns "BDMDI1:1523/MDI1"\n'
120
+ );
121
+ process.exit(1);
122
+ }
89
123
  if (!user || !password) {
90
124
  console.error(
91
- "\n\u274C Error: Credenciales de Oracle no proporcionadas\n\nDebes especificar usuario y password de una de estas formas:\n\n 1. Flags de l\xEDnea de comandos:\n osx extract D0001 --tns TRON_LD -u USUARIO -p PASSWORD\n\n 2. Variables de entorno:\n export OSX_USER=USUARIO\n export OSX_PASSWORD=PASSWORD\n osx extract D0001 --tns TRON_LD\n"
125
+ "\n\u274C Error: Credenciales de Oracle no proporcionadas\n\nEspecifica usuario y password de una de estas formas:\n\n 1. Flags de l\xEDnea de comandos:\n osx extract D0001 --tns MDI1 -u USUARIO -p PASSWORD\n\n 2. Variables de entorno (OSX_USER, OSX_PASSWORD):\n export OSX_USER=USUARIO\n export OSX_PASSWORD=PASSWORD\n\n 3. Archivo ~/.env con USER y PWD:\n USER=USUARIO\n PWD=PASSWORD\n"
92
126
  );
93
127
  process.exit(1);
94
128
  }
129
+ setupTnsAdmin();
95
130
  const oracle = new OracleService();
96
131
  try {
97
132
  console.error(`Conectando a ${options.tns}...`);
@@ -127,5 +162,5 @@ async function extractCommand(tables, options) {
127
162
 
128
163
  // src/cli.ts
129
164
  program.name("osx").description("Oracle Schema Extractor - Genera JSON compatible con Atlas OriginType=BBDD").version("1.0.0");
130
- program.command("extract <tables>").description("Extrae esquema de tabla(s) Oracle. Tablas separadas por coma.").requiredOption("-t, --tns <alias>", "Alias TNS de tnsnames.ora").option("-s, --schema <name>", "Schema Oracle (default: mismo que TNS)").option("-u, --user <user>", "Usuario Oracle (o env: OSX_USER)").option("-p, --password <pass>", "Password Oracle (o env: OSX_PASSWORD)").option("-o, --output <file>", "Fichero de salida (default: stdout)").option("--pretty", "JSON formateado con indentacion").option("-d, --delay <ms>", "Delay entre tablas en ms", "0").action(extractCommand);
165
+ program.command("extract <tables>").description("Extrae esquema de tabla(s) Oracle. Tablas separadas por coma.").option("-t, --tns <alias>", "Alias TNS o Easy Connect (host:port/service)").option("-s, --schema <name>", "Schema Oracle (default: mismo que TNS)").option("-u, --user <user>", "Usuario Oracle (o env: OSX_USER)").option("-p, --password <pass>", "Password Oracle (o env: OSX_PASSWORD)").option("-o, --output <file>", "Fichero de salida (default: stdout)").option("--pretty", "JSON formateado con indentacion").option("-d, --delay <ms>", "Delay entre tablas en ms", "0").action(extractCommand);
131
166
  program.parse();
package/dist/index.d.ts CHANGED
@@ -24,7 +24,7 @@ interface TableSchema {
24
24
  * Opciones del comando extract
25
25
  */
26
26
  interface ExtractOptions {
27
- tns: string;
27
+ tns?: string;
28
28
  schema?: string;
29
29
  user?: string;
30
30
  password?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gzl10/osx-cli",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "description": "Oracle Schema Extractor CLI - Genera JSON compatible con Atlas OriginType=BBDD",
5
5
  "type": "module",
6
6
  "bin": {