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

4.8 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, щоб оновити глобальний реєстр.