Skip to content

Latest commit

 

History

History
129 lines (77 loc) · 6.23 KB

Packages.md

File metadata and controls

129 lines (77 loc) · 6.23 KB

Pacotes

Documentação do Oh My Fish  • Also in 🇺🇸 🇷🇺 🇨🇳 🇺🇦


Criando

Para aprender a criação de pacotes vamos criar um novo pacote que irá fornecer um comando hello_world para o seu shell. Os nomes de pacotes só podem conter letras minúsculas e hifens para separar palavras.

Oh My Fish pode criar uma estrutura padrão de um pacote para você. Use o comando omf new:

$ omf new pkg hello_world

Use omf new theme my_theme_name para temas.

O utilitário altera o diretório atual para o pacote recém-criado:

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

Sempre descreva como seu pacote trabalha em README.md.

Também leia mais sobre auto-complete e tome cuidado para fornecê-lo para seus utilitários, quando aplicável.

functions/hello_world.fish define uma simples função:

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

Cada função no seu pacote deve ser declarada em seu próprio arquivo no diretório functions. Isso é exigido pelo mecanismo de carregamento automático do fish, que carrega funções sob demanda, evitando o carregamento de funções não utilizadas no momento da inicialização.

Tenha em mente que o fish não tem um escopo privado, portanto, se você precisa dividir seu pacote em funções, evite conflitos de nomes prefixando suas funções com algo único -- como o nome do pacote (por exemplo, hello_world_print_help). Para evitar poluir o namespace de comandos, considere prefixar as funções privadas com dois sublinhados (por exemplo, __function_name_print_help).

Hooks

Oh My Fish fornece um sistema de "hooks" que permite que você escreva scripts para seu pacote que são executados quando ocorrem outros eventos interessantes. Os pacotes podem usar esses ganchos para fornecer instalação avançada, gerenciamento de recursos personalizados, etc. Os ganchos são scripts fish comuns, nomeados de acordo com o nome do evento pelo qual são acionados. A maioria dos hooks residem em um diretório hooks dentro do diretório do projeto de um pacote.

Os Hooks que são chamados no momento da inicialização (init.fish e key_bindings.fish) podem desacelerar a inicialização do shell. Certifique-se de evitar o código lento no momento da inicialização! Além disso, se seu pacote não precisa de um arquivo de Hook, certifique-se de removê-lo.

O diretório de trabalho dentro de um Hook é sempre definido para o diretório raiz do pacote. Os Hooks Oh My Fish atualmente suportados estão listados abaixo:

init

O hook init é executado uma vez quando o shell primeiro carrega. Os scripts para lidar com este hook devem estar localizados em init.fish no diretório raiz do pacote.

Dentro desse Hook, você pode acessar três variáveis relacionadas ao pacote:

  • $package: Nome do pacote
  • $path: Caminho de instalação do pacote
  • $dependencies: Dependências do pacote

Por exemplo, com um script init.fish contendo o seguinte código:

echo "hello_world initialized"

Você verá a linha hello_world initialized no topo do terminal quando ele for aberto pela primeira vez.

Use esse Hook para modificar o ambiente, carregar recursos, funções de carregamento automático, etc. Se o pacote não exportar nenhuma função, você ainda pode usar esse evento para adicionar funcionalidade ao seu pacote ou criar dinamicamente funções.

key_bindings

Se o seu pacote ou tema precisar usar teclas de atalho, certifique-se de configurá-los no gancho key_bindings. Os scripts de teclas de atalho devem estar localizados em key_bindings.fish no diretório raiz do pacote. Neste gancho, você pode usar livremente o comando bind para definir ligações de teclas personalizadas.

Os temas também podem definir teclas de atalho! O Oh My Fish irá recarregar as teclas de atalho quando mudar de tema.

install

O Hook install é acionado quando um pacote é instalado pela primeira vez. Os scripts para este gancho devem estar localizados em hooks/install.fish.

Dentro desse hook, você pode acessar duas variáveis relacionadas ao pacote:

  • $package: Nome do pacote
  • $path: Caminho de instalação do pacote

Este hook é útil para fazer o download de recursos adicionais, a criação de submódulos Git ou a instalação de dependências de terceiros, como os scripts Bash.

update

Como você deve ter adivinhado, o gancho update é acionado para um pacote depois que ele é atualizado. Os scripts para este hook devem estar localizados em hooks/update.fish.

Dentro desse gancho, você pode acessar duas variáveis relacionadas ao pacote:

  • $package: Nome do pacote
  • $path: Caminho de instalação do pacote

Este hook é útil para atualizar submódulos Git ou verificar novas versões de dependências de terceiros.

uninstall

O hook uninstall será acionado antes que um pacote seja removido via omf remove <pkg>. Os scripts para este hook devem estar localizados em hooks/uninstall.fish.

Dentro desse gancho, você pode acessar duas variáveis relacionadas ao pacote:

  • $package: Nome do pacote
  • $path: Caminho de instalação do pacote

Os pacotes podem usar este gancho para limpar recursos personalizados, etc.

Nota: para compatibilidade com versões anteriores, os hooks de desinstalação também serão executados se estiverem localizados em uninstall.fish na raiz do pacote.

Torná-lo público

O registro oficial de pacotes públicos é gerenciado no repositório oh-my-fish/packages-main. Consulte o README desse repositório para obter instruções sobre como adicionar seu pacote ao banco de dados oficial do pacote.