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.

createPluginJar.sh 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/bin/bash
  2. # This script will create a plugin jar file for a given plugin.
  3. . build-functions.sh
  4. VALID_EXTS="class,png,exe,dll,html,css,js,gif,py"
  5. if [ "${1}" = "" -o "${2}" = "" ]; then
  6. echo "Usage Example: ${0} com.dmdirc.addons.windowstatus WindowStatusPlugin"
  7. echo "The above would create WindowStatusPlugin.jar in the plugins/ folder of the current dir"
  8. exit;
  9. fi
  10. destdir=${PWD}
  11. srcdir=${PWD}/modules/plugins/
  12. pluginname=${1}
  13. foldername=${pluginname//.//}
  14. if [ "${REBUILDPLUGINS}" != "true" ]; then
  15. newer=`find ${srcdir}/src/${foldername} -type f -newer ${destdir}/plugins/${2}.jar 2>&1 | wc -l`
  16. if [ $newer -eq 0 ]; then
  17. echo "${2}.jar appears to be up-to-date";
  18. exit 0;
  19. fi
  20. fi;
  21. echo "Creating ${2}.jar for ${pluginname} (${foldername})"
  22. if [ ! -e modules/plugins/src/${foldername}/plugin.config ]; then
  23. echo "no plugin.config found";
  24. exit 0;
  25. fi
  26. #echo "looking for classes"
  27. TMPDIR=`safe_mktemp $foldername`
  28. #echo "Using temp dir: ${TMPDIR}"
  29. cd $TMPDIR
  30. mkdir META-INF
  31. if [ -e "${srcdir}/src/${foldername}/plugin.config" ]; then
  32. cp "${srcdir}/src/${foldername}/plugin.config" META-INF/
  33. fi;
  34. if [ -d "${srcdir}/src/${foldername}/licences/" ]; then
  35. cp -r "${srcdir}/src/${foldername}/licences/" META-INF/licences/
  36. fi;
  37. if [ -d "${srcdir}/src/${foldername}/identities/" ]; then
  38. cp -r "${srcdir}/src/${foldername}/identities/" META-INF/identities/
  39. fi;
  40. # Do the same for plugin.config
  41. # This is rudimentary, it a version: section already exists (eg to specify
  42. # friendlyversion) then it won't add the number= key.
  43. if [ -e META-INF/plugin.config ]; then
  44. VERSIONLINE=`grep -n "version:$" META-INF/plugin.config | cut -f 1 -d ':'`
  45. if [ -z "$VERSIONLINE" ]; then
  46. sed 's/keysections:/keysections:\n version/g' META-INF/plugin.config > META-INF/plugin.config.temp
  47. rm -Rf META-INF/plugin.config
  48. mv META-INF/plugin.config.temp META-INF/plugin.config
  49. fi;
  50. GIT=`which git`
  51. REV=$(${GIT} --git-dir "${srcdir}/.git" describe --tags `${GIT} --git-dir "${srcdir}/.git" rev-list --max-count=1 HEAD -- "src/${foldername}"`);
  52. echo "" >> META-INF/plugin.config
  53. echo "" >> META-INF/plugin.config
  54. echo "version:" >> META-INF/plugin.config;
  55. echo " number=$REV" >> META-INF/plugin.config;
  56. fi;
  57. foo=`echo $foldername | sed -e 's/\/[^\/]*$//g'`
  58. mkdir -p "$foo"
  59. cd "${foo}"
  60. ln -s "${destdir}/build/classes/${foldername}" .
  61. cd "$TMPDIR"
  62. mkdir -p "${destdir}/plugins/"
  63. rm -Rf "${destdir}/plugins/${2}.jar"
  64. jar -cvf "${srcdir}/src/${foldername}/${2}.jar" META-INF >/dev/null
  65. bit=""
  66. while [ 1 -eq 1 ]; do
  67. bit=${bit}/*
  68. ls ${foo}${bit}/* >/dev/null 2>&1
  69. if [ ${?} -ne 0 ]; then
  70. break;
  71. else
  72. DIR="${PWD}"
  73. for prepackage in `ls "${srcdir}/src/${foldername}${bit}/prePackage.sh" 2>/dev/null`; do
  74. cd `dirname "${prepackage}"`
  75. /bin/sh "${prepackage}"
  76. cd ${DIR}
  77. done;
  78. FILES="ls -1 "${foo}${bit}/"*.{${VALID_EXTS}}"
  79. FILES=`eval ${FILES} 2>/dev/null`
  80. jar -uvf "${srcdir}/src/${foldername}/${2}.jar" ${FILES} >/dev/null
  81. fi
  82. done
  83. mv "${srcdir}/src/${foldername}/${2}.jar" "${destdir}/plugins/"
  84. cd "${srcdir}"
  85. rm -Rf ${TMPDIR}
  86. #echo "done";