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