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
ykey_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.