Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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