xref: /aosp_15_r20/external/timezone-boundary-builder/android/tools/host/download_input_files.sh (revision f0df97945b4fdddd066170b120f192941b8d7fbf)
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