Загальні утиліти¶
Тут ви можете ознайомитись з утилітами загального призначення.
spaceship::exists
¶
spaceship::exists <command>
Ця команда перевіряє, що вказана програма доступна в системі. Вона зчитує змінну PATH та шукає двійкові файли та функції. Вона повертає нульовий код виходу, якщо command
існує і ненульовий код в іншому випадку.
Ви можете використовувати цю утиліту, щоб перевірити, чи встановлено якусь програму, і виконувати дії на підставі якихось умов. Наприклад, ви можете повернути помилку та вийти або продовжити виконання сценарію. Наприклад:
# Перевірте наявність кількох команд
if spaceship::exists nvm; then
# отримати версію nvm
elif spaceship::exists node; then
# отримати версію node
else
return
fi
# Нічого не робити якщо docker не встановлено
spaceship::exists docker || return
spaceship::defined
¶
spaceship::defined <function>
Те саме, що і spaceship::exists
, але для функцій. Вона повертає нульовий код виходу, якщо function
існує і ненульовий код в іншому випадку.
Ви можете використовувати цю утиліту для перевірки, чи раніше користувач визначив функцію, чи ні. Наприклад:
# Перевірте, чи секцію визначено
if spaceship::defined spaceship_section; then
spaceship_section
else
# секцію не знайдено
fi
spaceship::is_git
¶
Ця утиліта повертає нульовий код виходу, якщо поточна робоча тека є репозиторієм Git, і відмінним від нуля, якщо це не так. Наприклад:
# Вихід якщо поточна тека не є репозиторієм git
spaceship::is_git || return
spaceship::is_hg
¶
Те саме, що і spaceship::is_git
, але для репозиторіїв Mercurial. Ця утиліта повертає нульовий код виходу, якщо поточна робоча тека є репозиторієм Mercurial, і відмінним від нуля, якщо це не так.
# Вихід якщо поточна тека не є репозиторієм Mercurial
spaceship::is_hg || return
spaceship::is_section_async
¶
Перевіряє, чи є секція є асинхронною, чи ні шляхом перевірки параметра SPACESHIP_<SECTION>_ASYNC
. Ця утиліта повертає нульовий код виходу, якщо секція є асинхронною, і відмінним від нуля, якщо це не так.
Якщо SPACESHIP_PROMPT_ASYNC
встановлено у false
, тоді всі секції вважаються синхронними.
spaceship::is_section_async <section>
section
Обовʼязково — секція, яку потрібно перевірити.
Деякі секції завжди синхронні, незважаючи ні на що, щоб забезпечити коректну роботу командного рядка. Це: user
, dir
, host
, exec_time
, async
, line_sep
, jobs
, exit_code
та char
.
spaceship::is_prompt_async
¶
Перевіряє, чи командний рядок працює в асинхронному режимі. Ця утиліта повертає нульовий код виходу, якщо командний рядок працює в асинхроннім режимі, і відмінним від нуля, якщо це не так.
Перевіряє, чи SPACESHIP_PROMPT_ASYNC
встановлено у true
і zsh-async
завантажується.
spaceship::deprecated
¶
Ця утиліта перевіряє, чи option
встановлено і якщо так, виводить message
. message
підтримує esc-послідовності для встановлення кольору тексту, фону та інших візуальних ефектів.
spaceship::deprecated <option> [message]
option
Обовʼязково — назва застарілою змінної. Якщо ця змінна встановлена (містить будь-яке значення), то буде надруковано"%B$deprecated%b is deprecated.
.%B
і%b
використовуються, щоб встановити жирний стиль тексту.message
опціонально — додатковий текст, що додається до повідомлення. Може містити розширення командного рядка.
Детальніше про esc-послідовності в розділі Prompt Expansion документації Zsh.
Приклад використання:
# Перевірка чи встановлено SPACESHIP_BATTERY_ALWAYS_SHOW
spaceship::deprecated SPACESHIP_BATTERY_ALWAYS_SHOW "Use %BSPACESHIP_BATTERY_SHOW='always'%b instead."
#> SPACESHIP_BATTERY_ALWAYS_SHOW is deprecated. Use SPACESHIP_BATTERY_SHOW='always' instead.
spaceship::displaytime
¶
Ця утиліта перетворює seconds
на зрозумілий формат часу. Вона розділяє seconds
на дні (d
), години (h
), хвилини (m
) та секунди (s
).
spaceship::displaytime <seconds> [precision]
seconds
Обовʼязково — секунди для перетворення у більш зрозумілий формат.precision
Опціонально — точність виводу. Стандартне значення —1
.
Приклад використання виглядає наступним чином:
spaceship::displaytime 123456
#> 1d 10h 17m 36.0s
paceship::displaytime 123.45 2
#> 2m 3.45s
spaceship::union
¶
Утиліта для виконання об'єднання (перетину) масивів. Вона містить список вмісту, знайденого у двох або більше масивах.
Spaceship використовує цю утиліту внутрішньо для обробки секцій розділів, які потрібно знайти.
spaceship::union <arr1[ arr2[ ...]]>
arr...
— перелік масивів.
Розгляньмо приклад:
arr1=('a' 'b' 'c')
arr2=('b' 'c' 'd')
arr3=('c' 'd' 'e')
spaceship::union $arr1 $arr2 $arr3
#> a b c d e
spaceship::upsearch
¶
Виконує пошук вгору по конкретному файлу або теці. Повертає шлях першого знайденого файлу або теки. Рухається в бік кореня репозиторію або файлової системи. Корисно для розуміння контексту поточної теки.
spaceship::upsearch [--silent] <paths...>
paths...
Обовʼязково — перелік шляхів для пошуку.--silent
або-s
Опціонально — якщо встановлено, утиліта поверне нульовий код виходу, якщо принаймні один ізшляхів
знайдено, і відмінний від нуля, якщо ні.
Це може бути використано для визначення контексту проєкту або пошуку конкретного файлу вгорі.
# Розуміння контексту проєкту
spaceship::upsearch -s package.json node_modules && echo "Node project detected."
# Пошук конкретного файлу вгорі
spaceship::upsearch package.json
#> /path/to/project/package.json
spaceship::extract
¶
Note
Псевдонім цієї утиліти – spaceship::datafile
Ця утиліта запитує файли даних для отримання певного ключа. Вона повертає значення цього ключа. Виходить з ненульовим кодом, коли тип файлу невідомий, дані не можна прочитати або ключ не знайдено.
spaceship::extract --<type> <file> [...keys]
--type
Обовʼязково — тип файлу даних. Може бутиjson
,yaml
,toml
абоxml
.file
Обовʼязково — шлях до файлу даних.key
Опціонально — ключ, значення якого потрібно отримати з файлу.
Ви можете використовувати цю утиліту для запиту даних з файлів:
spaceship::extract --json package.json "author.name"
#> "John Doe"
Потрібні такі інструменти для читання файлів даних:
- JSON —
jq
,yq
абоpython-yq
,python
,node
- YAML —
yq
абоpython-yq
,python
- TOML —
tomlq
(постачається зpython-yq
) - XML —
xq
(постачається зpython-yq
)
Порада
Найбільш універсальним рішенням для читання файлів даних є використання python-yq
.