Use yq to process YAML content (#130)

Use yq to process YAML content.
This commit is contained in:
Honnix 2020-09-16 19:20:04 +02:00 committed by GitHub
parent 092ab5bbdb
commit 643c8177be
3 changed files with 28 additions and 9 deletions

View file

@ -29,6 +29,10 @@ jobs:
with:
ruby-version: '2.6.x'
- name: install tooling
run: |
brew install yq
- name: Checkout
uses: actions/checkout@v2
with:

View file

@ -17,6 +17,10 @@ jobs:
with:
ruby-version: '2.6.x'
- name: install tooling
run: |
brew install yq
- name: Checkout
uses: actions/checkout@v2
with:
@ -62,6 +66,10 @@ jobs:
with:
ruby-version: '2.6.x'
- name: install tooling
run: |
brew install yq
- name: Checkout
uses: actions/checkout@v2
with:

View file

@ -1,4 +1,4 @@
#!/usr/local/bin/bash
#!/usr/bin/env bash
#
# Create HTML pages for Categories and Tags in posts.
#
@ -25,19 +25,26 @@ _read_yaml() {
read_categories() {
local _yaml="$(_read_yaml "$1")"
local _categories="$(echo "$_yaml" | grep "^categories *:")"
local _category="$(echo "$_yaml" | grep "^category *:")"
local _categories="$(echo "$_yaml" | yq r - "categories.*")"
local _category="$(echo "$_yaml" | yq r - "category")"
if [[ -n $_categories ]]; then
echo "$_categories" | sed "s/categories *: *//;s/\[//;s/\].*//;s/, */,/g;s/\"//g;s/'//g"
echo "$_categories"
elif [[ -n $_category ]]; then
echo "$_category" | sed "s/category *: *//;s/\[//;s/\].*//;s/, */,/g;s/\"//g;s/'//g"
echo "$_category"
fi
}
read_tags() {
local _yaml="$(_read_yaml "$1")"
echo "$_yaml" | grep "^tags *:" | sed "s/tags *: *//;s/\[//;s/\].*//;s/, */,/g;s/\"//g;s/'//g"
local _tags="$(echo "$_yaml" | yq r - "tags.*")"
local _tag="$(echo "$_yaml" | yq r - "tag")"
if [[ -n $_tags ]]; then
echo "$_tags"
elif [[ -n $_tag ]]; then
echo "$_tag"
fi
}
init() {
@ -102,19 +109,19 @@ create_pages() {
if [[ -n $1 ]]; then
# split string to array
IFS_BAK=$IFS
IFS=','
IFS=$'\n'
local _string=$1
case $2 in
$TYPE_CATEGORY)
for i in ${_string#,}; do
for i in $_string; do
create_category "$i"
done
;;
$TYPE_TAG)
for i in ${_string#,}; do
for i in $_string; do
create_tag "$i"
done
;;