synOCR ist eine einfache GUI für den Dockercontainer OCRmyPDF auf Synology Diskstation.

Die Downloadseite findest du hier: https://geimist.eu/link/synocrdownload
Hilfe und Diskussion hier im Forum: https://geimist.eu/link/synocrforum
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.

151 lines
4.3KB

  1. #!/bin/bash
  2. #----------------------------------------------------------------------------------------
  3. # Scriptaufruf:
  4. #----------------------------------------------------------------------------------------
  5. # erstellt das SPK aus dem aktuellen master-branch vom Server:
  6. # sh ./build_spk.sh
  7. #
  8. # erstellt das SPK aus dem als Parameter übergebenen Release vom Server:
  9. # sh ./build_spk.sh 4.0.7
  10. #
  11. #----------------------------------------------------------------------------------------
  12. # Ordnerstruktur:
  13. #----------------------------------------------------------------------------------------
  14. # ./APP --> Arbeitsumgebung (erstellen/editieren/verschieben)
  15. # ./PKG --> Archivordner zum Aufbau des SPK (Startscripte etc.)
  16. #
  17. set -euo pipefail
  18. IFS=$'\n\t'
  19. build_tmp=$(mktemp -d -t tmp.XXXXXXXXXX)
  20. function finish {
  21. git worktree remove --force "$build_tmp"
  22. rm -rf "$build_tmp"
  23. }
  24. trap finish EXIT
  25. #######
  26. project="synOCR"
  27. #######
  28. if ! [ -x "$(command -v git)" ]; then
  29. echo 'Error: git is not installed.' >&2
  30. exit 1
  31. fi
  32. if ! [ -x "$(command -v fakeroot)" ]; then
  33. if [ $(whoami) != "root" ]; then
  34. echo "WARNUNG: fakeroot ist nicht installiert und du bist auch nicht root!" >&2
  35. exit 1
  36. else
  37. FAKEROOT=""
  38. fi
  39. else
  40. FAKEROOT=$(command -v fakeroot)
  41. fi
  42. # Arbeitsverzeichnis auslesen und hineinwechseln:
  43. # ---------------------------------------------------------------------
  44. # shellcheck disable=SC2086
  45. APPDIR=$(cd "$(dirname $0)";pwd)
  46. cd "${APPDIR}"
  47. git pull # aktualisieren
  48. buildversion=${1:-latest}
  49. taggedversions=$(git tag)
  50. echo " - INFO: Erstelle den temporären Buildordner und kopiere Sourcen hinein ..."
  51. git worktree add --force "$build_tmp" "$(git rev-parse --abbrev-ref HEAD)"
  52. pushd "$build_tmp"
  53. #set_spk_version="latest-$(date +%s)-$(git log -1 --format="%h")"
  54. set_spk_version="latest_($(date +%Y)-$(date +%m)-$(date +%d)_$(date +%H)-$(date +%M))_$(git log -1 --format="%h")"
  55. if echo "$taggedversions" | egrep -q "$buildversion"; then
  56. echo "git checkout zu $buildversion"
  57. git checkout "$buildversion"
  58. set_spk_version="$buildversion"
  59. else
  60. echo "ACHTUNG: Die gewünschte Version wurde im Repository nicht gefunden!"
  61. echo "Die $(git rev-parse --abbrev-ref HEAD)-branch wird verwendet!"
  62. fi
  63. # fallback to old app dir
  64. if [ -d "$build_tmp"/Build ]; then
  65. APP=Build
  66. else
  67. APP=APP
  68. fi
  69. # fallback to old pkg dir
  70. if [ -d "$build_tmp"/Pack ]; then
  71. PKG=Pack
  72. else
  73. PKG=PKG
  74. fi
  75. build_version=$(grep version "$build_tmp/$PKG/INFO" | awk -F '"' '{print $2}')
  76. #set_spk_version=$build_version
  77. echo " - INFO: Es wird foldende Version geladen und gebaut: $set_spk_version - BUILD-Version (INFO-File): $build_version"
  78. # Ausführung: Erstellen des SPK
  79. echo ""
  80. echo "-----------------------------------------------------------------------------------"
  81. echo " SPK wird erstellt..."
  82. echo "-----------------------------------------------------------------------------------"
  83. # Falls versteckter Ordners /.helptoc vorhanden, diesen nach /helptoc umbenennen
  84. if test -d "${build_tmp}/.helptoc"; then
  85. echo ""
  86. echo " - INFO: Versteckter Ordner /.helptoc wurde lokalisiert und nach /helptoc umbenannt"
  87. mv "${build_tmp}/.helptoc" "${build_tmp}/helptoc"
  88. fi
  89. # Rechte anpassen
  90. echo ""
  91. echo " - INFO: Dateirechte anpassen ..."
  92. for i in $(find "${build_tmp}/APP/" -type f)
  93. do
  94. # echo "ändere APP: $i"
  95. chmod 755 "$i"
  96. chown root:root "$i"
  97. done
  98. for i in $(find "${build_tmp}/PKG/" -type f)
  99. do
  100. # echo "ändere PKG: $i"
  101. chmod 755 "$i"
  102. chown root:root "$i"
  103. done
  104. # Packen und Ablegen der aktuellen Installation in den entsprechenden /Pack - Ordner
  105. echo ""
  106. echo " - INFO: Das Archiv package.tgz wird erstellt..."
  107. $FAKEROOT tar -C "${build_tmp}"/"$APP" -czf "${build_tmp}"/"$PKG"/package.tgz .
  108. # Wechsel in den Ablageort von package.tgz bezüglich Aufbau des SPK's
  109. cd "${build_tmp}"/"$PKG"
  110. # Erstellen des eigentlichen SPK's
  111. echo ""
  112. echo " - INFO: Das SPK wird erstellt..."
  113. $FAKEROOT tar -cf "${project}"_"$set_spk_version".spk *
  114. cp -f "${project}"_"$set_spk_version".spk "${APPDIR}"
  115. echo ""
  116. echo "-----------------------------------------------------------------------------------"
  117. echo " Das SPK wurde erstellt und befindet sich unter..."
  118. echo "-----------------------------------------------------------------------------------"
  119. echo ""
  120. echo " ${APPDIR}/${project}_$set_spk_version.spk"
  121. echo ""
  122. exit 0