You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
3.9 KiB
129 lines
3.9 KiB
#!/bin/bash
|
|
|
|
# parse file
|
|
applyRegex() {
|
|
local regex=$1
|
|
local file=$2
|
|
|
|
if [[ $file =~ $regex ]];
|
|
then
|
|
version="${BASH_REMATCH[1]}"
|
|
echo "${version}"
|
|
else
|
|
echo "$file doesn't match" >&2 # this could get noisy if there are a lot of non-matching files
|
|
exit 1
|
|
fi
|
|
echo "${version}"
|
|
}
|
|
|
|
# Use jq regex since it supports grouping
|
|
applyRegex_version() {
|
|
local regex=$1
|
|
local file=$2
|
|
|
|
jq -n "{
|
|
version: $(echo $file | jq -R .)
|
|
}" | jq --arg v "$regex" '.version | capture($v)' | jq -r '.version'
|
|
|
|
}
|
|
|
|
# retrieve all versions from artifactory
|
|
artifactory_artifacts() {
|
|
local artifacts_url=$1
|
|
local regex=$2
|
|
|
|
curl $1 | jq --arg v "$regex" '[.children[].uri | capture($v)]' | jq 'sort_by(.version)'
|
|
|
|
}
|
|
|
|
# retrieve current from artifactory
|
|
artifactory_current_version() {
|
|
local artifacts_url=$1
|
|
local regex=$2
|
|
|
|
curl $1 | jq --arg v "$regex" '[.children[].uri | capture($v)]' | jq 'sort_by(.version)' | jq '[.[length-1] | {version: .version}]'
|
|
|
|
}
|
|
|
|
# check provided version returning all version
|
|
artifactory_versions() {
|
|
local artifacts_url=$1
|
|
local regex=$2
|
|
|
|
curl $1 | jq --arg v "$regex" '[.children[].uri | capture($v)]' | jq 'sort_by(.version)' | jq '[.[] | {version: .version}]'
|
|
|
|
}
|
|
|
|
check_version() {
|
|
local artifacts_url=$1
|
|
local regex=$2
|
|
local version=$3
|
|
|
|
result=$(artifactory_versions "$artifacts_url" "$regex")
|
|
echo $result | jq --arg v "$version" '[foreach .[] as $item ([]; $item ; if $item.version >= $v then $item else empty end)]'
|
|
|
|
}
|
|
|
|
# check provided version returning all version
|
|
artifactory_files() {
|
|
local artifacts_url=$1
|
|
local regex="(?<uri>$2)"
|
|
|
|
curl $1 | jq --arg v "$regex" '[.children[].uri | capture($v)]' | jq 'sort_by(.version)' | jq '[.[] | {uri: .uri, version: .version}]'
|
|
|
|
}
|
|
|
|
in_file_with_version() {
|
|
local artifacts_url=$1
|
|
local regex="(?<uri>$2)"
|
|
local version=$3
|
|
|
|
result=$(artifactory_files "$artifacts_url" "$regex")
|
|
echo $result | jq --arg v "$version" '[foreach .[] as $item ([]; $item ; if $item.version == $v then $item else empty end)]'
|
|
|
|
}
|
|
|
|
check_file_with_version() {
|
|
local artifacts_url=$1
|
|
local regex=$2
|
|
local version=$3
|
|
|
|
result=$(artifactory_versions "$artifacts_url" "$regex")
|
|
echo $result | jq --arg v "$version" '[foreach .[] as $item ([]; $item ; if $item.version == $v then $item else empty end)]'
|
|
|
|
}
|
|
|
|
|
|
version=$(applyRegex_version "carshare-(?<module>admin|api|customer)-(?<version>.*).tar.gz" "carshare-api-1.0.0-rc.0.tar.gz")
|
|
echo "version -> $version"
|
|
|
|
url=http://localhost:8081/artifactory/api/storage/UrbanActive/Products/Maven/admin
|
|
echo "Testing retrieving artifactis with version group"
|
|
echo $(artifactory_artifacts "$url" "carshare-(admin|api|customer)-(?<version>.*).tar.gz")
|
|
|
|
echo "Testing retrieving artifactis with module and version group"
|
|
echo $(artifactory_artifacts "$url" "carshare-(?<module>admin|api|customer)-(?<version>.*).tar.gz")
|
|
|
|
echo "Testing retrieving current version"
|
|
echo $(artifactory_current_version "$url" "carshare-(admin|api|customer)-(?<version>.*).tar.gz")
|
|
|
|
echo "Testing check version"
|
|
result=$(artifactory_versions "$url" "carshare-(admin|api|customer)-(?<version>.*).tar.gz")
|
|
echo $result
|
|
|
|
result='[ { "version": "1.0.0-rc.0" }, { "version": "1.0.0.2" }, { "version": "1.0.0.3" } ]'
|
|
|
|
echo "Testing check by version output"
|
|
echo $result | jq '[foreach .[] as $item ([]; $item ; if $item.version >= "1.0.0.2" then $item else empty end)]'
|
|
|
|
echo "Testing artifactory files"
|
|
result=$(artifactory_files "$url" "carshare-(admin|api|customer)-(?<version>.*).tar.gz")
|
|
echo $result
|
|
|
|
echo "Testing in with good version"
|
|
result=$(in_file_with_version "$url" "carshare-(admin|api|customer)-(?<version>.*).tar.gz" "1.0.0.2")
|
|
echo $result
|
|
|
|
echo "############### Testing check by version output function"
|
|
url="-u admin:password http://192.168.1.224:8081/artifactory/api/storage/libs-snapshot-local/Pivotal"
|
|
echo $(check_version "$url" "carshare-(admin|api|customer)-(?<version>.*).tar.gz" "1.0.0.2")
|