Mercury-IM/utils/smack-unique-snapshots.sh

51 lines
1.4 KiB
Bash
Executable file

#!/bin/sh
if [ $# -eq 0 ]; then
echo "Usage: smack-unique-snapshots.sh 4.4.0-alpha1-SNAPSHOT";
exit 1;
fi
VERSION=$1
SMACK="https://igniterealtime.org/repo/org/igniterealtime/smack"
META="maven-metadata.xml"
TEMPD=$(mktemp -d)
cd $TEMPD
# Determine avail smack projects by recursively fetching subdirs
wget -q -r -l1 -nH --cut-dirs=4 --no-parent -e robots=off $SMACK
PROJECTS=()
VERSIONS=()
# smack projects will result in subdir
# get index.html of project with descending change date
# from the html, extract first .pom file name, which is latest version
for d in `ls` ; do
if [[ -d $d ]]; then
PRO=$(wget -q "$SMACK/$d/$VERSION?C=M;O=D" -O- | grep -Po '(?<=a href=").*?(?=\.pom")' | head -n1);
# Repair missing projects
if [ ${#PRO} -le ${#d} ]; then
PRO="$d MISSING"
fi
PROJECTS+=("$PRO")
echo $PRO
# Gradle dependency generation
# Determine snapshot version string, which begins after project name
PROJ_LEN=$((${#d} + 1))
SNAP=${PRO:$PROJ_LEN}
# Make project name camelcase and append version string
VER="$(echo $d | sed -r 's/(^|-)(\w)/\U\2/g')Version = \"$SNAP\""
# Append to array with first char lower case'd
VERSIONS+=("${VER,}")
fi
done
# print out block of gradle dependecy versions
printf "\n"
echo "Gradle Versions:"
for v in "${VERSIONS[@]}"; do
echo $v
done
# clean up
rm -rf $TEMPD