Proyecto: .warproj y .warpcfg
Todo .warp se compila en el contexto de un proyecto (.warproj), que a su vez apunta a un archivo de configuración del generador (.warpcfg) con las reglas de generación de código y el despliegue al IBM i.
1. .warproj
@Project {
Name : Example
Description : "Proyecto de ejemplo"
Version : 1.0
Default Profile : Dev
@Generator {
Name : "waRPGate generator"
Language : RPGLE
Description : "Generador RPGLE"
@Paths {
Config : ../example/generator/rpg/rpg.warpcfg
Output : output/rpg
}
}
}
@Paths/Config: ruta al.warpcfg(relativa al.warproj).@Paths/Output: carpeta donde se escribe el RPGLE/DDS generado.
2. .warpcfg
@GeneratorConfig {
Date Format : DMY
Date Separator : /
Time Format : 24H
Time Separator : :
Print Mode : File
Commitment : True
Commit on Exit : True
DDS Name : <ObjectName>
@Screen {
Rows : 24
Columns : 80
@FunctionKeys {
F3 : "Salir"
F5 : "Refrescar"
F24 : "Mas teclas"
}
}
@Profile "Dev" {
@Connection {
Host : DEVSERVER
User : usuario
Auth Method : key
Key File : ~/.ssh/id_rsa_ibmi
Protocol : ssh
Port : 22
Timeout : 30
}
@Deployment {
CL Source : QCLSRC
Cleanup : true
Target Release : *Current
Optimization : 40
Debug : false
Temp Path : /tmp
Data Library : DTALIB02
Objects Library : OBJLIB01
Source Tables : QDDSSRC
Source Programs : QRPGLESRC
Compile Library : DTALIB01,DTALIB02,DTALIB03,OBJLIB01
}
}
@Profile "Prod" {
@Connection {
Host : PRODSERVER
User : usuario
Auth Method : key
Key File : ~/.ssh/id_rsa_ibmi
Protocol : ssh
Port : 22
Timeout : 30
}
@Deployment {
CL Source : QCLSRC
Cleanup : true
Target Release : *Current
Optimization : 40
Debug : false
Temp Path : /tmp
Data Library : DTALIB02
Objects Library : OBJLIB01
Source Tables : QDDSSRC
Source Programs : QRPGLESRC
Compile Library : DTALIB01,DTALIB02,DTALIB03,OBJLIB01
}
}
}
Qué controla cada bloque
- Nivel superior (
Date Format,Print Mode,Commitment,Commit on Exit,DDS Name): reglas de generación de código, aplicadas a todo el proyecto.Commitment/Commit on Exitse pueden sobreescribir por objeto en el@Propertiesde un.warppuntual. @Screen: tamaño de pantalla por defecto (24x80 si se omite) y las teclas de función (@FunctionKeys) disponibles para losScreendel proyecto — la etiqueta que se muestra en la línea de atención. UnScreenliga una tecla a un evento propio conEvent 'Nombre' <n> ... EndEvent.@Profile "Nombre": un ambiente de despliegue (Dev,UAT,Prod, el nombre es libre). Cada perfil agrupa su propia@Connection,@Deploymenty, opcionalmente,@License. Un.warpcfgdebe declarar al menos un@Profile.@Connection: cómo llega el compilador al IBM i para--action build/reverse(no aplica avalidate/generate, que son puramente locales).@Deployment: bibliotecas y member de fuente donde se sube y compila (CRTPF/CRTLF/CRTCLPGM) el código generado.
Con más de un @Profile, hace falta indicar cuál usar: con --profile <Nombre> en el CLI, o dejando Default Profile en @Project (como en el ejemplo del .warproj de arriba). La extensión de VSCode tiene su propio selector — ver Comandos de VSCode.
Ver Archivo de proyecto para la lista completa de claves y sus valores permitidos.