ops_repository.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #! /bin/bash
  2. if [ $# != 2 ]; then echo "$# != 2"; exit 1; fi
  3. if [ ! -f $1 ]; then echo "$1 not exist"; exit 2; fi
  4. if [ "$(uname)" = "Darwin" ]; then
  5. SED=gsed
  6. else
  7. SED=sed
  8. fi
  9. BLDV=$1
  10. CMDV=$2
  11. if [ "${CMDV}" = "list" ]; then
  12. grep "^PKG_UPSTREAM_[-/_a-zA-Z0-9]*" ${BLDV} \
  13. | ${SED} 's/^PKG_UPSTREAM_\([^ ]*\) = \(.*\)$/[\1] \2/g'
  14. fi
  15. REPO_LIST=$( \
  16. grep "^PKG_UPSTREAM_[-/_a-zA-Z0-9]*" ${BLDV} \
  17. | ${SED} 's/^PKG_UPSTREAM_\([^ ]*\) = \(.*\)$/[\1] \2/g' \
  18. | cut -d' ' -f1 \
  19. | ${SED} 's/\[//g;s/\]//g;' \
  20. )
  21. if [ "${CMDV}" = "update" ]; then
  22. echo "Select repository to be updated, type 1 to update all repositories"|grep --color ".*"
  23. echo ""
  24. select O in "ALL REPOS" ${REPO_LIST}; do
  25. echo ""
  26. echo "Updating $O ..."|grep --color ".*"
  27. echo ""
  28. break
  29. done
  30. if [ "${O}" = "ALL REPOS" ]; then
  31. O=""
  32. fi
  33. REPOS=$(grep -o "^PKG_UPSTREAM_[-/_a-zA-Z0-9]*" ${BLDV}|grep "${O}"|sort -u|${SED} 's:PKG_UPSTREAM_::')
  34. for R in ${REPOS}; do
  35. UPSTREAM=$(grep -m 1 "^PKG_UPSTREAM_${R}" ${BLDV}|awk '{ print $NF }')
  36. SOURCE=$(grep -m 1 "^PKG_SOURCE_${R}" ${BLDV}|awk '{ print $NF }')
  37. BRANCH=$(grep -m 1 "^PKG_BRANCH_${R}" ${BLDV}|awk '{ print $NF }')
  38. [ "${BRANCH}" = "" ] && BRANCH="master"
  39. echo "[ ${SOURCE} ] <= : ${UPSTREAM} :: ${BRANCH}"
  40. set -x
  41. cd ${PACKAGE_DIR}
  42. rm -rf ${SOURCE}
  43. # --single-branch might doesn't exist for git <= 1.7.9.5
  44. #
  45. # git clone -q --bare -b ${BRANCH} --single-branch ${UPSTREAM} ${SOURCE}
  46. git clone -q --bare -b ${BRANCH} ${UPSTREAM} ${SOURCE}
  47. rm -rf ${SOURCE}/hooks/
  48. mkdir -p ${SOURCE}/hooks/
  49. touch ${SOURCE}/hooks/.gitkeep
  50. touch ${SOURCE}/refs/{heads,tags}/.gitkeep
  51. rm -rf ${TOP_DIR}.pkgs/${SOURCE/.git}
  52. cd ${OLDPWD}
  53. set +x
  54. done
  55. fi