KXStudio Website https://kx.studio/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
5.4KB

  1. #!/bin/bash
  2. set -e
  3. cd $(dirname $0)
  4. PACKAGES_ARCHS=("amd64" "arm64" "armhf" "i386")
  5. PACKAGES_BLACKLIST=("calf-ladspa" "carla-lv2" "carla-vst" "carla-bridge-linux32" "carla-bridge-linux64" "distrho-src" "lv2vst")
  6. PACKAGES_BASE_URL="http://ppa.launchpad.net/kxstudio-debian/plugins/ubuntu/"
  7. # rm -f Packages.gz Packages
  8. #
  9. # wget -q http://ppa.launchpad.net/kxstudio-debian/plugins/ubuntu/dists/bionic/main/binary-amd64/Packages.gz
  10. # gzip -d Packages.gz
  11. PACKAGES=$(cat Packages | grep "Package: " | sed "s/Package: //g" | sort)
  12. function is_blacklisted() {
  13. local TEST="${1}"
  14. local PACKAGE
  15. for PACKAGE in ${PACKAGES_BLACKLIST[@]}; do
  16. if [ ${TEST} = ${PACKAGE} ]; then
  17. return 0
  18. fi
  19. done
  20. return 1
  21. }
  22. function has_data_package() {
  23. local TEST="${1}-data"
  24. local PACKAGE
  25. for PACKAGE in ${PACKAGES[@]}; do
  26. if [ ${TEST} = ${PACKAGE} ]; then
  27. return 0
  28. fi
  29. done
  30. return 1
  31. }
  32. for PACKAGE in ${PACKAGES[@]}; do
  33. if is_blacklisted ${PACKAGE}; then
  34. continue
  35. fi
  36. PACKAGE_LINESTART=$(cat Packages | grep -x -n "Package: ${PACKAGE}" | cut -d ':' -f 1)
  37. PACKAGE_NUMLINES=$(cat Packages | tail -n +$((${PACKAGE_LINESTART} + 1)) | grep -n "Package: " | head -n 1 | cut -d ':' -f 1)
  38. if [ -n "${PACKAGE_NUMLINES}" ]; then
  39. PACKAGE_DETAILS=$(cat Packages | tail -n +${PACKAGE_LINESTART} | head -n ${PACKAGE_NUMLINES})
  40. else
  41. PACKAGE_DETAILS=$(cat Packages | tail -n +${PACKAGE_LINESTART})
  42. fi
  43. PACKAGE_FILENAME=$(echo "${PACKAGE_DETAILS}" | awk 'sub("Filename: ","")')
  44. if echo "${PACKAGE_FILENAME}" | grep -q "_all.deb"; then
  45. continue
  46. fi
  47. PACKAGE_DATA=$(has_data_package "${PACKAGE}" && echo "${PACKAGE}-data" || echo)
  48. PACKAGE_DESCRIPTION=$(echo "${PACKAGE_DETAILS}" | awk 'sub("Description: ","")')
  49. PACKAGE_PROVIDES=$(echo "${PACKAGE_DETAILS}" | awk 'sub("Provides: ","")')
  50. PACKAGE_SIZE=$(echo "${PACKAGE_DETAILS}" | grep -v "Installed-Size:" | awk 'sub("Size: ","")')
  51. PACKAGE_VERSION=$(echo "${PACKAGE_DETAILS}" | awk 'sub("Version: ","")' | cut -d ':' -f 2 | cut -d '-' -f 1)
  52. echo "<div class=\"repository-package\">"
  53. # screenshot
  54. SCREENSHOT=${PACKAGE}
  55. if [ ! -f "./screenshots/${SCREENSHOT}.png" ]; then
  56. SCREENSHOT=$(echo "${SCREENSHOT}" | sed "s/-lv2//g" | sed "s/-vst//g")
  57. if [ ! -f "./screenshots/${SCREENSHOT}.png" ]; then
  58. SCREENSHOT=""
  59. fi
  60. fi
  61. if [ -n "${SCREENSHOT}" ]; then
  62. echo "<div><a href=\"/repo/screenshots/${SCREENSHOT}.png\"><img src=\"/repo/screenshots/${SCREENSHOT}.png\" alt=\"${PACKAGE}\" class=\"img_thumb_150\"/></a></div>"
  63. else
  64. echo "<div><img src=\"/repo/screenshots/nogui.png\" alt=\"${PACKAGE}\" class=\"img_thumb_150\"/></div>"
  65. fi
  66. # full table
  67. echo "<div><table>"
  68. echo "<tr><td>Package Name:</td><td>${PACKAGE}</td></tr>"
  69. echo "<tr><td>Description:</td><td>${PACKAGE_DESCRIPTION}</td></tr>"
  70. echo "<tr><td>Version:</td><td>${PACKAGE_VERSION}</td></tr>"
  71. echo "<tr><td>Expected size:</td><td>"
  72. if [ ${PACKAGE_SIZE} -gt 999999 ]; then
  73. echo "$((${PACKAGE_SIZE} / 1024 / 1024))Mb"
  74. else
  75. echo "$((${PACKAGE_SIZE} / 1024))Kb"
  76. fi
  77. if [ -n "${PACKAGE_DATA}" ]; then
  78. PACKAGE_DATA_LINESTART=$(cat Packages | grep -x -n "Package: ${PACKAGE_DATA}" | cut -d ':' -f 1)
  79. PACKAGE_DATA_NUMLINES=$(cat Packages | tail -n +$((${PACKAGE_DATA_LINESTART} + 1)) | grep -n "Package: " | head -n 1 | cut -d ':' -f 1)
  80. if [ -n "${PACKAGE_DATA_NUMLINES}" ]; then
  81. PACKAGE_DATA_DETAILS=$(cat Packages | tail -n +${PACKAGE_DATA_LINESTART} | head -n ${PACKAGE_DATA_NUMLINES})
  82. else
  83. PACKAGE_DATA_DETAILS=$(cat Packages | tail -n +${PACKAGE_DATA_LINESTART})
  84. fi
  85. PACKAGE_DATA_SIZE=$(echo "${PACKAGE_DATA_DETAILS}" | grep -v "Installed-Size:" | awk 'sub("Size: ","")')
  86. echo "+ $((${PACKAGE_DATA_SIZE} / 1024 / 1024))Mb (data)"
  87. fi
  88. echo "</td></tr>"
  89. if [ -z "${PACKAGE_PROVIDES}" ]; then
  90. echo "<tr><td>Provides:</td><td>??</td></tr>"
  91. else
  92. echo "<tr><td>Provides:</td><td>"
  93. if echo "${PACKAGE_PROVIDES}" | grep -q standalone-plugin; then
  94. echo "Standalone "
  95. fi
  96. if echo "${PACKAGE_PROVIDES}" | grep -q ladspa-plugin; then
  97. echo "LADSPA "
  98. fi
  99. if echo "${PACKAGE_PROVIDES}" | grep -q dssi-plugin; then
  100. echo "DSSI "
  101. fi
  102. if echo "${PACKAGE_PROVIDES}" | grep -q lv2-plugin; then
  103. echo "LV2 "
  104. fi
  105. if echo "${PACKAGE_PROVIDES}" | grep -q vst-plugin; then
  106. echo "VST2 "
  107. fi
  108. if echo "${PACKAGE_PROVIDES}" | grep -q vst3-plugin; then
  109. echo "VST3 "
  110. fi
  111. echo "</td></tr>"
  112. fi
  113. echo "<tr><td>Downloads:</td><td>"
  114. for ARCH in ${PACKAGES_ARCHS[@]}; do
  115. PACKAGE_FILENAME_ARCHED=$(echo "${PACKAGE_FILENAME}" | sed "s/_amd64.deb/_${ARCH}.deb/g")
  116. echo "<a href=\"${PACKAGES_BASE_URL}${PACKAGE_FILENAME_ARCHED}\" target=\"_blank\">${ARCH}</a>&nbsp;&nbsp;"
  117. done
  118. if [ -n "${PACKAGE_DATA}" ]; then
  119. PACKAGE_FILENAME_DATA=$(echo "${PACKAGE_FILENAME}" | sed "s|/${PACKAGE}_|/${PACKAGE_DATA}_|g" | sed "s/_amd64.deb/_all.deb/g")
  120. echo "<a href=\"${PACKAGES_BASE_URL}${PACKAGE_FILENAME_DATA}\" target=\"_blank\">data</a>"
  121. fi
  122. echo "</tr>"
  123. echo "</table></div></div>"
  124. # separator
  125. echo "<br/>"
  126. echo
  127. done