blob: daaafcf196b7a0d0f6d96afbccc950f03f186f27 [file] [log] [blame]
Jeff Gastondcca5342018-09-04 19:14:14 -04001set -e
2
3# parse args
4inputFile="$1"
5oldVersion="$2"
6newVersion="$3"
7
8function usage() {
9 echo "re-version-repo.sh takes a .zip of a Maven repo and rewrites the versions inside it to a new version
10
11Usage: re-version-repo.sh <input-zip> <old-version> <new-version>
12"
13 exit 1
14}
15
16if [ "${inputFile}" == "" ]; then
17 usage
18fi
19if [ "${oldVersion}" == "" ]; then
20 usage
21fi
22if [ "${newVersion}" == "" ]; then
23 usage
24fi
25
26# setup
27if stat "${inputFile}" > /dev/null 2>/dev/null; then
28 echo
29else
30 echo "Input file ${inputFile} does not exist"
31 exit 1
32fi
33inputFile="$(readlink -f ${inputFile})"
34
35if echo "${inputFile}" | grep -v "${oldVersion}" >/dev/null; then
36 echo "The text '${oldVersion}' does not appear in the name of the file, ${inputFile}."
37 echo "This is required as a sanity check (and also facilitates computing the output file name)"
38 exit 1
39fi
40outputFile="$(echo ${inputFile} | sed "s/${oldVersion}/${newVersion}/g")"
41
42tempDir="/tmp/repo"
43rm "${tempDir}" -rf
44mkdir -p "${tempDir}"
45cd "${tempDir}"
46
47# unzip dir
48echo
49echo unzipping "${inputFile}"
50unzippedDir="${tempDir}/unzipped"
51unzip -q "${inputFile}" -d "${unzippedDir}"
52cd "${unzippedDir}"
53
54# make new dirs for new files
55echo
56oldDirs="$(find -type d)"
57newDirs="$(echo ${oldDirs} | sed "s/${oldVersion}/${newVersion}/g")"
58echo "Making new dirs: ${newDirs}"
59echo "${newDirs}" | xargs --no-run-if-empty mkdir -p
60
61# move every file
62echo
63echo moving files
64oldFiles="$(find -type f)"
65moveCommand=""
66for oldFile in ${oldFiles}; do
67 if echo "${oldFile}" | grep "${oldVersion}">/dev/null; then
68 newFile="$(echo ${oldFile} | sed "s/${oldVersion}/${newVersion}/g")"
69 echo "moving ${oldFile} -> ${newFile}"
70 mv "${oldFile}" "${newFile}"
71 fi
72done
73
74# remove old dirs
75echo
76obsoleteDirs="$(find -type d | grep ${oldVersion} | grep -v ${newVersion} | sort -r)"
77echo "Removing dirs: ${obsoleteDirs}"
78echo "${obsoleteDirs}" | xargs -n 1 --no-run-if-empty rmdir
79
80# rewrite .pom files
81echo
82echo rewriting poms
83find -name "*.pom" | xargs sed -i "s/${oldVersion}/${newVersion}/g"
84
85# regenerate .md5 and .sha1 files
86for f in $(find -type f | grep -v '\.sha1$' | grep -v '\.md5'); do
87 md5=$(md5sum $f | sed 's/ .*//')
88 sha1=$(sha1sum $f | sed 's/ .*//')
89
90 echo -n $md5 > "${f}.md5"
91 echo -n $sha1 > "${f}.sha1"
92done
93
94
95echo
96echo rezipping
97rm -f "${outputFile}"
98zip -qr "${outputFile}" .
99
100echo "Done transforming ${inputFile} (${oldVersion}) -> ${outputFile} (${newVersion})"