parse_hpcc_pom.sh 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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_MINOR" % 2 == 1 )) ; then
  49. HPCC_MATURITY=trunk
  50. else
  51. if (( "$HPCC_POINT" % 2 != 1 )) ; then
  52. HPCC_MATURITY=rc
  53. else
  54. HPCC_MATURITY=closedown
  55. fi
  56. fi
  57. fi
  58. }
  59. function set_tag()
  60. {
  61. local _prefix=$1
  62. local _maturity=$HPCC_MATURITY
  63. if [ "$HPCC_MATURITY" == "rc" ] ; then
  64. _maturity=SNAPSHOT
  65. fi
  66. # will keep -release or -SNAPSHOT as maturity for tagging
  67. HPCC_SHORT_TAG=${HPCC_MAJOR}.${HPCC_MINOR}.${HPCC_POINT}-${HPCC_SEQUENCE}-${_maturity}
  68. HPCC_LONG_TAG=${_prefix}_$HPCC_SHORT_TAG
  69. }
  70. function update_version_file()
  71. {
  72. # Update the pom.xml file
  73. local _new_maturity=$1
  74. local _new_point=$2
  75. local _new_sequence=$3
  76. local _new_minor=$4
  77. if [ -z "$_new_minor" ] ; then
  78. _new_minor=$HPCC_MINOR
  79. fi
  80. if [ "$_new_maturity" == "trunk" ]; then
  81. _new_maturity=-SNAPSHOT
  82. elif [ "$_new_maturity" == "rc" ]; then
  83. _new_maturity=-SNAPSHOT
  84. elif [ "$_new_maturity" == "closedown" ]; then
  85. _new_maturity=-SNAPSHOT
  86. else
  87. # don't set for non-snapshots
  88. _new_maturity=
  89. fi
  90. local _v="${HPCC_MAJOR}.${_new_minor}.${_new_point}-${_new_sequence}${_new_maturity}"
  91. if [ $_mvn_return_value -eq 0 ]; then
  92. local version_update_cmd="mvn versions:set -DnewVersion=$_v"
  93. else
  94. local version_update_cmd="sed -i.old 's/${HPCC_VERSION}/${_v}/' pom.xml"
  95. fi
  96. if [ -n "$VERBOSE" ] ; then
  97. echo "$version_update_cmd"
  98. fi
  99. if [ -z "$DRYRUN" ] ; then
  100. if [ $_mvn_return_value -eq 0 ]; then
  101. eval "$version_update_cmd"
  102. # find all modified pom.xml in directory tree
  103. find . -name 'pom.xml' | xargs git add
  104. else
  105. #handle submodules since maven isn't being used to do it for us
  106. local _submodules=($(sed 's/^[ \t]*//' pom.xml | awk 'BEGIN {FS="[<>]";} /<module>/ {print $3;}'))
  107. if [ ${#_submodules[@]} -gt 0 ]; then
  108. for _d in "${_submodules[@]}"; do
  109. pushd $_d > /dev/null
  110. eval "$version_update_cmd"
  111. git add pom.xml
  112. popd > /dev/null
  113. done
  114. fi
  115. eval "$version_update_cmd"
  116. git add pom.xml
  117. fi
  118. else
  119. echo "Update to $_v"
  120. fi
  121. }