@alehandrosv/esmeralda-cli
v1.2.3
Published
CLI for Jade ORM - a modern ORM for Lua
Maintainers
Readme
Esmeralda CLI
CLI for Jade ORM
EN
About
Esmeralda is the official CLI for Jade ORM. It manages projects, migrations, schemas, seeds, and database operations in a simple and intuitive way.
Installation
npm install -g @alehandrosv/esmeralda-cliCommands
init
Creates the basic structure of a Jade project. Supports interactive mode and --yes flag.
esmeralda init -n my-app # Non-interactive
esmeralda init # Interactive (asks for config)
esmeralda init --yes # Use defaults for everythingGenerates:
my-app/
├── jade.config.lua
├── schema/
│ └── init.lua
├── migrations/
├── seeds/
└── lib/
└── app.luagenerate
Generates a migration from schema changes.
esmeralda generate -n create_users
esmeralda generate --preview # Preview SQL onlymigrate
Runs all pending migrations.
esmeralda migrate
esmeralda migrate --preview # Preview onlymigrate status
Shows the status of all migrations (applied vs pending).
esmeralda migrate statusOutput:
Migration Status:
✓ 20260715_create_users.lua
✓ 20260716_create_posts.lua
○ 20260717_add_email_index.lua (pending)
Applied: 2, Pending: 1migrate create
Creates an empty migration.
esmeralda migrate create add_email_to_usersmigrate rollback
Rolls back migrations.
esmeralda migrate rollback # Rollback last
esmeralda migrate rollback --steps 3 # Rollback last 3db pull
Introspects the database and generates entity files.
esmeralda db pull # All tables
esmeralda db pull -t users # Specific tableThe generated files include:
- Column types and modifiers
- Primary key detection
- Foreign key relations (as comments)
db push
Pushes schema directly to database (without migrations).
esmeralda db push --forceThis will:
- Create tables with
CREATE TABLE IF NOT EXISTS - Add foreign key constraints
db diff
Compares schema definitions with the current database state.
esmeralda db diffShows differences between your schema files and the live database.
db seed
Runs seed files from the seeds directory.
esmeralda db seed # All seeds
esmeralda db seed user # Specific seedschema-generate
Generates Lua entity files from declarative schema definitions.
esmeralda schema-generateReads declarative schema files and outputs Jade.Entity() Lua format.
Error Handling
All commands provide clear error messages with suggestions:
[error] Not a Jade project. Run 'esmeralda init' first.
[info] Suggestion: Run 'esmeralda init' in your project directory[error] Failed to apply migration: 20260716_create_users.lua
[info] Check the migration file for syntax errors. Original error: attempt to call nil valueEnable debug mode for stack traces:
DEBUG=true esmeralda migrateDocker Support
Esmeralda automatically detects docker-compose.yml and runs commands inside the container:
# With docker-compose.yml in project root
esmeralda migrate # Runs inside container
esmeralda db seed # Runs inside container
# Without docker-compose.yml
esmeralda migrate # Runs locally (requires Lua/LuaJIT)License
MIT
PT-BR
Sobre
Esmeralda e a CLI oficial do Jade ORM. Gerencia projetos, migrations, schemas, seeds e operacoes de banco de forma simples e intuitiva.
Instalacao
npm install -g @alehandrosv/esmeralda-cliComandos
init
Cria a estrutura basica de um projeto Jade. Suporta modo interativo e flag --yes.
esmeralda init -n my-app # Nao-interativo
esmeralda init # Interativo (pergunta a config)
esmeralda init --yes # Usar padroes para tudoGera:
my-app/
├── jade.config.lua
├── schema/
│ └── init.lua
├── migrations/
├── seeds/
└── lib/
└── app.luagenerate
Gera uma migration a partir das alteracoes no schema.
esmeralda generate -n create_users
esmeralda generate --preview # Apenas mostra o SQLmigrate
Roda todas as migrations pendentes.
esmeralda migrate
esmeralda migrate --preview # Apenas mostra o que seria executadomigrate status
Mostra o status de todas as migrations (aplicadas vs pendentes).
esmeralda migrate statusSaida:
Migration Status:
✓ 20260715_create_users.lua
✓ 20260716_create_posts.lua
○ 20260717_add_email_index.lua (pending)
Applied: 2, Pending: 1migrate create
Cria uma migration vazia.
esmeralda migrate create add_email_to_usersmigrate rollback
Desfaz migrations.
esmeralda migrate rollback # Desfaz ultima
esmeralda migrate rollback --steps 3 # Desfaz ultimas 3db pull
Introspeciona o banco de dados e gera arquivos de entidade.
esmeralda db pull # Todas as tabelas
esmeralda db pull -t users # Tabela especificaOs arquivos gerados incluem:
- Tipos de coluna e modificadores
- Deteccao de primary key
- Relacoes de foreign key (como comentarios)
db push
Empurra o schema diretamente para o banco (sem migrations).
esmeralda db push --forceIsso ira:
- Criar tabelas com
CREATE TABLE IF NOT EXISTS - Adicionar constraints de foreign key
db diff
Compara definicoes de schema com o estado atual do banco.
esmeralda db diffMostra diferencas entre seus arquivos de schema e o banco ao vivo.
db seed
Roda arquivos de seed do diretorio seeds.
esmeralda db seed # Todos os seeds
esmeralda db seed user # Seed especificoschema-generate
Gera arquivos Lua de entidade a partir de definicoes de schema declarativo.
esmeralda schema-generateLe arquivos de schema declarativo e saida no formato Jade.Entity() Lua.
Tratamento de Erros
Todos os comandos fornecem mensagens de erro claras com sugestoes:
[error] Not a Jade project. Run 'esmeralda init' first.
[info] Suggestion: Run 'esmeralda init' in your project directoryAtive o modo debug para stack traces:
DEBUG=true esmeralda migrateSuporte a Docker
O Esmeralda detecta automaticamente o docker-compose.yml e roda os comandos dentro do container:
# Com docker-compose.yml na raiz do projeto
esmeralda migrate # Roda dentro do container
esmeralda db seed # Roda dentro do container
# Sem docker-compose.yml
esmeralda migrate # Roda localmente (requer Lua/LuaJIT)Licenca
MIT
