1#!/bin/sh 2# Copyright (C) 2009, Google Inc. 3# and other copyright owners as documented in the project's IP log. 4# 5# This program and the accompanying materials are made available 6# under the terms of the Eclipse Distribution License v1.0 which 7# accompanies this distribution, is reproduced below, and is 8# available at http://www.eclipse.org/org/documents/edl-v10.php 9# 10# All rights reserved. 11# 12# Redistribution and use in source and binary forms, with or 13# without modification, are permitted provided that the following 14# conditions are met: 15# 16# - Redistributions of source code must retain the above copyright 17# notice, this list of conditions and the following disclaimer. 18# 19# - Redistributions in binary form must reproduce the above 20# copyright notice, this list of conditions and the following 21# disclaimer in the documentation and/or other materials provided 22# with the distribution. 23# 24# - Neither the name of the Eclipse Foundation, Inc. nor the 25# names of its contributors may be used to endorse or promote 26# products derived from this software without specific prior 27# written permission. 28# 29# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 30# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 31# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 32# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 33# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 34# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 35# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 36# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 37# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 38# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 40# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 41# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 42 43 44# Update all pom.xml with new build number 45# 46# TODO(spearce) This should be converted to some sort of 47# Java based Maven plugin so its fully portable. 48# 49 50case "$1" in 51--snapshot=*) 52 V=$(echo "$1" | perl -pe 's/^--snapshot=//') 53 if [ -z "$V" ] 54 then 55 echo >&2 "usage: $0 --snapshot=0.n.0" 56 exit 1 57 fi 58 case "$V" in 59 *-SNAPSHOT) : ;; 60 *) V=$V-SNAPSHOT ;; 61 esac 62 ;; 63 64--release) 65 V=$(git describe HEAD) || exit 66 ;; 67 68*) 69 echo >&2 "usage: $0 {--snapshot=0.n.0 | --release}" 70 exit 1 71esac 72 73case "$V" in 74v*) V=$(echo "$V" | perl -pe s/^v//) ;; 75esac 76 77case "$V" in 78*-SNAPSHOT) 79 POM_V=$V 80 OSGI_V="${V%%-SNAPSHOT}.qualifier" 81 ;; 82*-[1-9]*-g[0-9a-f]*) 83 POM_V=$(echo "$V" | perl -pe 's/-(\d+-g.*)$/.$1/') 84 OSGI_V=$(perl -e ' 85 die unless $ARGV[0] =~ /^(\d+)(?:\.(\d+)(?:\.(\d+))?(?:\.\d{12}-r)?)?-(\d+)-g(.*)$/; 86 my ($a, $b, $c, $p, $r) = ($1, $2, $3, $4, $5); 87 $b = '0' unless defined $b; 88 $c = '0' unless defined $c; 89 90 printf "%s.%s.%s.%6.6i_g%s\n", $a, $b, $c, $p, $r; 91 ' "$V") 92 ;; 93*) 94 POM_V=$V 95 OSGI_V=$V 96 ;; 97esac 98 99API_V=$(perl -e ' 100 $ARGV[0] =~ /^(\d+(?:\.\d+(?:\.\d+)?)?)/; 101 print $1 102 ' "$V") 103 104API_N=$(perl -e ' 105 $ARGV[0] =~ /^(\d+)(?:\.(\d+)(?:\.(\d+))?)?/; 106 my ($a, $b) = ($1, $2); 107 $b = 0 unless defined $b; 108 $b++; 109 print "$a.$b.0"; 110 ' "$API_V") 111 112perl -pi~ -e ' 113 s/^(Bundle-Version:\s*).*$/${1}'"$OSGI_V"'/; 114 s/(org.eclipse.jgit.*;version=")[^"[(]*(")/${1}'"$API_V"'${2}/; 115 s/(org.eclipse.jgit.*;version="\[)[^"]*(\)")/${1}'"$API_V,$API_N"'${2}/; 116 s/(Fragment-Host: org.eclipse.jgit.*;bundle-version="\[)[^"]*(\)")/${1}'"$API_V,$API_N"'${2}/; 117 ' $(git ls-files | grep META-INF/MANIFEST.MF) 118 119perl -pi~ -e ' 120 s/^(Bundle-Version:\s*).*$/${1}'"$OSGI_V"'/; 121 s/(org.eclipse.jgit.*;version=")[^"[(]*(")/${1}'"$API_V"'${2}/; 122 s/(org.eclipse.jgit.*;version="\[)[^"]*(\)")/${1}'"$API_V,$API_N"'${2}/; 123 s/^(Eclipse-SourceBundle:\s*org.eclipse.jgit.*;version=\").*(\";roots=\"\.\")$/${1}'"$OSGI_V"'${2}/; 124 ' $(git ls-files | grep META-INF/SOURCE-MANIFEST.MF) 125 126perl -pi~ -e ' 127 if ($ARGV ne $old_argv) { 128 $seen_version = 0; 129 $old_argv = $ARGV; 130 } 131 if (!$seen_version) { 132 $seen_version = 1 if (!/<\?xml/ && 133 s/(version=")[^"]*(")/${1}'"$OSGI_V"'${2}/); 134 } 135 s/(import feature="org\.eclipse\.jgit[^"]*" version=")[^"]*(")/${1}'"$API_V"'${2}/; 136 s/(import plugin="org\.eclipse\.jgit[^"]*" version=")[^"]*(")/${1}'"$API_V"'${2}/; 137 ' org.eclipse.jgit.packaging/org.*.feature/feature.xml 138 139perl -pi~ -e ' 140 if ($ARGV ne $old_argv) { 141 $seen_version = 0; 142 $old_argv = $ARGV; 143 } 144 if ($seen_version < 2) { 145 $seen_version++ if 146 s{<(version)>.*</\1>}{<${1}>'"$POM_V"'</${1}>}; 147 } 148 ' org.eclipse.jgit.packaging/org.*.source.feature/pom.xml 149 150perl -pi~ -e ' 151 if ($ARGV ne $old_argv) { 152 $seen_version = 0; 153 $old_argv = $ARGV; 154 } 155 if ($seen_version < 18) { 156 $seen_version++ if 157 s{<(version)>.*</\1>}{<${1}>'"$POM_V"'</${1}>}; 158 } 159 ' org.eclipse.jgit.coverage/pom.xml 160 161perl -pi~ -e ' 162 if ($ARGV ne $old_argv) { 163 $seen_version = 0; 164 $old_argv = $ARGV; 165 } 166 if (!$seen_version) { 167 $seen_version = 1 if 168 s{<(version)>.*</\1>}{<${1}>'"$POM_V"'</${1}>}; 169 } 170 ' $(git ls-files | grep pom.xml) 171 172find . -name '*~' | xargs rm -f 173git diff 174