xref: /aosp_15_r20/tools/aadevtools/avd/batch_add_avd_img.sh (revision b32fbb6340ee6fe4a25d7b39d84085c084465677)
1*b32fbb63SXin Li#!/bin/bash
2*b32fbb63SXin Li
3*b32fbb63SXin Li# Copyright (C) 2021 The Android Open Source Project
4*b32fbb63SXin Li#
5*b32fbb63SXin Li# Licensed under the Apache License, Version 2.0 (the "License");
6*b32fbb63SXin Li# you may not use this file except in compliance with the License.
7*b32fbb63SXin Li# You may obtain a copy of the License at
8*b32fbb63SXin Li#
9*b32fbb63SXin Li#      http://www.apache.org/licenses/LICENSE-2.0
10*b32fbb63SXin Li#
11*b32fbb63SXin Li# Unless required by applicable law or agreed to in writing, software
12*b32fbb63SXin Li# distributed under the License is distributed on an "AS IS" BASIS,
13*b32fbb63SXin Li# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*b32fbb63SXin Li# See the License for the specific language governing permissions and
15*b32fbb63SXin Li# limitations under the License.
16*b32fbb63SXin Li
17*b32fbb63SXin Lireadme() {
18*b32fbb63SXin Li  echo '''
19*b32fbb63SXin LiAdd images listed in INPUT_CSV to Android SDK dir. So you can use them by Android Studio AVD manager. e.g.
20*b32fbb63SXin Li./batch_add_avd_image.sh ./resource/avd_img_list.csv
21*b32fbb63SXin Li'''
22*b32fbb63SXin Li}
23*b32fbb63SXin Li
24*b32fbb63SXin LiMY_NAME=$0
25*b32fbb63SXin LiSCRIPT_NAME="${MY_NAME##*/}"
26*b32fbb63SXin LiSCRIPT_DIR="${MY_NAME%/$SCRIPT_NAME}"
27*b32fbb63SXin Liecho Running from $SCRIPT_DIR
28*b32fbb63SXin Li
29*b32fbb63SXin LiINPUT_CSV=$1
30*b32fbb63SXin Liif [[ -z "${INPUT_CSV}" ]]; then
31*b32fbb63SXin Li    INPUT_CSV="$SCRIPT_DIR/resource/avd_img_list.csv"
32*b32fbb63SXin Lifi
33*b32fbb63SXin Li
34*b32fbb63SXin Liecho "Process ${INPUT_CSV}"
35*b32fbb63SXin Liheader=0
36*b32fbb63SXin LiavdCount=0
37*b32fbb63SXin Liwhile IFS=',' read -r name api zip others || [ -n "${name}" ]; do
38*b32fbb63SXin Li  if [[ "${name}" == "name" ]]; then
39*b32fbb63SXin Li    # skip header
40*b32fbb63SXin Li    header="${name},${api},${zip}"
41*b32fbb63SXin Li  else
42*b32fbb63SXin Li    addAvdImgCmd="VARIANT=${name} API_LEVEL=${api} OEM_AVD_ZIP=${zip} ${SCRIPT_DIR}/add_avd_img.sh"
43*b32fbb63SXin Li    echo "${addAvdImgCmd}"
44*b32fbb63SXin Li    eval "${addAvdImgCmd}"
45*b32fbb63SXin Li
46*b32fbb63SXin Li    createAvdCmd="AVD_IMG_NAME=${name} API_LEVEL=${api} DEFAULT_DEVICE_XML=${SCRIPT_DIR}/resource/devices.xml ${SCRIPT_DIR}/create_avd.sh"
47*b32fbb63SXin Li    echo "${createAvdCmd}"
48*b32fbb63SXin Li    eval "${createAvdCmd}"
49*b32fbb63SXin Li
50*b32fbb63SXin Li    echo
51*b32fbb63SXin Li    ((avdCount+=1))
52*b32fbb63SXin Li  fi
53*b32fbb63SXin Lidone < $INPUT_CSV
54*b32fbb63SXin Li
55*b32fbb63SXin Liif [[ $header != "name,api,zip" ]]; then
56*b32fbb63SXin Li  readme
57*b32fbb63SXin Li  echo "ERROR: The header:$header is not as expected in $INPUT_CSV"
58*b32fbb63SXin Li  cat $INPUT_CSV
59*b32fbb63SXin Lifi
60*b32fbb63SXin Li
61*b32fbb63SXin Liecho "Processed ${avdCount} AVDs"