Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 Exit se pueden sobreescribir por objeto en el @Properties de un .warp puntual.
  • @Screen: tamaño de pantalla por defecto (24x80 si se omite) y las teclas de función (@FunctionKeys) disponibles para los Screen del proyecto — la etiqueta que se muestra en la línea de atención. Un Screen liga una tecla a un evento propio con Event 'Nombre' <n> ... EndEvent.
  • @Profile "Nombre": un ambiente de despliegue (Dev, UAT, Prod, el nombre es libre). Cada perfil agrupa su propia @Connection, @Deployment y, opcionalmente, @License. Un .warpcfg debe declarar al menos un @Profile.
    • @Connection: cómo llega el compilador al IBM i para --action build/reverse (no aplica a validate/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.