xref: /aosp_15_r20/external/sqlite/common-functions.sh (revision a3141fd39888aecc864dfb08485df64ff6c387f9)
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