123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #!/bin/bash
- # start script from it's folder
- cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null || exit
- # Standard file locations
- homedir='../../'
- . ../env.sh
- docIconBlue=""
- docIconRed=""
- scriptIcon=""
- # Create AppList title
- cp -f "$AppList_TEMPLATE" "$AppList"
- # Total apps per arch
- for Arch in {arm32,arm64,amd64}; do
- total=$(grep -lE '"(image|stackfile)(_'"$Arch"')?":' "$appsfolder"/*.json | wc -l )
- sed -i "s/XXX_${Arch}_XXX/$total/" "$AppList"
- done
- total=$(find "$appsfolder" -type f -iname '*.json' | wc -l )
- sed -i "s/XXX_total_XXX/$total/" "$AppList"
- # Generate App Table
- while IFS='' read -u 9 -r appfile || [[ -n $appfile ]]; do
- # Clear previous variables
- unset doc script vid oweb odoc type
- hasArm32=':x:'
- hasArm64=':x:'
- hasAmd64=':x:'
- # Get app json
- appconf=$( jq '.' "$appfile" )
- # App Title
- App=$( echo "$appconf" | jq '.title' | tr -d '"' )
- # App Architecture
- # tag with no specific architecture is added to all of them
- if echo "$appconf" | jq -e '.image' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile' &> /dev/null ; then
- hasArm32=':heavy_check_mark:'
- hasArm64=':heavy_check_mark:'
- hasAmd64=':heavy_check_mark:'
- # Parse tags with specific architectures
- else
- # Arm32
- if echo "$appconf" | jq -e '.image_arm32' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile_arm32' &> /dev/null ; then hasArm32=':heavy_check_mark:' ; fi
- # Arm64
- if echo "$appconf" | jq -e '.image_arm64' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile_arm64' &> /dev/null ; then hasArm64=':heavy_check_mark:' ; fi
- # Amd64
- if echo "$appconf" | jq -e '.image_amd64' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile_amd64' &> /dev/null ; then hasAmd64=':heavy_check_mark:' ; fi
- fi
- # Apps Type
- apptype=$( echo "$appconf" | jq '.type' | tr -d '"' )
- # Get App Webpage from app info
- oweb=$(echo "$appconf" | jq ".webpage" | tr -d '"' )
- if [ "$oweb" != "null" ]; then
- oweb="[$App]($oweb)"
- else
- oweb="$App"
- fi
- # Get App Official Doc from app info
- odoc=$(echo "$appconf" | jq ".officialDoc" | tr -d '"' )
- if [ "$odoc" != "null" ]; then
- odoc="[$docIconBlue]($odoc)"
- else
- unset odoc
- fi
- # Get Doc from app info
- doc=$(echo "$appconf" | jq ".piHostedDoc" | tr -d '"' )
- if [ "$doc" != "null" ]; then
- doc="[$docIconRed]($Docs$doc)"
- else
- unset doc
- fi
- # Get Install Script from app info
- script=$(echo "$appconf" | jq ".preInstallScript" | tr -d '"' )
- if [ "$script" != "null" ]; then
- script="[$scriptIcon]($Scripts$script)"
- else
- unset script
- fi
- # Get Video from app info
- if vidlist=$( echo "$appconf" | jq -e ".videoID" ) ; then
- # If only one entry
- if [ "$(echo "$vidlist" | wc -l )" == "1" ]; then
- vidURL=$(jq ".youtube[] | select(.ID==$vidlist) | .URL" "$appinfo" | tr -d '"')
- vidTitle=$(jq ".youtube[] | select(.ID==$vidlist) | .Title" "$appinfo" | tr -d '"')
- vidCh=$(jq ".youtube[] | select(.ID==$vidlist) | .Channel" "$appinfo" | tr -d '"')
- vid="[]($vidURL)"
- # If multiple entries
- else
- n_vid=$(echo "$vidlist" | jq '. | length')
- for n in $(seq 0 $(( n_vid - 1 ))); do
- vidd=$(echo "$vidlist" | jq ".[$n]" )
- vidURL=$(jq ".youtube[] | select(.ID==$vidd) | .URL" "$appinfo" | tr -d '"')
- vidTitle=$(jq ".youtube[] | select(.ID==$vidd) | .Title" "$appinfo" | tr -d '"')
- vidCh=$(jq ".youtube[] | select(.ID==$vidd) | .Channel" "$appinfo" | tr -d '"')
- if [ "$n" == "0" ] ; then
- vid="[]($vidURL)"
- else
- vid="$vid<br>[]($vidURL)"
- fi
- done
- fi
- else
- unset vid
- fi
- # Building App Line
- line="|$oweb|$hasArm32|$hasArm64|$hasAmd64|$apptype| $odoc | $doc | $script | $vid |"
- # Change container type to string (Default to Container when not set)
- line="${line//|1|/|Container|}"
- line="${line//|null|/|Container|}"
- line="${line//|3|/|Stack|}"
- # Add line to List
- echo "$line" >> "$AppList"
- done 9< <( LC_COLLATE=en_US.utf8 ls $appsfolder/*.json )
|