#!/usr/bin/env bash # Copyright 2020 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. set -e SCRIPT_PATH=$(realpath $0) CURL_CMD=curl SERVER_BASE_URL=https://download.geonames.org/export/dump/ FILES=( \ cities1000.zip \ cities15000.zip \ cities500.zip \ cities5000.zip \ readme.txt \ ) LOCAL_ANDROID_DIR=$(dirname ${SCRIPT_PATH}) LOCAL_ROOT_DIR=$(dirname ${LOCAL_ANDROID_DIR}) LOCAL_DOWNLOAD_DIR=${LOCAL_ROOT_DIR}/export/dump LOCAL_VERSION_INFO_DIR=${LOCAL_ANDROID_DIR}/version_info METADATA_FILE=${LOCAL_ROOT_DIR}/METADATA echo Removing old downloaded files and metadata... rm ${LOCAL_DOWNLOAD_DIR}/* rm ${LOCAL_VERSION_INFO_DIR}/* # Start the METADATA file cat << EOF > ${METADATA_FILE} // Generated file DO NOT EDIT // Run android/download_latest.sh name: "geonames" description: "Assorted files downloaded from https://www.geonames.org/" third_party { url { type: HOMEPAGE value: "https://www.geonames.org/" } EOF DOWNLOAD_DATE=$(date --iso-8601) for FILE in ${FILES[@]}; do URL=${SERVER_BASE_URL}${FILE} HEADERS_FILE=${LOCAL_VERSION_INFO_DIR}/${FILE}.headers RELATIVE_HEADERS_FILE=$(realpath --relative-to ${LOCAL_ROOT_DIR} ${HEADERS_FILE}) echo Downloading ${FILE}... ${CURL_CMD} ${URL} \ --output ${LOCAL_DOWNLOAD_DIR}/${FILE} \ --dump-header ${HEADERS_FILE} SHA=$(sha1sum ${LOCAL_DOWNLOAD_DIR}/${FILE} | awk '{ print $1}') # Add a METADATA file URL entry for every file we download. cat << EOF >> ${METADATA_FILE} url { type: OTHER value: "Downloaded from ${URL} on ${DOWNLOAD_DATE}, SHA1=${SHA}, see ${RELATIVE_HEADERS_FILE}" } EOF done FILE_LAST_MODIFIED_HEADER=$(grep -i 'Last-Modified' ${LOCAL_VERSION_INFO_DIR}/${FILES[0]}.headers) LAST_MODIFIED_DATE_TIME=$(echo ${FILE_LAST_MODIFIED_HEADER} | sed 's/Last-Modified: //') PROTO_LAST_MODIFIED_DATE=$(date --date="${LAST_MODIFIED_DATE_TIME}" +'{ year: '%Y' month: '%-m' day: '%-d' }') # Finish the METADATA file cat << EOF >> ${METADATA_FILE} version: "As of ${DOWNLOAD_DATE}" last_upgrade_date ${PROTO_LAST_MODIFIED_DATE} license_type: NOTICE } EOF