1#!/bin/bash 2 3# Copyright 2021 The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17# Fail fast on any error. 18set -e 19 20HOST_TOOLS_DIR=$(realpath $(dirname $0)) 21source ${HOST_TOOLS_DIR}/common.sh 22 23RELEASE_ID=${1} 24if [ -z ${RELEASE_ID} ]; then 25 echo "Usage:" 26 echo " ${0} <release ID>" 27 echo 28 echo "e.g. ${0} 2020d" 29 exit 1 30fi 31 32SCRIPT_PATH=$(realpath $0) 33 34# -f = report failures 35# -L = follow redirects 36CURL_CMD="curl -f -L" 37 38TZBB_PROJECT_URL=https://github.com/evansiroky/timezone-boundary-builder/ 39SERVER_RELEASE_BASE_URL=${TZBB_PROJECT_URL}releases/download 40SERVER_SOURCE_BASE_URL=https://raw.githubusercontent.com/evansiroky/timezone-boundary-builder/master 41 42INPUT_DATA_FILE=input-data.zip 43LICENSE_FILE=DATA_LICENSE 44 45function download() { 46 set -e 47 SERVER_BASE_URL=${1} 48 FILE_NAME=${2} 49 LOCAL_DIR=${3} 50 51 URL=${SERVER_BASE_URL}/${FILE_NAME} 52 LOCAL_FILE_NAME=${LOCAL_DIR}/${FILE_NAME} 53 echo Downloading ${FILE_NAME} from ${URL}... 54 ${CURL_CMD} ${URL} --output ${LOCAL_FILE_NAME} 55 56 DOWNLOAD_DATE=$(date) 57 SHA=$(sha1sum ${LOCAL_FILE_NAME} | awk '{ print $1}') 58 59 # Add a METADATA file URL entry for every file we download. 60 cat << EOF >> ${METADATA_FILE} 61 url { 62 type: OTHER 63 value: "${FILE_NAME} downloaded from ${URL} on ${DOWNLOAD_DATE}, SHA1=${SHA}" 64 } 65EOF 66} 67 68mkdir -p ${HOST_INPUTS_DIR} 69echo Removing existing data files... 70rm -f ${HOST_INPUTS_DIR}/* 71 72METADATA_FILE=${HOST_INPUTS_DIR}/METADATA 73# Start the METADATA file 74cat << EOF > ${METADATA_FILE} 75// Generated file DO NOT EDIT 76// Run download_input_files.sh 77name: "android_inputs" 78description: 79 "Assorted files downloaded from ${TZBB_PROJECT_URL}" 80 81third_party { 82 url { 83 type: HOMEPAGE 84 value: "${TZBB_PROJECT_URL}" 85 } 86EOF 87 88download ${SERVER_SOURCE_BASE_URL} ${LICENSE_FILE} ${HOST_INPUTS_DIR} 89download ${SERVER_RELEASE_BASE_URL}/${RELEASE_ID} ${INPUT_DATA_FILE} ${HOST_INPUTS_DIR} 90 91PROTO_UPGRADE_DATE=$(date +'{ year: '%Y' month: '%-m' day: '%-d' }') 92 93# Finish the METADATA file 94cat << EOF >> ${METADATA_FILE} 95 version: "${RELEASE_ID}" 96 last_upgrade_date ${PROTO_UPGRADE_DATE} 97 license_type: RESTRICTED 98} 99EOF 100 101ln -sr ${HOST_INPUTS_DIR}/DATA_LICENSE ${HOST_INPUTS_DIR}/LICENSE 102 103# Handle the unzip step to HOST_DOWNLOADS_DIR 104unzip -d ${HOST_DOWNLOADS_DIR} ${HOST_INPUTS_DIR}/${INPUT_DATA_FILE} 105 106echo Look in ${HOST_INPUTS_DIR} for input files.... 107