Для того щоб навчитися створювати пакети, давайте створимо новий пакет, який буде виводити команду 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, щоб оновити глобальний реєстр.