Bash yaml parser

yb - bash парсер YAML

yb надає чисте Bash рішення для парсингу YAML.

Використання

yb [-h|-a|-c|-q|-r|-A-C-d-F-K-l-L-R-n-T] [-f <файл>|-o <об'єкт>] [-k <ключ>] [-v <значення>|-O <значення об'єкта>]

Приклади

./yb -f файл.yaml -k "ключ.дочірнійключ"

З репозиторію ви можете швидко спробувати так:

./yb -f tests/user.yaml -k "yb"

Створення ключів:

./yb -af tests/user.yaml -k "new.key"

додати вбудоване значення:

./yb -af tests/user.yaml -k "new.key" -v "one, two"

змінити його:

./yb -cf tests/user.yaml -k "new.key" -v "three"

додати значення списку:

./yb -af tests/user.yaml -k "new.- list" -v "- one - two"

додати ASCII всередині ключа каналу:

./yb -af tests/user.yaml -k "new.ascii|" -v "|> ___ _ |> \ \// |> \ / |> / / |> /_/"

Маніпулювати YAML як змінною bash:

# Рекомендується використовувати опцію '-R' raw для отримання вмісту без колірних кодів
my_YAML=$(./yb -f tests/user.yaml -k "new")
my_YAML=$(./yb -ao "${my_YAML}" -k "in_memory" -v "true")

Додати його до файлу:

./yb -af tests/user.yaml -k "new.copy" -o "${my_YAML}"

Видалити одне значення:

./yb -rf tests/user.yaml -k "new.- list" -v "- one"

або видалити все:

./yb -rf tests/user.yaml -k "new"

Встановлення

З репозиторію

З репозиторію
git clone https://github.com/t0pd4wn/yb.git
cd yb
chmod +x yb
git clone https://github.com/Sam4uk/yb.git
cd yb
chmod +x yb

yb можна використовувати безпосередньо з папки репозиторію або скопіювати та використовувати як окремий файл у проекті.

З URL-адреси

Ви можете використовувати цю команду для безпосереднього завантаження скрипта yb, де це необхідно:

З URL-адреси
bash <(echo "https://gitlab.com/t0pd4wn/yb/-/raw/main/yb"|(read l; wget $l || curl $l >yb)) && chmod +x yb;
bash <(echo "http://sam4uk.github.io/yb/yb"|(read l; wget $l || curl $l >yb)) && chmod +x yb;

Якщо ви хочете, щоб yb був доступний для всієї системи, виконайте цю команду з папки репозиторію:

sudo cp yb /usr/local/bin/

Однорядковий код

Ви можете використовувати цю команду для завантаження yb у поточну папку одним рядком:

Однорядковий код
bash <(echo "https://gitlab.com/t0pd4wn/yb/-/raw/main/yb"|(read l; wget $l || curl $l >yb)) && chmod +x yb;
bash <(echo "http://sam4uk.github.io/yb/yb"|(read l; wget $l || curl $l >yb)) && chmod +x yb;

Ви можете використати цю команду для встановлення yb у вашу систему одним рядком:

Однорядковий код
bash <(echo "https://gitlab.com/t0pd4wn/yb/-/raw/main/yb"|(read l; wget $l || curl $l >yb)) && chmod +x yb && sudo cp yb /usr/local/bin && rm yb;
bash <(echo "http://sam4uk.github.io/yb/yb"|(read l; wget $l || curl $l >yb)) && chmod +x yb && sudo cp yb /usr/local/bin && rm yb;
There may be pirates

У свій форк я додав можливість завантаження парсеру у форматі deb пакету який можна завантажити за цим посиланням

Параметри

Параметри yb поділяються на 3 типи:

  • action: параметри дії виконуються з файлом і не сумісні один з одним. Вони сумісні з input, але не з format.
  • input: параметри введення є параметрами, що встановлюються користувачем, і сумісні один з одним. Вони сумісні як з action, так і з format.
  • input: параметри форматування виводять вивід різними способами. Вони сумісні один з одним, з типом input, але не з типом action.
ОпціяІм’яТипОписПрикладПримітки
-aaddactionДодає ключ(и), значення(я) або обидва.yb -f "file.yaml" -a -k "key" -v "value"
-cchangeactionЗмінює значення(я).yb -f "file.yaml" -c -k "key" -v "new_value"
-qqueryactionВиводить true або false, якщо ключ(и), значення(я) або обидва присутні чи ні.yb -f "file.yaml" -q -k "key"Для отримання значення каналу -v 'значення каналу' рекомендується використовувати одинарні лапки.
-rremoveactionВидаляє ключ(и), значення(я) або обидва.yb -f "файл.yaml" -r -k "ключ" -v "значення"Для видалення значення каналу -v 'значення каналу' рекомендується використовувати одинарні лапки.
-ffileinputшлях до файлу YAML.yb -f "файл.yaml"Файл можна представити без опції -f, як опцію $1. -f та -c несумісні один з одним.
-oobjectinputоб’єкт YAML.yb -o "${YAML_object}"Об’єкт YAML можна використовувати з усіма діями. -f та -o сумісні між собою, лише під час додавання об’єкта до файлу.
-Oobject valueinputзначення об’єкта YAML.yb -f "file.yaml" -O "${YAML_object}"Об’єкт YAML можна використовувати з дією -a.
-kkeyinputШлях вибору ключів.yb -f "file.yaml" -k "ключ"Підтримує ключі у форматі:key, key.childkey, - list-key, pipe-key|. Можна вказати кілька ключів з роздільником ..
-vvalueinputЗначення, які потрібно додати, видалити, запитати або змінити.yb -f "file.yaml" -k "ключ" -v "значення"Підтримує значення у форматі: value, - list-value, |> pipe-value.
-AarrayформатВиводить вивід у вигляді масиву bash.yb -f "file.yaml" -A -k "key"Забезпечить інше форматування, якщо використовувати з -F або -d.
-CcolorsformatПримусово використовує кольори у нетермінальному виводі.yb -Cf "file.yaml" -A -k "key"
-ddepthformatЗабезпечує вихід з оригінальною глибиною.yb -f "file.yaml" -d -k "key.childkey" -v "new_value"
-FformatformatДрукує відформатований вивід для представлення деревоподібності в рядку.yb -f "file.yaml" -F -k "key"Забезпечить інше форматування, якщо використовувати з -A або -d.
-Kkeys ключіformatДрукує лише ключі.yb -Kf "file.yaml" -k "key"
-llineformatДрукує { {line}} у кожному рядку.yb -f "file.yaml" -l -k "key"
-LlevelformatДрукує { {<номер рівня>} } у кожному рядку.yb -f "file.yaml" -L -k "key"
-RrawformatДрукує вивід без доданих кольорів, коментарів та порожніх рядків.yb -f "file.yaml" -R -k "key"
-nnumberformatДрукує { {<номер рядка>} } на кожному рядку.yb -f "file.yaml" -n -k "key"
-TtypeformatДрукує тип значення.yb -f "file.yaml" -T -k "key"Підтримує null, boolean, integer, floating number, string.
-sspacesDeprecatedВибір кількості пробілів.

Підтримка YAML

yb забезпечує базову підтримку YAML для редагування та читання YAML-файлу. Починаючи з версії 0.9, yb не підтримує розширені функції, такі як пошук на основі груп, прив’язки, псевдоніми та перевизначення.

Розробка

Повні вихідні коди доступні в папці /src/. Версія, що знаходиться на кореневому рівні, зібрана за допомогою скрипта /src/tools/dist.sh.

Тести

Простий набір тестів доступний у папці tests/. Він представляє різні варіанти використання yb.

Щоб запустити його, виконайте команду нижче з кореневого рівня репозиторію:

./tests/tests.sh

Ви можете надати додатковий параметр для вибору парсера (наприклад, під час розробки):

./tests/tests.sh "./src/yb.dev"

Дякую

Всім вам, YAML-івцям!

Зроблено t0pd4wn на Bash.