1cb93a386Sopenharmony_ci#!/bin/bash
2cb93a386Sopenharmony_ci###############################################################################
3cb93a386Sopenharmony_ci# Copyright 2015 Google Inc.
4cb93a386Sopenharmony_ci#
5cb93a386Sopenharmony_ci# Use of this source code is governed by a BSD-style license that can be
6cb93a386Sopenharmony_ci# found in the LICENSE file.
7cb93a386Sopenharmony_ci###############################################################################
8cb93a386Sopenharmony_ci#
9cb93a386Sopenharmony_ci# ios_setup.sh: Sets environment variables used by other iOS scripts.
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_ci# File system location where we mount the ios devices.
12cb93a386Sopenharmony_ciif [[ -z "${IOS_MOUNT_POINT}" ]]; then
13cb93a386Sopenharmony_ci  IOS_MOUNT_POINT="/tmp/mnt_iosdevice"
14cb93a386Sopenharmony_cifi
15cb93a386Sopenharmony_ci
16cb93a386Sopenharmony_ci# Location on the ios device where all data are stored. This is
17cb93a386Sopenharmony_ci# relative to the mount point.
18cb93a386Sopenharmony_ciIOS_DOCS_DIR="Documents"
19cb93a386Sopenharmony_ci
20cb93a386Sopenharmony_ci# Directory with the Skia source.
21cb93a386Sopenharmony_ciSKIA_SRC_DIR=$(cd "${SCRIPT_DIR}/../../.."; pwd)
22cb93a386Sopenharmony_ci
23cb93a386Sopenharmony_ci# Provisioning profile - this needs to be set up on the local machine.
24cb93a386Sopenharmony_ciPROVISIONING_PROFILE=""
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ci# Code Signing identity - this needs to be set up on the local machine.
27cb93a386Sopenharmony_ciCODE_SIGN_IDENTITY="iPhone Developer"
28cb93a386Sopenharmony_ci
29cb93a386Sopenharmony_ciIOS_RESULTS_DIR="results"
30cb93a386Sopenharmony_ci
31cb93a386Sopenharmony_ci# Location of XCode build products.
32cb93a386Sopenharmony_ciif [[ -z "$XCODEBUILD" ]]; then
33cb93a386Sopenharmony_ci  XCODEBUILD="${SKIA_SRC_DIR}/xcodebuild"
34cb93a386Sopenharmony_cifi
35cb93a386Sopenharmony_ci
36cb93a386Sopenharmony_ciios_rm() {
37cb93a386Sopenharmony_ci  local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1"
38cb93a386Sopenharmony_ci
39cb93a386Sopenharmony_ci  ios_mount
40cb93a386Sopenharmony_ci  rm -rf "$TARGET"
41cb93a386Sopenharmony_ci  ios_umount
42cb93a386Sopenharmony_ci}
43cb93a386Sopenharmony_ci
44cb93a386Sopenharmony_ciios_mkdir() {
45cb93a386Sopenharmony_ci  local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1"
46cb93a386Sopenharmony_ci  ios_mount
47cb93a386Sopenharmony_ci  mkdir -p "$TARGET"
48cb93a386Sopenharmony_ci  ios_umount
49cb93a386Sopenharmony_ci}
50cb93a386Sopenharmony_ci
51cb93a386Sopenharmony_ciios_cat() {
52cb93a386Sopenharmony_ci  local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1"
53cb93a386Sopenharmony_ci  >&2 echo "target: '${TARGET}''"
54cb93a386Sopenharmony_ci  ios_mount
55cb93a386Sopenharmony_ci  RET="$( cat ${TARGET} )"
56cb93a386Sopenharmony_ci  ios_umount
57cb93a386Sopenharmony_ci  >&2 echo "Result: '${RET}'"
58cb93a386Sopenharmony_ci  echo -e "${RET}"
59cb93a386Sopenharmony_ci}
60cb93a386Sopenharmony_ci
61cb93a386Sopenharmony_ci# ios_mount: mounts the iOS device for reading or writing.
62cb93a386Sopenharmony_ciios_mount() {
63cb93a386Sopenharmony_ci  # If this is already mounted we unmount it.
64cb93a386Sopenharmony_ci  if $(mount | grep --quiet "$IOS_MOUNT_POINT"); then
65cb93a386Sopenharmony_ci    >&2 echo "Device already mounted at: $IOS_MOUNT_POINT - Unmounting."
66cb93a386Sopenharmony_ci    ios_umount || true
67cb93a386Sopenharmony_ci  fi
68cb93a386Sopenharmony_ci
69cb93a386Sopenharmony_ci  # Ensure there is a mount directory.
70cb93a386Sopenharmony_ci  if [[ ! -d "$IOS_MOUNT_POINT" ]]; then
71cb93a386Sopenharmony_ci    mkdir -p $IOS_MOUNT_POINT
72cb93a386Sopenharmony_ci  fi
73cb93a386Sopenharmony_ci  ifuse --container $IOS_BUNDLE_ID $IOS_MOUNT_POINT
74cb93a386Sopenharmony_ci
75cb93a386Sopenharmony_ci  sleep 2
76cb93a386Sopenharmony_ci  if [[ ! -d "${IOS_MOUNT_POINT}/${IOS_DOCS_DIR}" ]]; then
77cb93a386Sopenharmony_ci    exit 1
78cb93a386Sopenharmony_ci  fi
79cb93a386Sopenharmony_ci  >&2 echo "Successfully mounted device."
80cb93a386Sopenharmony_ci  #find $IOS_MOUNT_POINT
81cb93a386Sopenharmony_ci}
82cb93a386Sopenharmony_ci
83cb93a386Sopenharmony_ci# ios_umount: unmounts the ios device.
84cb93a386Sopenharmony_ciios_umount() {
85cb93a386Sopenharmony_ci  sudo umount $IOS_MOUNT_POINT
86cb93a386Sopenharmony_ci  sleep 1
87cb93a386Sopenharmony_ci}
88cb93a386Sopenharmony_ci
89cb93a386Sopenharmony_ci# ios_restart: restarts the iOS device.
90cb93a386Sopenharmony_ciios_restart() {
91cb93a386Sopenharmony_ci  ios_umount || true
92cb93a386Sopenharmony_ci  idevicediagnostics restart
93cb93a386Sopenharmony_ci}
94cb93a386Sopenharmony_ci
95cb93a386Sopenharmony_ci# ios_pull(ios_src, host_dst): Copies the content of ios_src to host_dst.
96cb93a386Sopenharmony_ci# The path is relative to the 'Documents' folder on the device.
97cb93a386Sopenharmony_ciios_pull() {
98cb93a386Sopenharmony_ci  # read input params
99cb93a386Sopenharmony_ci  local IOS_SRC="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1"
100cb93a386Sopenharmony_ci  local HOST_DST="$2"
101cb93a386Sopenharmony_ci
102cb93a386Sopenharmony_ci  ios_mount
103cb93a386Sopenharmony_ci  if [[ -d "${HOST_DST}" ]]; then
104cb93a386Sopenharmony_ci    cp -r "$IOS_SRC/." "$HOST_DST"
105cb93a386Sopenharmony_ci  else
106cb93a386Sopenharmony_ci    cp -r "$IOS_SRC" "$HOST_DST"
107cb93a386Sopenharmony_ci  fi
108cb93a386Sopenharmony_ci  ios_umount
109cb93a386Sopenharmony_ci}
110cb93a386Sopenharmony_ci
111cb93a386Sopenharmony_ci# ios_push(host_src, ios_dst)
112cb93a386Sopenharmony_ciios_push() {
113cb93a386Sopenharmony_ci  # read input params
114cb93a386Sopenharmony_ci  local HOST_SRC="$1"
115cb93a386Sopenharmony_ci  local IOS_DST="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$2"
116cb93a386Sopenharmony_ci
117cb93a386Sopenharmony_ci  ios_mount
118cb93a386Sopenharmony_ci  rm -rf $IOS_DST
119cb93a386Sopenharmony_ci  mkdir -p "$(dirname $IOS_DST)"
120cb93a386Sopenharmony_ci  cp -r -L "$HOST_SRC" "$IOS_DST"
121cb93a386Sopenharmony_ci  ios_umount
122cb93a386Sopenharmony_ci}
123cb93a386Sopenharmony_ci
124cb93a386Sopenharmony_ciios_path_exists() {
125cb93a386Sopenharmony_ci  local TARGET_PATH="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1"
126cb93a386Sopenharmony_ci  local RET=1
127cb93a386Sopenharmony_ci  ios_mount
128cb93a386Sopenharmony_ci  if [[ -e $TARGET_PATH ]]; then
129cb93a386Sopenharmony_ci    RET=0
130cb93a386Sopenharmony_ci  fi
131cb93a386Sopenharmony_ci  ios_umount
132cb93a386Sopenharmony_ci  return $RET
133cb93a386Sopenharmony_ci}
134cb93a386Sopenharmony_ci
135cb93a386Sopenharmony_ci#   ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST`
136cb93a386Sopenharmony_ci#   HOST_LS=`ls -ld $HOST_SRC`
137cb93a386Sopenharmony_ci#   if [ "${ANDROID_LS:0:1}" == "d" -a "${HOST_LS:0:1}" == "-" ];
138cb93a386Sopenharmony_ci#   then
139cb93a386Sopenharmony_ci#     ANDROID_DST="${ANDROID_DST}/$(basename ${HOST_SRC})"
140cb93a386Sopenharmony_ci#   fi
141cb93a386Sopenharmony_ci
142cb93a386Sopenharmony_ci
143cb93a386Sopenharmony_ci#   ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST`
144cb93a386Sopenharmony_ci#   if [ "${ANDROID_LS:0:1}" == "-" ]; then
145cb93a386Sopenharmony_ci#     #get the MD5 for dst and src
146cb93a386Sopenharmony_ci#     ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST`
147cb93a386Sopenharmony_ci#     if [ $(uname) == "Darwin" ]; then
148cb93a386Sopenharmony_ci#       HOST_MD5=`md5 -q $HOST_SRC`
149cb93a386Sopenharmony_ci#     else
150cb93a386Sopenharmony_ci#       HOST_MD5=`md5sum $HOST_SRC`
151cb93a386Sopenharmony_ci#     fi
152cb93a386Sopenharmony_ci
153cb93a386Sopenharmony_ci#     if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then
154cb93a386Sopenharmony_ci#       echo -n "$ANDROID_DST "
155cb93a386Sopenharmony_ci#       $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST
156cb93a386Sopenharmony_ci#     fi
157cb93a386Sopenharmony_ci#   elif [ "${ANDROID_LS:0:1}" == "d" ]; then
158cb93a386Sopenharmony_ci#     for FILE_ITEM in `ls $HOST_SRC`; do
159cb93a386Sopenharmony_ci#       adb_push_if_needed "${HOST_SRC}/${FILE_ITEM}" "${ANDROID_DST}/${FILE_ITEM}"
160cb93a386Sopenharmony_ci#     done
161cb93a386Sopenharmony_ci#   else
162cb93a386Sopenharmony_ci#     HOST_LS=`ls -ld $HOST_SRC`
163cb93a386Sopenharmony_ci#     if [ "${HOST_LS:0:1}" == "d" ]; then
164cb93a386Sopenharmony_ci#       $ADB $DEVICE_SERIAL shell mkdir -p $ANDROID_DST
165cb93a386Sopenharmony_ci#       adb_push_if_needed $HOST_SRC $ANDROID_DST
166cb93a386Sopenharmony_ci#     else
167cb93a386Sopenharmony_ci#       echo -n "$ANDROID_DST "
168cb93a386Sopenharmony_ci#       $ADB $DEVICE_SERIAL shell mkdir -p "$(dirname "$ANDROID_DST")"
169cb93a386Sopenharmony_ci#       $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST
170cb93a386Sopenharmony_ci#     fi
171cb93a386Sopenharmony_ci#   fi
172cb93a386Sopenharmony_ci# }
173cb93a386Sopenharmony_ci
174cb93a386Sopenharmony_ci# setup_device "${DEVICE_ID}"
175