oh-my-fish/docs/es-ES/Packages.md
2019-10-02 18:43:02 +02:00

6.5 KiB

Paquetes

La documentación de Oh My Fish • También disponible en
🇺🇸
🇷🇺
🇨🇳
🇺🇦
🇧🇷

Creando

Para aprender en la creación de paquetes, vamos a crear un nuevo paquete que mostrará un comando hello_world para su shell. Los nombres de los paquetes
solo pueden contener letras minúsculas y guiones para separar palabras.

Oh My Fish puede crear el esqueleto de una estructura de un paquete para usted. Para ello utilice el comando omf new:

$ omf new plugin hello_world

Utilice omf new theme my_theme_name para crear un nuevo tema.

La utilidad cambia el directorio actual al paquete recién creado:

$ ls -l
  README.md
  init.fish
  functions/hello_world.fish
  completions/hello_world.fish

Proporcione siempre una descripción de cómo funciona su paquete en un archivo README.md.

Lea más sobre auto completado y tenga en cuenta el incluirlo para sus utilidades cuando sea
aplicable.

functions/hello_world.fish define una única función:

function hello_world -d "Prints hello world"
  echo "Hello World!"
end

Cada función en su paquete debe ser declarada en su propio archivo en el directorio functions. Esto es necesario para el mecanismo de carga automática de
fish, que carga funciones bajo demanda, evitando funciones no utilizadas durante el tiempo de arranque.

Tenga en cuenta que fish no tiene un ámbito privado, así que si necesita dividir su paquete en funciones, evite conflictos de nombres utilizando como
prefijo de las funciones algo único, como el nombre dle paquete (por ejemplo: hello_world_print_help). Para evitar el contaminado de nombres de comandos,
considere utilizar como prefijo de funciones privadas dos guiones bajos (e.g. __function_name_print_help).

Hooks

Oh My Fish ofrece un sistema de "hooks" que le permite escribir scripts para su paquete que son ejecutados cuando ocurre otro evento interesante. Los
paquetes puede utilizar estos hooks para ofrecer una instalación avanzada, una gestión de recursos personalizada, etc. Los hooks son scripts normales de
Fish nombrados después del evento por el que son lanzados. La mayoría de hooks se encuentran en un directorio hooks dentro del directorio del proyecto
del paquete.

Los hooks que son llamados después del tiempo de arranque (init.fish y key_bindings.fish) pueden ralentizar el arranque de la shell. ¡Asegúrese de
evitar utilizar código lento en el proceso de arranque! También, si su paquete no necesita de un archivo hook, asegúrese de eliminarlo.

El directorio de trabajo dentro de un hook está siempre establecido en la raíz del directorio del paquete. Los hooks Oh My Fish actualmente admitidos están
listados a continuación:

init

El hook init se ejecuta la primera vez que la shell se carga. Los scripts que utilicen este hook deberían estar ubicados en init.fish en la raíz del
directorio del paquete.

Dentro de este hook, puede acceder a tres variables relacionadas con el paquete:

  • $package: Nombre del paquete
  • $path: Ruta de instalación del paquete
  • $dependencies: Dependencias del paquete

Por ejemplo, con un script init.fish que contenga el siguiente código:

echo "hello_world initialized"

verá la línea hello_world initialized en la parte superior de la terminal cuando sea abierta por primera vez.

Utilice este hook para modificar el entorno, cargar recursos, cargar de manera automática funciones, etc. Si su paquete no exporta ninguna función, todavía
puede utilizar este evento para añadir funcionalidades a su paquete, o de manera dinámica crear funciones.

key_bindings

Si su paquete o sistema utiliza atajos de teclado, asegúrese de establecerlos en el hook key_bindings. El script del atajo de teclado debe estar ubicado
en key_bindings.fish en la raíz del directorio del paquete. En este hook puede utilizar libremente el comando bind para definir los atajos
de teclado personalizados.

¡Los temas también pueden definir atajos de teclado! Oh My Fish volverá a cargar los atajos de teclado cuando cambie entre los temas.

install

El hook install es lanzado cuando un paquete es instalado por primera vez. Los scripts para este hook deberán estar ubicados en hooks/install.fish.

Dentro de este hook, puede acceder a dos variables relacionadas con el paquete:

  • $package: Nombre del paquete
  • $path: Ruta de instalación del paquete

Este hook es útil para descargar recursos adicionales, configurar submódulos de Git o instalar dependencias de terceros como scripts de Bash.

update

Como puede haber adivinado, el hook update es lanzado por un paquete después de haber sido actualizado. Los scripts para este hook deberán estar ubicados en hooks/update.fish.

Dentro de este hook, puede acceder a dos variables relacionadas con el paquete:

  • $package: Nombre del paquete
  • $path: Ruta de instalación del paquete

Este hook es útil para actualizar submódulos de Git o para comprobar si existen nuevas versiones para dependencias de terceros.

uninstall

El hook uninstall será lanzado antes de que un paquete sea eliminado mediante omf remove <pkg>. Los scripts para este hook deberán estar ubicados en hooks/uninstall.fish.

Dentro de este hook, puede acceder a dos variables relacionadas con el paquete:

  • $package: Nombre del paquete
  • $path: Ruta de instalación del paquete

Los paquetes pueden utilizar este hook para limpiar recursos personalizados, etc.

Nota: para mantener la compatibilidad con versiones anteriores, los hooks uninstall también serán ejecutados si están ubicados en uninstall.fish en la
raíz del paquete.

Hágalo público

El registro oficial de paquetes públicos es gestionado en el repositorio oh-my-fish/packages-main. Vea el
archivo README de ese repositorio para encontrar instrucciones de cómo añadir su paquete a la base de datos oficial de paquetes.