oh-my-fish/docs/ru-RU/Packages.md
2017-04-27 00:07:40 -03:00

4.9 KiB
Raw Blame History

Packages

Oh My Fish Documentation • Also in
🇺🇸
🇨🇳
🇺🇦
🇧🇷

Создание

Чтобы научиться создавать пакеты, давайте создадим новый пакет, который будет выводить команду hello_world для вашей оболочки. Имена пакетов могут содержать только символы нижнего регистра и символ подчеркивания для разделения слов.

Oh My Fish может сгенерировать структуру пакета для вас. Используйте команду omf new:

$ omf new pkg hello_world

Используйте omf new theme my_theme_name для тем.

Утилита изменяет текущий каталог на только что созданный пакет:

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

Всегда описывайте, как работает ваш пакет в README.md. Также прочитайте больше об автодополнении и позаботьтесь о том, чтобы предоставить его для ваших утилит, когда это возможно.

hello_world.fish определяет одну функцию:

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

Каждая функция в вашем пакете должна быть объявлена в своем собственном файле. Это требование механизма автозагрузки fish, который загружает функции по запросу, избегая загрузки ненужных функций.

Имейте в виду, что fish не имеет приватной области видимости, поэтому если вам необходимо разделить пакет на функции, добавьте такой префикс к функциям:
__hello_world.my_extra_function. Это поможет избежать совпадения имен и загрязнения глобального пространства имен.

События

Пакеты были спроектированы так, чтобы использовать преимущества событий fish. На данный момент существует два события которые Oh My Fish будет передавать вашему пакету:

Инициализация

Если вы хотите быть уведомлены когда ваш пакет загружается, объявите следующую функцию в вашем hello_world.fish:

function init -a path --on-event init_hello_world
  echo "hello_world initialized"
end

Используйте это событие, чтобы модифицировать окружение, загружать ресурсы, автоматически загружать функции и т.д. Если ваш пакет не экспортирует никаких функций, вы все равно можете использовать это событие для увеличения функциональности пакета.

Удаление

Oh My Fish генерирует событие uninstall_<pkg> перед удалением пакета с помощью команды omf remove <pkg>. Подписчики могут использовать это событие, чтобы очистить кастомные ресурсы и т.д.

function uninstall --on-event uninstall_hello_world
end

Сделайте его публичным

Oh My Fish хранит реестр публичных пакетов в $OMF_PATH/db/.

Чтобы добавить ваш пакет в реестр, введите в консоли:

# Для пакетов:
omf submit pkg/hello_world .../hello_world.git

# Для тем:
omf submit theme/my_theme .../my_theme_name.git

Это добавит новую сущность в ваш локальный реестр. Теперь вам просто надо отправить нам PR, чтобы обновить глобальный реестр.