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
, де це необхідно:
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
.
Опція | Ім’я | Тип | Опис | Приклад | Примітки |
---|---|---|---|---|---|
-a | add | action | Додає ключ(и), значення(я) або обидва. | yb -f "file.yaml" -a -k "key" -v "value" | |
-c | change | action | Змінює значення(я). | yb -f "file.yaml" -c -k "key" -v "new_value" | |
-q | query | action | Виводить true або false , якщо ключ(и), значення(я) або обидва присутні чи ні. | yb -f "file.yaml" -q -k "key" | Для отримання значення каналу -v 'значення каналу' рекомендується використовувати одинарні лапки. |
-r | remove | action | Видаляє ключ(и), значення(я) або обидва. | yb -f "файл.yaml" -r -k "ключ" -v "значення" | Для видалення значення каналу -v 'значення каналу' рекомендується використовувати одинарні лапки. |
-f | file | input | шлях до файлу YAML. | yb -f "файл.yaml" | Файл можна представити без опції -f , як опцію $1 . -f та -c несумісні один з одним. |
-o | object | input | об’єкт YAML. | yb -o "${YAML_object}" | Об’єкт YAML можна використовувати з усіма діями. -f та -o сумісні між собою, лише під час додавання об’єкта до файлу. |
-O | object value | input | значення об’єкта YAML. | yb -f "file.yaml" -O "${YAML_object}" | Об’єкт YAML можна використовувати з дією -a . |
-k | key | input | Шлях вибору ключів. | yb -f "file.yaml" -k "ключ" | Підтримує ключі у форматі:key , key.childkey , - list-key , pipe-key| . Можна вказати кілька ключів з роздільником . . |
-v | value | input | Значення, які потрібно додати, видалити, запитати або змінити. | yb -f "file.yaml" -k "ключ" -v "значення" | Підтримує значення у форматі: value , - list-value , |> pipe-value . |
-A | array | формат | Виводить вивід у вигляді масиву bash. | yb -f "file.yaml" -A -k "key" | Забезпечить інше форматування, якщо використовувати з -F або -d . |
-C | colors | format | Примусово використовує кольори у нетермінальному виводі. | yb -Cf "file.yaml" -A -k "key" | |
-d | depth | format | Забезпечує вихід з оригінальною глибиною. | yb -f "file.yaml" -d -k "key.childkey" -v "new_value" | |
-F | format | format | Друкує відформатований вивід для представлення деревоподібності в рядку. | yb -f "file.yaml" -F -k "key" | Забезпечить інше форматування, якщо використовувати з -A або -d . |
-K | keys ключі | format | Друкує лише ключі. | yb -Kf "file.yaml" -k "key" | |
-l | line | format | Друкує { {line}} у кожному рядку. | yb -f "file.yaml" -l -k "key" | |
-L | level | format | Друкує { {<номер рівня>} } у кожному рядку. | yb -f "file.yaml" -L -k "key" | |
-R | raw | format | Друкує вивід без доданих кольорів, коментарів та порожніх рядків. | yb -f "file.yaml" -R -k "key" | |
-n | number | format | Друкує { {<номер рядка>} } на кожному рядку. | yb -f "file.yaml" -n -k "key" | |
-T | type | format | Друкує тип значення. | yb -f "file.yaml" -T -k "key" | Підтримує null , boolean , integer , floating number , string . |
-s | spaces | Deprecated | Вибір кількості пробілів. |
Підтримка 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.