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.

156 lines
5.8KB

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