xref: /aosp_15_r20/system/timezone/testing/data/transform-data-files.sh (revision 2fd832c65f8b41db7ddb4ac802b9196762fe4888)
1*2fd832c6SAndroid Build Coastguard Worker#!/usr/bin/env bash
2*2fd832c6SAndroid Build Coastguard Worker#
3*2fd832c6SAndroid Build Coastguard Worker# Copyright (C) 2017 The Android Open Source Project
4*2fd832c6SAndroid Build Coastguard Worker#
5*2fd832c6SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
6*2fd832c6SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*2fd832c6SAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*2fd832c6SAndroid Build Coastguard Worker#
9*2fd832c6SAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
10*2fd832c6SAndroid Build Coastguard Worker#
11*2fd832c6SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*2fd832c6SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
13*2fd832c6SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*2fd832c6SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*2fd832c6SAndroid Build Coastguard Worker# limitations under the License.
16*2fd832c6SAndroid Build Coastguard Worker#
17*2fd832c6SAndroid Build Coastguard Worker# Creates fake test data files by taking the files in $1 and turning them into ones
18*2fd832c6SAndroid Build Coastguard Worker# that appear to be ones from IANA release $2. The resulting files are placed beneath $3.
19*2fd832c6SAndroid Build Coastguard Worker
20*2fd832c6SAndroid Build Coastguard WorkerREFERENCE_FILES_DIR=$1
21*2fd832c6SAndroid Build Coastguard WorkerOUTPUT_IANA_RULES_VERSION=$2
22*2fd832c6SAndroid Build Coastguard WorkerTEST_DATA_OUTPUT_DIR=$3
23*2fd832c6SAndroid Build Coastguard Worker
24*2fd832c6SAndroid Build Coastguard Worker# Fail on error
25*2fd832c6SAndroid Build Coastguard Workerset -e
26*2fd832c6SAndroid Build Coastguard Worker
27*2fd832c6SAndroid Build Coastguard WorkerTZDATA_FILE=iana/tzdata
28*2fd832c6SAndroid Build Coastguard WorkerTZDATA_LICENSE_FILE=iana/NOTICE
29*2fd832c6SAndroid Build Coastguard WorkerICU_DIR=icu_overlay/
30*2fd832c6SAndroid Build Coastguard WorkerICU_LICENSE_FILE=icu_overlay/LICENSE
31*2fd832c6SAndroid Build Coastguard WorkerTZLOOKUP_FILE=android/tzlookup.xml
32*2fd832c6SAndroid Build Coastguard WorkerTELEPHONYLOOKUP_FILE=android/telephonylookup.xml
33*2fd832c6SAndroid Build Coastguard Worker
34*2fd832c6SAndroid Build Coastguard WorkerINPUT_TZDATA_FILE=${REFERENCE_FILES_DIR}/${TZDATA_FILE}
35*2fd832c6SAndroid Build Coastguard WorkerINPUT_ICU_DIR=${REFERENCE_FILES_DIR}/${ICU_DIR}
36*2fd832c6SAndroid Build Coastguard WorkerINPUT_TZLOOKUP_FILE=${REFERENCE_FILES_DIR}/${TZLOOKUP_FILE}
37*2fd832c6SAndroid Build Coastguard WorkerINPUT_TELEPHONYLOOKUP_FILE=${REFERENCE_FILES_DIR}/${TELEPHONYLOOKUP_FILE}
38*2fd832c6SAndroid Build Coastguard Worker
39*2fd832c6SAndroid Build Coastguard WorkerTZHEADER=$(head -n1 ${INPUT_TZDATA_FILE} | cut -c1-11)
40*2fd832c6SAndroid Build Coastguard WorkerINPUT_IANA_RULES_VERSION=${TZHEADER:6}
41*2fd832c6SAndroid Build Coastguard Worker
42*2fd832c6SAndroid Build Coastguard WorkerOUTPUT_TZDATA_FILE=${TEST_DATA_OUTPUT_DIR}/${TZDATA_FILE}
43*2fd832c6SAndroid Build Coastguard WorkerOUTPUT_ICU_DIR=${TEST_DATA_OUTPUT_DIR}/${ICU_DIR}
44*2fd832c6SAndroid Build Coastguard WorkerOUTPUT_TZLOOKUP_FILE=${TEST_DATA_OUTPUT_DIR}/${TZLOOKUP_FILE}
45*2fd832c6SAndroid Build Coastguard WorkerOUTPUT_TELEPHONYLOOKUP_FILE=${TEST_DATA_OUTPUT_DIR}/${TELEPHONYLOOKUP_FILE}
46*2fd832c6SAndroid Build Coastguard Worker
47*2fd832c6SAndroid Build Coastguard Workermkdir -p ${TEST_DATA_OUTPUT_DIR}
48*2fd832c6SAndroid Build Coastguard Workermkdir -p ${TEST_DATA_OUTPUT_DIR}/iana
49*2fd832c6SAndroid Build Coastguard Workermkdir -p ${TEST_DATA_OUTPUT_DIR}/icu_overlay
50*2fd832c6SAndroid Build Coastguard Workermkdir -p ${TEST_DATA_OUTPUT_DIR}/android
51*2fd832c6SAndroid Build Coastguard Worker
52*2fd832c6SAndroid Build Coastguard Worker# Create a new tzdata file.
53*2fd832c6SAndroid Build Coastguard Workersed "1s/^tzdata${INPUT_IANA_RULES_VERSION}/tzdata${OUTPUT_IANA_RULES_VERSION}/" ${INPUT_TZDATA_FILE} > ${OUTPUT_TZDATA_FILE}
54*2fd832c6SAndroid Build Coastguard Worker
55*2fd832c6SAndroid Build Coastguard Worker# Create new ICU file.
56*2fd832c6SAndroid Build Coastguard WorkerSEARCH=$(echo ${INPUT_IANA_RULES_VERSION} | sed "s/\(.\)/\1\\\x00/g")
57*2fd832c6SAndroid Build Coastguard WorkerREPLACE=$(echo ${OUTPUT_IANA_RULES_VERSION} | sed "s/\(.\)/\1\\\x00/g")
58*2fd832c6SAndroid Build Coastguard Workersed "s/$SEARCH/$REPLACE/" ${INPUT_ICU_DIR}/zoneinfo64.res > ${OUTPUT_ICU_DIR}/zoneinfo64.res
59*2fd832c6SAndroid Build Coastguard Workersed "s/$SEARCH/$REPLACE/" ${INPUT_ICU_DIR}/windowsZones.res > ${OUTPUT_ICU_DIR}/windowsZones.res
60*2fd832c6SAndroid Build Coastguard Workersed "s/$SEARCH/$REPLACE/" ${INPUT_ICU_DIR}/timezoneTypes.res > ${OUTPUT_ICU_DIR}/timezoneTypes.res
61*2fd832c6SAndroid Build Coastguard Workersed "s/$SEARCH/$REPLACE/" ${INPUT_ICU_DIR}/metaZones.res > ${OUTPUT_ICU_DIR}/metaZones.res
62*2fd832c6SAndroid Build Coastguard Worker
63*2fd832c6SAndroid Build Coastguard Worker# Copy the tzlookup.xml but update the ianaversion= attribute.
64*2fd832c6SAndroid Build Coastguard Workersed "s/${INPUT_IANA_RULES_VERSION}/${OUTPUT_IANA_RULES_VERSION}/" ${INPUT_TZLOOKUP_FILE} > ${OUTPUT_TZLOOKUP_FILE}
65*2fd832c6SAndroid Build Coastguard Worker
66*2fd832c6SAndroid Build Coastguard Worker# Copy the telephonylookup.xml file. No updates are required.
67*2fd832c6SAndroid Build Coastguard Workercp ${INPUT_TELEPHONYLOOKUP_FILE} ${OUTPUT_TELEPHONYLOOKUP_FILE}
68*2fd832c6SAndroid Build Coastguard Worker
69*2fd832c6SAndroid Build Coastguard Worker# Copy license files
70*2fd832c6SAndroid Build Coastguard Workercp ${REFERENCE_FILES_DIR}/${TZDATA_LICENSE_FILE} ${TEST_DATA_OUTPUT_DIR}/${TZDATA_LICENSE_FILE}
71*2fd832c6SAndroid Build Coastguard Workercp ${REFERENCE_FILES_DIR}/${ICU_LICENSE_FILE} ${TEST_DATA_OUTPUT_DIR}/${ICU_LICENSE_FILE}
72*2fd832c6SAndroid Build Coastguard Worker
73*2fd832c6SAndroid Build Coastguard Workerecho Transformed input files with version ${INPUT_IANA_RULES_VERSION} to ${OUTPUT_IANA_RULES_VERSION} in ${TEST_DATA_OUTPUT_DIR}
74*2fd832c6SAndroid Build Coastguard Worker
75