npm package: @gzl10/osx-cli
Description: Oracle Schema Extractor CLI - Genera JSON compatible con Atlas OriginType=BBDD
Author: GZL10
Latest version: 4.0.10

# @gzl10/osx-cli

CLI para extraer esquemas de tablas Oracle y generar JSON compatible con Atlas.

## Instalacion

```bash
npm install -g @gzl10/osx-cli
```

### Windows: Configurar PATH

Agregar `%APPDATA%\npm` al PATH del sistema, o ejecutar antes de usar:

```powershell
$env:PATH += ";$env:APPDATA\npm"
```

## Configuracion Rapida

Crea estos archivos en tu home (`~` o `%USERPROFILE%`):

**~/.env** - Credenciales Oracle:

```ini
USER=tu_usuario
PWD=tu_password
```

**~/tnsnames.ora** - Conexiones Oracle:

```text
PROD_DB=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=servidor)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))
```

## Oracle Instant Client

Requerido para bases de datos con autenticacion moderna. El CLI lo detecta automaticamente en:

- **Windows:** `C:\oracle\instantclient_*`
- **Linux/macOS:** `/opt/oracle/instantclient_*`

[Descargar Oracle Instant Client](https://www.oracle.com/database/technologies/instant-client/downloads.html)

## Uso

```bash
# Uso basico (credenciales desde ~/.env)
osx extract TABLA --tns PROD_DB

# Multiples tablas
osx extract TABLA1,TABLA2,TABLA3 --tns PROD_DB

# Wildcards: * (multiples caracteres), ? (un caracter)
osx extract "D21*" --tns PROD_DB -o --pretty
osx extract "A200?100" --tns PROD_DB -o

# Guardar en archivo (nombre auto: TABLA.json o extractYYYYMMDD.json)
osx extract TABLA --tns PROD_DB -o --pretty

# Guardar con nombre especifico
osx extract TABLA --tns PROD_DB -o output.json

# Credenciales explicitas
osx extract TABLA --tns PROD_DB -u USER -p PASS

# Easy Connect (sin tnsnames.ora)
osx extract TABLA --tns "servidor:1521/servicio" -u USER -p PASS

# Extraer de un schema diferente al usuario
osx extract TABLA --tns PROD_DB --schema OWNER_SCHEMA
```

### Wildcards

Los wildcards permiten extraer multiples tablas con un patron:

- `*` - coincide con cualquier cantidad de caracteres
- `?` - coincide con un solo caracter

Cuando se usan wildcards, se aplica automaticamente un delay de 100ms entre tablas para no saturar la base de datos. Puedes ajustarlo con `-d`.

```bash
# Todas las tablas que empiezan por D21
osx extract "D21*" --tns PROD_DB -o --pretty

# Con delay personalizado (500ms)
osx extract "D21*" --tns PROD_DB -o --pretty -d 500
```

## Opciones

| Opcion | Descripcion |
| ------ | ----------- |
| `-t, --tns` | Alias TNS o Easy Connect (host:port/service) |
| `-s, --schema` | Schema Oracle (default: mismo que usuario) |
| `-u, --user` | Usuario (o env: OSX_USER, o ~/.env USER) |
| `-p, --password` | Password (o env: OSX_PASSWORD, o ~/.env PWD) |
| `-o, --output` | Fichero salida (sin nombre: auto, 1 tabla=TABLA.json, N tablas=extractYYYYMMDD.json) |
| `--pretty` | JSON formateado |
| `-d, --delay` | Delay entre tablas (ms) |

## Prioridad de Credenciales

1. Flags de linea de comandos (`-u`, `-p`)
2. Variables de entorno (`OSX_USER`, `OSX_PASSWORD`)
3. Archivo `~/.env` (`USER`, `PWD`)

## Requisitos

- Node.js >= 20
- Oracle Instant Client (para BD con auth moderna)
- Oracle Database 11g+

## Licencia

MIT