| 1 | = Reglas de construcción y comentarios acerca de paquetes y repositorios = |
| 2 | |
| 3 | * Un paquete es un tipo de NameBlock especial que se carga con la orden |
| 4 | #Require nombre_de_paquete y que se carga directamente de un archivo .oza |
| 5 | almacenado previamente en un directorio local predeterminado por el sistema. |
| 6 | * Los paquetes están disponibles en repositorios remotos o locales desde los |
| 7 | cuales es posible instalarlos y manejarlos mediante las utilidades de |
| 8 | StdLib::TolPackage::Client |
| 9 | * Las correspondientes funciones de creación y mantenirmiento de los |
| 10 | respositorios están disponibles en StdLib::TolPackage::Server |
| 11 | * Los nombres de los paquetes deben seguir el estilo CamelCase |
| 12 | * Un paquete se crea como un NameBlock en un fichero principal del mismo |
| 13 | nombre con extensión .tol y dentro de un directorio raíz llamado igual. El |
| 14 | fichero principal puede cargar con #Embed los archivos auxiliares que |
| 15 | necesite con nombre libre pero ubicación paralela o en subdirectorios del |
| 16 | raíz. |
| 17 | * Cuando un paquete requiere de otros se debe incluir las correspondientes |
| 18 | sentencias #Require antes de la declaración del primer miembro. |
| 19 | * Los miembros obligatorios del NameBlock de un paquete son: |
| 20 | * Text _.autodoc.brief = "Descripción cortísima en una línea". |
| 21 | * Text _.autodoc.description = "Descripción detallada"; |
| 22 | * Text _.autodoc.url = "http://.../"; |
| 23 | * Set _.autodoc.keys = [["Palabras","Clave", ...]]; |
| 24 | * Set _.autodoc.authors = [[ "fulanito@mail.tal", "menganito@mail.cual"]]; |
| 25 | * Text _.autodoc.minTolVersion = TolPackage::_.currentTolVersion; |
| 26 | * Real _.autodoc.version.high = 1; |
| 27 | * Real _.autodoc.version.low = 1; |
| 28 | * Set _.autodoc.dependencies = [["paquete1","paquete2", ...]]; |
| 29 | * El nombre del archivo de una versión concreta de un paquete se obtiene |
| 30 | como la concatenación del nombre del paquete seguido de un punto, el número |
| 31 | _.autodoc.version.high, otro punto y el número _.autodoc.version.low |
| 32 | * Si no se especifica números de versión el #Require cargará la versión más |
| 33 | actual que corresponderá siempre al archivo con el nombre del paquete nada |
| 34 | más. En este caso los paquetes que requiera directa o indirectamente serán |
| 35 | también las últimas versiones y no hace falta hacer nada previamente. |
| 36 | * Si se especifica una versión concreta entonces se debe cargar previamente |
| 37 | cada uno de los paquetes requeridos directa o indirectamente mediante el método |
| 38 | StdLib::TolPackage::Client::ForceExactRequirements, antes de que se llame al |
| 39 | #Require de ninguno de ellos. |
| 40 | * La definición del paquete siempre debe usar #Require sin especificar una |
| 41 | versión concreta. |
| 42 | * Obsérvese que los paquetes requeridos se deben especificar por duplicado: |
| 43 | primero en los #Require sin comillas y luego en Set _.autodoc.dependencies |
| 44 | entre comillas pues esta información la necesita el gestor de repositorios. |
| 45 | * No puede haber paquetes con el mismo nombre de NameBlock ni en el mismo ni |
| 46 | en distinto repositorio. |
| 47 | * No está permitido el requerimiento cíclico directo ni indirecto entre |
| 48 | paquetes, es decir, si A requiere a B directa o indirectamente B no puede |
| 49 | requerir a A ni directa ni indirectamente. El sistema gestor de repositorios |
| 50 | caería en un ciclo infinito y no hay forma de detectarlo luego es |
| 51 | responsabilidad de los desarrollodares del repositorio el evitarlo. |
| 52 | * Cada paquete debe estar dotado de documentación autocontenida de manera |
| 53 | que cualquier usuario pueda aprender a usarlo por sí mismo. Queda por ver si |
| 54 | esa documentación ha de ser WIKI, HTML, PDF, ASCII, o si puede ser opcional |
| 55 | el formato. La documentación estará ubicada en cualquier caso dentro de |
| 56 | un directorio doc colgando directamente de la raíz del paquete. |
| 57 | * También debe tener una batería de tests estándar en un directorio test |
| 58 | colgando directamente de la raíz del paquete. |
| 59 | * El repositorio es un directorio plano con unos archivos obligatorios: |
| 60 | * index.tol: Contiene características generales del repositorio como el |
| 61 | nombre, el tipo ("Private" ó "Public") y la descripción de los objetivos. |
| 62 | * index.csv: Listado de los paquetes y su información asociada: fecha, |
| 63 | versión, dependencias, etc. |
| 64 | * Debe haber un comité o alguien responsable de probar todos los paquetes de |
| 65 | un repositorio antes de publicar las actualizaciones de los paquetes para |
| 66 | asegurar la compatibilidad conjunta de todos ellos. |