parse_hpcc_pom.sh 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #!/bin/bash
  2. #
  3. # Common utilities used by tools for automating tagging and release
  4. #
  5. #We want any failures to be fatal
  6. # Depends: maven
  7. set -e
  8. #default _mvn_return_value should be 0 for found
  9. _mvn_return_value=0
  10. if ! `which mvn 1>/dev/null 2>&1` ; then
  11. echo "Maven dependency not located"
  12. echo "-- Using gnu utils instead"
  13. _mvn_return_value=1
  14. fi
  15. # overwrite versionfile to pom.xml
  16. VERSIONFILE=pom.xml
  17. if [ ! -f $VERSIONFILE ]; then
  18. echo "Expected $VERSIONFILE not found"
  19. exit 2
  20. fi
  21. # overwrite parse_cmake to target pom files
  22. # expect ex: 7.6.2-0-SNAPSHOT, 7.6.2-1 (gold release), etc
  23. # Major.Minor.Point- Sequence if gold, Maturity if rc
  24. function parse_cmake()
  25. {
  26. if [ $_mvn_return_value -eq 0 ]; then
  27. HPCC_PROJECT=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)
  28. HPCC_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
  29. else
  30. HPCC_PROJECT=$(grep -m1 '<artifactId>' $VERSIONFILE | sed "s/^[ \t]*//" | awk 'BEGIN {FS="[<>]";} {print $3;}')
  31. HPCC_VERSION=$(grep -m1 '<version>' $VERSIONFILE | sed "s/^[ \t]*//" | awk 'BEGIN {FS="[<>]";} {print $3;}')
  32. fi
  33. HPCC_MAJOR=$(echo $HPCC_VERSION | awk 'BEGIN {FS="[.-]"}; {print $1};')
  34. HPCC_MINOR=$(echo $HPCC_VERSION | awk 'BEGIN {FS="[.-]"}; {print $2};')
  35. HPCC_POINT=$(echo $HPCC_VERSION | awk 'BEGIN {FS="[.-]"}; {print $3};')
  36. HPCC_SEQUENCE=$(echo $HPCC_VERSION | awk 'BEGIN {FS="[.-]"}; {print $4};')
  37. HPCC_MATURITY=$(echo $HPCC_VERSION | awk 'BEGIN {FS="[.-]"}; {print $5};')
  38. if ! `echo $HPCC_SEQUENCE | grep -Eq ^[0-9]+$`; then
  39. echo "Error: HPCC_SEQUENCE not an Integer"
  40. echo "-- possibly on branch using old versioning scheme"
  41. exit 2
  42. fi
  43. # translate pom maturity to what go_rc/go_gold understand
  44. if [ -z "$HPCC_MATURITY" ] ; then
  45. # branch on gold release
  46. HPCC_MATURITY=release
  47. elif [ "$HPCC_MATURITY" == "SNAPSHOT" ] ; then
  48. if (( "$HPCC_POINT" % 2 != 1 )) ; then
  49. HPCC_MATURITY=rc
  50. else
  51. HPCC_MATURITY=closedown
  52. fi
  53. fi
  54. }
  55. function set_tag()
  56. {
  57. local _prefix=$1
  58. local _maturity=$HPCC_MATURITY
  59. if [ "$HPCC_MATURITY" == "rc" ] ; then
  60. _maturity=SNAPSHOT
  61. fi
  62. # will keep -release or -SNAPSHOT as maturity for tagging
  63. HPCC_SHORT_TAG=${HPCC_MAJOR}.${HPCC_MINOR}.${HPCC_POINT}-${HPCC_SEQUENCE}-${_maturity}
  64. HPCC_LONG_TAG=${_prefix}_$HPCC_SHORT_TAG
  65. }
  66. function update_version_file()
  67. {
  68. # Update the pom.xml file
  69. local _new_maturity=$1
  70. local _new_point=$2
  71. local _new_sequence=$3
  72. local _new_minor=$4
  73. if [ -z "$_new_minor" ] ; then
  74. _new_minor=$HPCC_MINOR
  75. fi
  76. if [ "$_new_maturity" == "rc" ]; then
  77. _new_maturity=-SNAPSHOT
  78. elif [ "$_new_maturity" == "closedown" ]; then
  79. _new_maturity=-SNAPSHOT
  80. else
  81. # don't set for non-snapshots
  82. _new_maturity=
  83. fi
  84. local _v="${HPCC_MAJOR}.${_new_minor}.${_new_point}-${_new_sequence}${_new_maturity}"
  85. if [ $_mvn_return_value -eq 0 ]; then
  86. local version_update_cmd="mvn versions:set -DnewVersion=$_v"
  87. else
  88. local version_update_cmd="sed -i .old 's/${HPCC_VERSION}/${_v}/' pom.xml"
  89. fi
  90. if [ -n "$VERBOSE" ] ; then
  91. echo "$version_update_cmd"
  92. fi
  93. if [ -z "$DRYRUN" ] ; then
  94. if [ $_mvn_return_value -eq 0 ]; then
  95. eval "$version_update_cmd"
  96. # find all modified pom.xml in directory tree
  97. find . -name 'pom.xml' | xargs git add
  98. else
  99. #handle submodules since maven isn't being used to do it for us
  100. local _submodules=($(sed 's/^[ \t]*//' pom.xml | awk 'BEGIN {FS="[<>]";} /<module>/ {print $3;}'))
  101. if [ ${#_submodules[@]} -gt 0 ]; then
  102. for _d in "${_submodules[@]}"; do
  103. pushd $_d > /dev/null
  104. eval "$version_update_cmd"
  105. git add pom.xml
  106. popd > /dev/null
  107. done
  108. fi
  109. eval "$version_update_cmd"
  110. git add pom.xml
  111. fi
  112. else
  113. echo "Update to $_v"
  114. fi
  115. }