mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-01-10 18:01:03 +01:00
Merge pull request #2183 from alexbelgium/codex/update-readme-generator-for-config.yaml
Support README generation from YAML add-on configs
This commit is contained in:
88
.github/workflows/daily_README.yaml
vendored
88
.github/workflows/daily_README.yaml
vendored
@@ -18,6 +18,49 @@ jobs:
|
||||
|
||||
echo "Starting"
|
||||
|
||||
# Ensure dependencies available
|
||||
echo "Installing PyYAML"
|
||||
python3 -m pip install --user --quiet PyYAML
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
|
||||
get_config_file() {
|
||||
if [ -f "$1/config.json" ]; then
|
||||
echo "$1/config.json"
|
||||
elif [ -f "$1/config.yaml" ]; then
|
||||
echo "$1/config.yaml"
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
convert_config_to_json() {
|
||||
local source="$1"
|
||||
if [[ "$source" == *.yaml ]]; then
|
||||
local temp_file
|
||||
temp_file="$(mktemp)"
|
||||
python3 - <<'PY' "$source" "$temp_file"
|
||||
import json
|
||||
import sys
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import yaml
|
||||
|
||||
source = Path(sys.argv[1])
|
||||
target = Path(sys.argv[2])
|
||||
|
||||
with source.open("r", encoding="utf-8") as fp:
|
||||
data = yaml.safe_load(fp)
|
||||
|
||||
with target.open("w", encoding="utf-8") as fp:
|
||||
json.dump(data, fp)
|
||||
PY
|
||||
echo "$temp_file"
|
||||
else
|
||||
echo "$source"
|
||||
fi
|
||||
}
|
||||
|
||||
# Prepare template
|
||||
|
||||
cp .templates/.README.md README2.md
|
||||
@@ -30,12 +73,15 @@ jobs:
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
for f in $( find -- * -maxdepth 0 -type d | sort -r ); do
|
||||
if [ -f "$f"/config.json ]; then
|
||||
NAME=$(jq -r '.name' "$f"/config.json)
|
||||
CONFIG_SRC="$(get_config_file "$f")"
|
||||
if [ -n "$CONFIG_SRC" ]; then
|
||||
CONFIG_FILE="$(convert_config_to_json "$CONFIG_SRC")"
|
||||
NAME=$(jq -r '.name' "$CONFIG_FILE")
|
||||
if [[ "$f" != "$NAME" ]]; then
|
||||
echo "$f" > "$f"/oldname
|
||||
mv "$f" "$NAME"
|
||||
fi
|
||||
if [[ "$CONFIG_FILE" != "$CONFIG_SRC" ]]; then rm "$CONFIG_FILE"; fi
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -44,17 +90,20 @@ jobs:
|
||||
|
||||
find -- * -maxdepth 0 -type d | sort -r | while read -r f; do
|
||||
# $f is an addon directory
|
||||
if [ -f "$f/config.json" ]; then
|
||||
CONFIG_SRC="$(get_config_file "$f")"
|
||||
if [ -n "$CONFIG_SRC" ]; then
|
||||
|
||||
CONFIG_FILE="$(convert_config_to_json "$CONFIG_SRC")"
|
||||
|
||||
echo "Project $f"
|
||||
|
||||
# Get variables
|
||||
if [ -f "$f/oldname" ]; then FOLDERNAME="$(cat "$f/oldname")"; else FOLDERNAME="$f"; fi
|
||||
NAME="$(jq -r '.name' "$f/config.json")"
|
||||
DESCRIPTION="$(jq -r '.description' "$f/config.json")"
|
||||
NAME="$(jq -r '.name' "$CONFIG_FILE")"
|
||||
DESCRIPTION="$(jq -r '.description' "$CONFIG_FILE")"
|
||||
# Get icon
|
||||
if [ "$(jq '.panel_icon' "$f/config.json")" != null ]; then
|
||||
ICON="$(jq -r '.panel_icon' "$f/config.json")"
|
||||
if [ "$(jq '.panel_icon' "$CONFIG_FILE")" != null ]; then
|
||||
ICON="$(jq -r '.panel_icon' "$CONFIG_FILE")"
|
||||
ICON="${ICON#*:}"
|
||||
ICON=""
|
||||
else
|
||||
@@ -64,24 +113,29 @@ jobs:
|
||||
# Write infos
|
||||
echo "Writing infos"
|
||||
sed -i "$ADDONSLINE"'{G;}' README2.md
|
||||
if [[ "$(jq '.schema' "$f/config.json" 2>/dev/null)" == *"localdisks"* ]]; then sed -i "$ADDONSLINE"'a ![localdisks][localdisks-badge]' README2.md; fi
|
||||
if [[ "$(jq '.schema' "$f/config.json" 2>/dev/null)" == *"networkdisks"* ]]; then sed -i "$ADDONSLINE"'a ![smb][smb-badge]' README2.md; fi
|
||||
if [[ "$(jq '.full_access' "$f/config.json" 2>/dev/null)" == "true" ]]; then sed -i "$ADDONSLINE"'a ![full_access][full_access-badge]' README2.md; fi
|
||||
if [[ "$(jq '.services[]' "$f/config.json" 2>/dev/null)" == *"mqtt"* ]]; then sed -i "$ADDONSLINE"'a ![mqtt][mqtt-badge]' README2.md; fi
|
||||
if [[ "$(jq '.services[]' "$f/config.json" 2>/dev/null)" == *"mysql"* ]]; then sed -i "$ADDONSLINE"'a ![MariaDB][mariadb-badge]' README2.md; fi
|
||||
if [[ "$(jq '.ingress' "$f/config.json" 2>/dev/null)" == "true" ]]; then sed -i "$ADDONSLINE"'a ![ingress][ingress-badge]' README2.md; fi
|
||||
if [[ "$(jq '.arch[]' "$f/config.json")" == *"armv7"* ]]; then
|
||||
if [[ "$(jq '.schema' "$CONFIG_FILE" 2>/dev/null)" == *"localdisks"* ]]; then sed -i "$ADDONSLINE"'a ![localdisks][localdisks-badge]' README2.md; fi
|
||||
if [[ "$(jq '.schema' "$CONFIG_FILE" 2>/dev/null)" == *"networkdisks"* ]]; then sed -i "$ADDONSLINE"'a ![smb][smb-badge]' README2.md; fi
|
||||
if [[ "$(jq '.full_access' "$CONFIG_FILE" 2>/dev/null)" == "true" ]]; then sed -i "$ADDONSLINE"'a ![full_access][full_access-badge]' README2.md; fi
|
||||
if [[ "$(jq '.services[]' "$CONFIG_FILE" 2>/dev/null)" == *"mqtt"* ]]; then sed -i "$ADDONSLINE"'a ![mqtt][mqtt-badge]' README2.md; fi
|
||||
if [[ "$(jq '.services[]' "$CONFIG_FILE" 2>/dev/null)" == *"mysql"* ]]; then sed -i "$ADDONSLINE"'a ![MariaDB][mariadb-badge]' README2.md; fi
|
||||
if [[ "$(jq '.ingress' "$CONFIG_FILE" 2>/dev/null)" == "true" ]]; then sed -i "$ADDONSLINE"'a ![ingress][ingress-badge]' README2.md; fi
|
||||
if [[ "$(jq '.arch[]' "$CONFIG_FILE")" == *"armv7"* ]]; then
|
||||
sed -i "$ADDONSLINE"'a ![armv7][armv7-badge]' README2.md
|
||||
else sed -i "$ADDONSLINE"'a ![armv7no][armv7no-badge]' README2.md; fi || true
|
||||
if [[ "$(jq '.arch[]' "$f/config.json")" == *"amd64"* ]]; then
|
||||
if [[ "$(jq '.arch[]' "$CONFIG_FILE")" == *"amd64"* ]]; then
|
||||
sed -i "$ADDONSLINE"'a ![amd64][amd64-badge]' README2.md
|
||||
else sed -i "$ADDONSLINE"'a ![amd64no][amd64no-badge]' README2.md; fi || true
|
||||
if [[ "$(jq '.arch[]' "$f/config.json")" == *"aarch64"* ]]; then
|
||||
if [[ "$(jq '.arch[]' "$CONFIG_FILE")" == *"aarch64"* ]]; then
|
||||
sed -i "$ADDONSLINE"'a ![aarch64][aarch64-badge]' README2.md
|
||||
else sed -i "$ADDONSLINE"'a ![aarch64no][aarch64no-badge]' README2.md; fi || true
|
||||
if [[ -f "$f/updater.json" ]]; then sed -i "$ADDONSLINE"'a ' README2.md; fi
|
||||
sed -i "$ADDONSLINE"'a   ' README2.md || true
|
||||
if [[ "$CONFIG_SRC" == *.yaml ]]; then
|
||||
sed -i "$ADDONSLINE"'a   ' README2.md || true
|
||||
else
|
||||
sed -i "$ADDONSLINE"'a   ' README2.md || true
|
||||
fi
|
||||
sed -i "$ADDONSLINE"'a ✓ '"$ICON"' ['"$NAME"']('"$FOLDERNAME"'/) : '"$DESCRIPTION\\n" README2.md
|
||||
if [[ "$CONFIG_FILE" != "$CONFIG_SRC" ]]; then rm "$CONFIG_FILE"; fi
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
Reference in New Issue
Block a user