rap/doc/es/CONVENCIONES.markdown
2020-06-10 20:54:57 -03:00

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.