splitJson.sh 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #!/bin/bash
  2. t32b='../template/portainer-v2-arm32.json'
  3. t64b='../template/portainer-v2-arm64.json'
  4. appinfo='./appinfo.json'
  5. appsfolder='../template/apps'
  6. mkdir -p "$appsfolder"
  7. Napps=$( jq '.templates | length' "$t64b" )
  8. for app in $(seq 0 $(( Napps - 1 ))); do
  9. info=$( jq ".templates[$app]" "$t64b" )
  10. Title=$( echo "$info" | jq ".title" )
  11. Type=$( echo "$info" | jq ".type" )
  12. fileName="$appsfolder/$( echo "$Title" | tr -d '"' | tr '[:upper:]' '[:lower:]' | tr ' /' '--' ).json"
  13. info=$( echo "$info" | sed 's/"image":/"image64":/g' | sed 's/"stackfile":/"stackfile64":/g' )
  14. has32=$( jq 'any(.templates[].title=='"$Title"'; .)' "$t32b" )
  15. if $has32; then
  16. if [ "$Type" == "3" ]; then
  17. stack32=$( jq '.templates[] | select(.title=='"$Title"') | .repository.stackfile' "$t32b" )
  18. info=$( echo "$info" | jq '.repository += {"stackfile32": '"$stack32"'}' )
  19. else
  20. img32=$( jq '.templates[] | select(.title=='"$Title"') | .image' "$t32b" )
  21. info=$( echo "$info" | jq '. += {"image32": '"$img32"'}' )
  22. fi
  23. fi
  24. json=$( jq '.apps[] | select(.Title=='"$Title"')' "$appinfo" )
  25. # Web
  26. if value=$( echo "$json" | jq -e '.Web' | tr -d '"' ) ; then
  27. info=$( echo "$info" | jq --arg v "$value" '. += {"webpage": $v}' )
  28. fi
  29. # Official Documentation
  30. if value=$( echo "$json" | jq -e '.OfficialDoc' | tr -d '"' ) ; then
  31. info=$( echo "$info" | jq --arg v "$value" '. += {"officialDoc": $v}' )
  32. fi
  33. # Youtube Video
  34. if value=$( echo "$json" | jq -e '.VideoID' ) ; then
  35. info=$( echo "$info" | jq '. += {"videoID": '"$value"'}' )
  36. fi
  37. # Pi-Hosted Doc
  38. if id=$( echo "$json" | jq -e '.DocID' ) ; then
  39. value=$( jq '.docs[] | select(.ID=='"$id"') | .File' "$appinfo" | tr -d '"' )
  40. info=$( echo "$info" | jq --arg v "$value" '. += {"piHostedDoc": $v}' )
  41. fi
  42. # Pre-Install Script Doc
  43. if id=$( echo "$json" | jq -e '.ScriptID' ) ; then
  44. value=$( jq '.tools[] | select(.ID=='"$id"') | .File' "$appinfo" | tr -d '"' )
  45. info=$( echo "$info" | jq --arg v "$value" '. += {"preInstallScript": $v}' )
  46. fi
  47. # Extra scripts
  48. if ExtraID=$( echo "$json" | jq -e '.ExtraID' ) ; then
  49. # If only one entry
  50. if [ "$(echo "$ExtraID" | wc -l )" == "1" ]; then
  51. value=$(jq ".tools[] | select(.ID==$ExtraID) | .File" "$appinfo" | tr -d '"' )
  52. info=$( echo "$info" | jq --arg v "$value" '. += {"extraScript": $v}' )
  53. # If multiples entries
  54. else
  55. n_ext=$(echo "$ExtraID" | jq '. | length')
  56. value='['
  57. for n in $(seq 0 $(( n_ext - 1 ))); do
  58. extID=$(echo "$ExtraID" | jq ".[$n]" | tr -d \")
  59. v=$(jq ".tools[] | select(.ID==$extID) | .File" "$appinfo" | tr -d '"')
  60. value="$value $v,"
  61. done
  62. value="${value:0:-1} ]"
  63. info=$( echo "$info" | jq --arg v "$value" '. += {"extraScript": $v}' )
  64. fi
  65. else
  66. unset ExtraURL ExtraID
  67. fi
  68. echo "$info" | jq --tab --sort-keys '.' > "$fileName"
  69. unset has32 info Title Type img32 stack32 fileName
  70. done