82 lines
2.8 KiB
Bash
Executable File
82 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#First arg should be the local path, second arg should be the remote path.
|
|
VERSION="2.0"
|
|
#Update onces stable
|
|
#APITOKEN=AKCp5cbwXBA2Rarq6WagmFFxQxcxsARGxSq5g1H8NaGm7837KTgwdWPqsp7FdgRa13B7AcpGN
|
|
#URL=https://oneartifactorycloud.verizon.com/artifactory
|
|
|
|
APITOKEN=AKCp5ZmHP8B1dkLtdSh23bMcWHtrWzoB3SfhoCNpEC5e3dKNhiKsn8TPMZQafXzm2qkeXFXE6
|
|
URL=https://oneartifactoryprod.verizon.com/artifactory
|
|
|
|
LOCALPATH="${1}"
|
|
REMOTEPATH="${2}"
|
|
LOGFILE=$3
|
|
LOCALDIR=$(dirname "${LOCALPATH}")
|
|
LOCALBASE=$(basename "${LOCALPATH}")
|
|
NEWFILEPATH="${LOCALDIR}"/$(basename "${REMOTEPATH}")
|
|
VERSIONFILE=./Checksums/"${LOCALBASE}".txt
|
|
|
|
if [ -z $LOGFILE ]; then
|
|
LOGFILE="/tmp/${LOCALBASE}.txt"
|
|
fi
|
|
|
|
#first argument is error message.
|
|
exit_with_error () {
|
|
echo "Error: $1" >> "${LOGFILE}"
|
|
if [ -f "${NEWFILEPATH}" ]; then
|
|
rm -rf "${NEWFILEPATH}" 2>>"${LOGFILE}"
|
|
fi
|
|
exit 1
|
|
}
|
|
|
|
echo "----------------------------------------------------------" >> $LOGFILE
|
|
echo "Logs for ${LOCALBASE}" >> $LOGFILE
|
|
|
|
echo -e "Local Target: ${LOCALPATH}" >> $LOGFILE
|
|
echo -e "Remote Source: ${REMOTEPATH}" >> $LOGFILE
|
|
|
|
if [ -z "$LOCALPATH" ]; then
|
|
exit_with_error "Missing local path argument"
|
|
fi
|
|
|
|
if [ -z "$REMOTEPATH" ]; then
|
|
exit_with_error "Missing filename path argument"
|
|
fi
|
|
|
|
#get local and remote checksums for comparison
|
|
echo -e "Getting checksums..." >> $LOGFILE
|
|
echo -e "URL: ${URL}/api/storage/${REMOTEPATH}" >> $LOGFILE
|
|
JSON=$(curl --header "X-JFrog-Art-Api: ${APITOKEN}" -X GET "${URL}/api/storage/${REMOTEPATH}" 2>>"${LOGFILE}")
|
|
CHECKSUM=$(echo "$JSON" | python3 -c 'import sys, json; print(json.load(sys.stdin)["checksums"]["sha1"])') 2>>"${LOGFILE}"
|
|
if [[ -z "$CHECKSUM" ]]; then
|
|
exit_with_error "No Checksum found in json: ${JSON}"
|
|
fi
|
|
echo "Remote checksum ${CHECKSUM}" >> "${LOGFILE}"
|
|
OLDCHECKSUM=$(cat "${VERSIONFILE}" 2>/dev/null)
|
|
echo "Local checksum ${OLDCHECKSUM}" >> "${LOGFILE}"
|
|
|
|
#get new framework if no original framework, no local checksum, or remote checksum is different from local.
|
|
if [ ! -e "${LOCALPATH}" ] || [ -z "$OLDCHECKSUM" ] || [ "$CHECKSUM" != "$OLDCHECKSUM" ]; then
|
|
echo "Downloading..." >> "${LOGFILE}"
|
|
echo -e "URL: ${URL}/${REMOTEPATH}" >> $LOGFILE
|
|
curl --header "X-JFrog-Art-Api: ${APITOKEN}" -f -X GET "$URL/$REMOTEPATH" --output "${NEWFILEPATH}" 2>>"${LOGFILE}"
|
|
if [ $? -eq 0 ] && [ -e "${NEWFILEPATH}" ]; then
|
|
echo "Finished Downloading, begin unzip" >> "${LOGFILE}"
|
|
unzip -q -o "${NEWFILEPATH}" -d "${LOCALDIR}" 2>>"${LOGFILE}"
|
|
if [ $? -eq 0 ]; then
|
|
echo "Finished unzipping, remove zip" >> "${LOGFILE}"
|
|
rm -rf "${NEWFILEPATH}" 2>>"${LOGFILE}"
|
|
echo "Writing new checksum to file" >> "${LOGFILE}"
|
|
echo "${CHECKSUM}" > "${VERSIONFILE}" 2>>"${LOGFILE}"
|
|
echo "Successfully downloaded and unzipped archive." >> "${LOGFILE}"
|
|
else
|
|
exit_with_error "Error unzipping"
|
|
fi
|
|
else
|
|
exit_with_error "Failed to download"
|
|
fi
|
|
else
|
|
echo "Successful, No New Version" >> "${LOGFILE}"
|
|
fi
|