Skip to content

Instantly share code, notes, and snippets.

@tom-smalls
Created June 29, 2016 13:31
#!/usr/bin/env bash
set -euo pipefail
JDK="jdk1.8.0_74"
EXPECTED_JDK_EXPLODED_SHA1="25d468495c8d44f71233cf240560b9d2c681d5e4"
NODE="node-v4.3.2-linux-x64"
EXPECTED_NODE_EXPLODED_SHA1="f1ecc0b12739e5ab1b4d03006f7f8b406fcaba07"
BUCK="buck-344c05b"
EXPECTED_BUCK_EXPLODED_SHA1="9bd0b11e2225d74f38d57c22dc404142e5d51ed0"
MAVEN="apache-maven-3.3.9"
EXPECTED_MAVEN_EXPLODED_SHA1="5b4c117854921b527ab6190615f9435da730ba05"
#Runtime Dependencies
PGSQL="pgsql-9.2.15"
EXPECTED_PGSQL_EXPLODED_SHA1="8fad03ec139bc05cd7d3b7976e93f32ea5bc93d8"
OPT_DIR=${ROOT_DIR}/opt
function fetch_artifact() {
local name=$1
echo "Fetching dependency ${name} ..."
local namedVersion=$2
curl -J --progress-bar -o ${OPT_DIR}/${version}.tar.gz http://thearts.internal.transficc.com/artifacts/${name}/${namedVersion}.tar.gz
}
function ensure_dependency_extracted_and_linked() {
local short_name=$1
local name_version=$2
local expectedSha1Hash=$3
local fully_qualified_extracted_dir=${OPT_DIR}/${name_version}
local fully_qualified_linked_dir=${OPT_DIR}/${short_name}
local package_hash_file="$fully_qualified_extracted_dir.sha1"
local actual_sha1_hash=""
if [ -e "$package_hash_file" ]; then
actual_sha1_hash=$(cat ${package_hash_file})
fi
if [ "$actual_sha1_hash" != "$expectedSha1Hash" ]; then
echo "Hashes don't match"
echo "actual: $actual_sha1_hash expected: $expectedSha1Hash"
rm -rf ${fully_qualified_linked_dir}
rm -rf ${fully_qualified_extracted_dir}
fetch_artifact ${short_name} ${name_version}
tar xzf "${OPT_DIR}/${name_version}.tar.gz" -C ${OPT_DIR}/
ln -s ${fully_qualified_extracted_dir} ${fully_qualified_linked_dir}
local sha1hash=$(sha1sum ${OPT_DIR}/${name_version}.tar.gz | awk '{ print $1 }')
echo ${sha1hash} > "$fully_qualified_extracted_dir.sha1"
rm "${OPT_DIR}/${name_version}.tar.gz"
fi
}
function ensure_directory_exists() {
mkdir -p ${OPT_DIR}
}
function bootstrap() {
echo "Arguments: $@"
ensure_directory_exists
ensure_dependency_extracted_and_linked "jdk" ${JDK} ${EXPECTED_JDK_EXPLODED_SHA1}
ensure_dependency_extracted_and_linked "node" ${NODE} ${EXPECTED_NODE_EXPLODED_SHA1}
ensure_dependency_extracted_and_linked "buck" ${BUCK} ${EXPECTED_BUCK_EXPLODED_SHA1}
ensure_dependency_extracted_and_linked "maven" ${MAVEN} ${EXPECTED_MAVEN_EXPLODED_SHA1}
}
boostrap
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment