4.4 KiB
% CONVENCIONES(2) Manual de RAP | rap % fauno fauno@endefensadelsl.org % 2013
NOMBRE
Notas para desarrolladorxs de RAP :)
SINOPSIS
- lib/
- herramientas
- lib/exec/
- comandos
- skel/
- archivos base para tinc
- skel/scripts/
- directorio de scripts/hooks
- doc/
- documentación
- hosts/
- archivos de nodos
- nodos/
- nodos propios
- locale/
- traducciones
DESCRIPCION
Dónde van los scripts
El script rap autodescubre los comandos siguiendo la convención lib/exec/el-script. Además configura algunas variables de entorno que los scripts pueden usar para saber en qué red están trabajando.
Los scripts pueden estar en cualquier lenguaje de programación mientras sepan leer esas variables de entorno.
Variables de entorno
Estas son las variables de entorno que rap exporta para el resto de los comandos.
- TINC
- Ubicación del directorio del nodo, por defecto /etc/tinc/rap.
- NETWORK
- Nombre de la red, por defecto rap.
- RAP
- Path completo de rap.
- RAP_DIR
- Path completo del directorio de trabajo, por defecto el directorio base de RAP
- RAP_LIBDIR
- Path completo del directorio de comandos.
- RAP_HOSTS
- Path completo del directorio de hosts.
- KEYSIZE
- Tamaño por defecto de las llaves.
- TINCD_FLAGS
- Flags para el demonio tincd.
- PORT
- Puerto por defecto
- sudo
- Usar esta variable delante de cualquier comando que deba correr con privilegios de root, ej: ${sudo} rsync. Requiere "root=true" al principio del script.
Dónde va la documentación
La documentación lleva el nombre completo del script: doc/idioma/tuscript.markdown. La función help() en lib/msg lo lleva como argumento para mostrar la ayuda.
Además, toma la variable de entorno PAGER para paginar la salida, por defecto se usa less.
Flags y parámetros
rap comando -flags nodolocal parametros extra
Seguido de rap viene el comando, al que se le pasan en orden las opciones (con sus valores). El primer parámetro siempre tiene que ser el nodo local en el que se realiza la acción. Luego vienen los parámetros extra (nombres de otros nodos, por ejemplo).
Funciones comunes
En el archivo lib/common se almacenan las funciones de uso común entre todos los comandos. Se la puede incluir en un script añadiendo la línea
. "${RAP_LIBDIR}"/common
al principio del script.
Nota: Agregar root=true antes de common para poder correr funciones de root.
Variables
- self: nombre del script. Usado para obtener el nombre del script. Ejemplo: help $self llama a la ayuda del script actual.
Funciones
-
add_to_file(): Agrega una línea al final de un archivo. Uso: add_to_file archivo "Texto a agregar"
-
requires(): Indica que el script necesita que un programa se encuentre en el PATH. Se recomienda cuando el script llama a un programa que puede no encontrarse en una instalación estándar. Uso: requires avahi-publish rsync
-
get_node_dir(): Encuentra el directorio de un nodo pasándole el nombre del nodo como argumento. node_dir="$(get_node_dir ${node})"
-
get_node_file(): Encuentra el archivo de host de un nodo dentro del directorio del nodo. node_file="$(get_node_file ${node})"
-
get_node_name(): Limpia el nombre del nodo de caracteres inválidos
-
get_host_file(): Obtiene el archivo del nodo en $RAP_HOSTS
Mensajes
En lib/msg se encuentran las funciones básicas para imprimir mensajes en la salida de errores estándar. Esto es para que no sean procesados como la salida estándar de los scripts, que se reservan para poder enviar la información a una tubería.
No es necesario incluirla ya que se llama desde lib/common.
Todas las funciones tienen soporte para traducciones utilizando gettext, por lo que los mensajes que se completan con variables deben seguir el formato de printf: %s para reemplazar por cadenas, %d para números enteros, etc.
Por ejemplo: msg "Procesando el nodo %s..." "$node"
- msg(): Información
- error(): Mensaje de error
- warning(): Alerta
- fatal_error(): Imprime un mensaje de error y termina el programa inmediatamente
- tip(): Recomendaciones, por ejemplo, cual comando correr a continuación.
Los comandos
La mayoria de los comandos solo configuran, luego hay que enviar los cambios a directorio de instalación con el comando rap init install.