From 596961c91c5f782d48ae7f3857bd231033aec73c Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Thu, 18 Mar 2010 20:36:26 -0700 Subject: [PATCH] tools/version.sh: Update OSGi manifest files Change-Id: I11df35d84f6b95c6035406c35e3b4e44dfe821e8 Signed-off-by: Shawn O. Pearce --- org.eclipse.egit-updatesite/pom.xml | 5 +- tools/version.sh | 150 ++++++++++++++++++++++++++++++++++++ 2 files changed, 152 insertions(+), 3 deletions(-) create mode 100755 tools/version.sh diff --git a/org.eclipse.egit-updatesite/pom.xml b/org.eclipse.egit-updatesite/pom.xml index d0534d13..e2b11770 100644 --- a/org.eclipse.egit-updatesite/pom.xml +++ b/org.eclipse.egit-updatesite/pom.xml @@ -23,6 +23,8 @@ eclipse-update-site Eclipse Git Plugin Update Site (Incubation) + + 0.6.0 @@ -37,9 +39,6 @@ - - 0.6.0 - diff --git a/tools/version.sh b/tools/version.sh new file mode 100755 index 00000000..4c92033d --- /dev/null +++ b/tools/version.sh @@ -0,0 +1,150 @@ +#!/bin/sh +# Copyright (C) 2009, Google Inc. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html + +# Update all pom.xml with new build number +# +# TODO(spearce) This should be converted to some sort of +# Java based Maven plugin so its fully portable. +# + +V= +J= + +while [ $# -gt 0 ] +do +case "$1" in +--snapshot=*) + V=$(echo "$1" | perl -pe 's/^--snapshot=//') + if [ -z "$V" ] + then + echo >&2 "usage: $0 --snapshot=0.n.0" + exit 1 + fi + case "$V" in + *-SNAPSHOT) : ;; + *) V=$V-SNAPSHOT ;; + esac + shift + ;; + +--release) + V=$(git describe HEAD) || exit + shift + ;; + +--jgit=*) + J=${1##--jgit=} + shift + ;; + +*) + echo >&2 "usage: $0 {--snapshot=0.n.0 | --release} [--jgit=0.n.0]" + exit 1 +esac +done + +case "$V" in +v*) V=$(echo "$V" | perl -pe s/^v//) ;; +'') + echo >&2 "usage: $0 {--snapshot=0.n.0 | --release}" + exit 1 +esac + +case "$V" in +*-SNAPSHOT) + POM_V=$V + OSGI_V="${V%%-SNAPSHOT}.qualifier" + ;; +*-[1-9]*-g[0-9a-f]*) + POM_V=$(echo "$V" | perl -pe 's/-(\d+-g.*)$/.$1/') + OSGI_V=$(perl -e ' + $ARGV[0] =~ /^(\d+)(?:\.(\d+)(?:\.(\d+))?)?-(\d+)-g(.*)$/; + my ($a, $b, $c, $p, $r) = ($1, $2, $3, $4, $5); + $b = '0' unless defined $b; + $c = '0' unless defined $c; + + printf "%s.%s.%s.%6.6i_g%s\n", $a, $b, $c, $p, $r; + ' "$V") + ;; +*) + POM_V=$V + OSGI_V=$V + ;; +esac + +to_version() { + perl -e ' + $ARGV[0] =~ /^(\d+(?:\.\d+(?:\.\d+)?)?)/; + print $1 + ' "$1" +} + +next_version() { + perl -e ' + $ARGV[0] =~ /^(\d+)(?:\.(\d+)(?:\.(\d+))?)?/; + my ($a, $b) = ($1, $2); + $b = 0 unless defined $b; + $b++; + print "$a.$b.0"; + ' "$1" +} + +EGIT_V=$(to_version "$V") +EGIT_N=$(next_version "$EGIT_V") + +[ -z "$J" ] && J=$V +JGIT_V=$(to_version "$J") +JGIT_N=$(next_version "$JGIT_V") + +perl -pi -e ' + s/^(Bundle-Version:\s*).*$/${1}'"$OSGI_V"'/; + s/(org.eclipse.egit.*;version=")[^"[(]*(")/${1}'"$EGIT_V"'${2}/; + s/(org.eclipse.egit.*;version="\[)[^"]*(\)")/${1}'"$EGIT_V,$EGIT_N"'${2}/; + s/(org.eclipse.jgit.*;version="\[)[^"]*(\)")/${1}'"$JGIT_V,$JGIT_N"'${2}/; + ' $(git ls-files | grep META-INF/MANIFEST.MF) + +perl -pi -e ' + if ($ARGV ne $old_argv) { + $seen_version = 0; + $old_argv = $ARGV; + } + if (!$seen_version) { + $seen_version = 1 if (!/<\?xml/ && + s/(version=")[^"]*(")/${1}'"$OSGI_V"'${2}/); + } + s/(feature="org.eclipse.jgit" version=")[^"]*(")/${1}'"$JGIT_V"'${2}/; + ' org.eclipse.egit-feature/feature.xml + +perl -pi -e ' + s{<(version)>[^<\$]*}{<${1}>'"$POM_V"'}; + ' org.eclipse.egit-feature/pom.xml + +perl -pi -e ' + if ($ARGV ne $old_argv) { + $seen_version = 0; + $old_argv = $ARGV; + } + if ($seen_version < 2) { + $seen_version++ if + s{<(version)>[^<\$]*}{<${1}>'"$POM_V"'}; + } + ' org.eclipse.egit-updatesite/pom.xml + +perl -pi -e ' + if ($ARGV ne $old_argv) { + $seen_version = 0; + $old_argv = $ARGV; + } + if (!$seen_version) { + $seen_version = 1 if + s{<(version)>[^<\$]*}{<${1}>'"$POM_V"'}; + } + s{<(jgit-version)>[^<]*}{<${1}>'"$J"'}; + ' $(git ls-files | grep pom.xml) + +git diff -- 2.11.4.GIT