1*a3141fd3SAndroid Build Coastguard Worker#!/bin/bash 2*a3141fd3SAndroid Build Coastguard Worker# 3*a3141fd3SAndroid Build Coastguard Worker# Copyright (C) 2024 The Android Open Source Project 4*a3141fd3SAndroid Build Coastguard Worker# 5*a3141fd3SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*a3141fd3SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*a3141fd3SAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*a3141fd3SAndroid Build Coastguard Worker# 9*a3141fd3SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*a3141fd3SAndroid Build Coastguard Worker# 11*a3141fd3SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*a3141fd3SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*a3141fd3SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*a3141fd3SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*a3141fd3SAndroid Build Coastguard Worker# limitations under the License. 16*a3141fd3SAndroid Build Coastguard Worker 17*a3141fd3SAndroid Build Coastguard Worker# Some common functions used by the source-update scripts. 18*a3141fd3SAndroid Build Coastguard Worker# 19*a3141fd3SAndroid Build Coastguard Worker 20*a3141fd3SAndroid Build Coastguard Workerdie() { 21*a3141fd3SAndroid Build Coastguard Worker echo "$script_name: $*" 22*a3141fd3SAndroid Build Coastguard Worker exit 1 23*a3141fd3SAndroid Build Coastguard Worker} 24*a3141fd3SAndroid Build Coastguard Worker 25*a3141fd3SAndroid Build Coastguard Workerecho_and_exec() { 26*a3141fd3SAndroid Build Coastguard Worker echo " Running: $@" 27*a3141fd3SAndroid Build Coastguard Worker "$@" 28*a3141fd3SAndroid Build Coastguard Worker} 29*a3141fd3SAndroid Build Coastguard Worker 30*a3141fd3SAndroid Build Coastguard Workervalidate_year() { 31*a3141fd3SAndroid Build Coastguard Worker local year=$1 32*a3141fd3SAndroid Build Coastguard Worker if [[ "$year" =~ ^2[0-9][0-9][0-9]$ ]]; then 33*a3141fd3SAndroid Build Coastguard Worker return 0; 34*a3141fd3SAndroid Build Coastguard Worker else 35*a3141fd3SAndroid Build Coastguard Worker return 1; 36*a3141fd3SAndroid Build Coastguard Worker fi 37*a3141fd3SAndroid Build Coastguard Worker} 38*a3141fd3SAndroid Build Coastguard Worker 39*a3141fd3SAndroid Build Coastguard Worker# This function converts a release string like "3.42.0" to the canonical 7-digit 40*a3141fd3SAndroid Build Coastguard Worker# format used by sqlite.org for downloads: "3420000". A hypothetical release 41*a3141fd3SAndroid Build Coastguard Worker# number of 3.45.6 is converted to "3450600". A hypothetical release number of 42*a3141fd3SAndroid Build Coastguard Worker# 3.45.17 is converted to "3451700". The last two digits are assumed to be 43*a3141fd3SAndroid Build Coastguard Worker# "00" for now, as there are no known counter-examples. 44*a3141fd3SAndroid Build Coastguard Workerfunction normalize_release { 45*a3141fd3SAndroid Build Coastguard Worker local version=$1 46*a3141fd3SAndroid Build Coastguard Worker local -a fields 47*a3141fd3SAndroid Build Coastguard Worker fields=($(echo "$version" | sed 's/\./ /g')) 48*a3141fd3SAndroid Build Coastguard Worker if [[ ${#fields[*]} -lt 2 || ${#fields[*]} -gt 4 ]]; then 49*a3141fd3SAndroid Build Coastguard Worker echo "cannot parse version: $version" 50*a3141fd3SAndroid Build Coastguard Worker return 1 51*a3141fd3SAndroid Build Coastguard Worker fi 52*a3141fd3SAndroid Build Coastguard Worker if [[ ${#fields[*]} -eq 2 ]]; then fields+=(0); fi 53*a3141fd3SAndroid Build Coastguard Worker if [[ ${#fields[*]} -eq 3 ]]; then fields+=(0); fi 54*a3141fd3SAndroid Build Coastguard Worker printf "%d%02d%02d%02d" ${fields[*]} 55*a3141fd3SAndroid Build Coastguard Worker return 0 56*a3141fd3SAndroid Build Coastguard Worker} 57*a3141fd3SAndroid Build Coastguard Worker 58*a3141fd3SAndroid Build Coastguard Workerfunction prettify_release { 59*a3141fd3SAndroid Build Coastguard Worker local version=$1 60*a3141fd3SAndroid Build Coastguard Worker local patch=$((version % 100)) 61*a3141fd3SAndroid Build Coastguard Worker version=$((version / 100)) 62*a3141fd3SAndroid Build Coastguard Worker local minor=$((version % 100)) 63*a3141fd3SAndroid Build Coastguard Worker version=$((version / 100)) 64*a3141fd3SAndroid Build Coastguard Worker local major=$((version % 100)) 65*a3141fd3SAndroid Build Coastguard Worker version=$((version / 100)) 66*a3141fd3SAndroid Build Coastguard Worker # version now contains the generation number. 67*a3141fd3SAndroid Build Coastguard Worker printf "%d.%d.%d" $version $major $minor 68*a3141fd3SAndroid Build Coastguard Worker} 69