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# Location of XCode build products.
32if [[ -z "$XCODEBUILD" ]]; then
33  XCODEBUILD="${SKIA_SRC_DIR}/xcodebuild"
34fi
35
36ios_rm() {
37  local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1"
38
39  ios_mount
40  rm -rf "$TARGET"
41  ios_umount
42}
43
44ios_mkdir() {
45  local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1"
46  ios_mount
47  mkdir -p "$TARGET"
48  ios_umount
49}
50
51ios_cat() {
52  local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1"
53  >&2 echo "target: '${TARGET}''"
54  ios_mount
55  RET="$( cat ${TARGET} )"
56  ios_umount
57  >&2 echo "Result: '${RET}'"
58  echo -e "${RET}"
59}
60
61# ios_mount: mounts the iOS device for reading or writing.
62ios_mount() {
63  # If this is already mounted we unmount it.
64  if $(mount | grep --quiet "$IOS_MOUNT_POINT"); then
65    >&2 echo "Device already mounted at: $IOS_MOUNT_POINT - Unmounting."
66    ios_umount || true
67  fi
68
69  # Ensure there is a mount directory.
70  if [[ ! -d "$IOS_MOUNT_POINT" ]]; then
71    mkdir -p $IOS_MOUNT_POINT
72  fi
73  ifuse --container $IOS_BUNDLE_ID $IOS_MOUNT_POINT
74
75  sleep 2
76  if [[ ! -d "${IOS_MOUNT_POINT}/${IOS_DOCS_DIR}" ]]; then
77    exit 1
78  fi
79  >&2 echo "Successfully mounted device."
80  #find $IOS_MOUNT_POINT
81}
82
83# ios_umount: unmounts the ios device.
84ios_umount() {
85  sudo umount $IOS_MOUNT_POINT
86  sleep 1
87}
88
89# ios_restart: restarts the iOS device.
90ios_restart() {
91  ios_umount || true
92  idevicediagnostics restart
93}
94
95# ios_pull(ios_src, host_dst): Copies the content of ios_src to host_dst.
96# The path is relative to the 'Documents' folder on the device.
97ios_pull() {
98  # read input params
99  local IOS_SRC="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1"
100  local HOST_DST="$2"
101
102  ios_mount
103  if [[ -d "${HOST_DST}" ]]; then
104    cp -r "$IOS_SRC/." "$HOST_DST"
105  else
106    cp -r "$IOS_SRC" "$HOST_DST"
107  fi
108  ios_umount
109}
110
111# ios_push(host_src, ios_dst)
112ios_push() {
113  # read input params
114  local HOST_SRC="$1"
115  local IOS_DST="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$2"
116
117  ios_mount
118  rm -rf $IOS_DST
119  mkdir -p "$(dirname $IOS_DST)"
120  cp -r -L "$HOST_SRC" "$IOS_DST"
121  ios_umount
122}
123
124ios_path_exists() {
125  local TARGET_PATH="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1"
126  local RET=1
127  ios_mount
128  if [[ -e $TARGET_PATH ]]; then
129    RET=0
130  fi
131  ios_umount
132  return $RET
133}
134
135#   ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST`
136#   HOST_LS=`ls -ld $HOST_SRC`
137#   if [ "${ANDROID_LS:0:1}" == "d" -a "${HOST_LS:0:1}" == "-" ];
138#   then
139#     ANDROID_DST="${ANDROID_DST}/$(basename ${HOST_SRC})"
140#   fi
141
142
143#   ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST`
144#   if [ "${ANDROID_LS:0:1}" == "-" ]; then
145#     #get the MD5 for dst and src
146#     ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST`
147#     if [ $(uname) == "Darwin" ]; then
148#       HOST_MD5=`md5 -q $HOST_SRC`
149#     else
150#       HOST_MD5=`md5sum $HOST_SRC`
151#     fi
152
153#     if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then
154#       echo -n "$ANDROID_DST "
155#       $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST
156#     fi
157#   elif [ "${ANDROID_LS:0:1}" == "d" ]; then
158#     for FILE_ITEM in `ls $HOST_SRC`; do
159#       adb_push_if_needed "${HOST_SRC}/${FILE_ITEM}" "${ANDROID_DST}/${FILE_ITEM}"
160#     done
161#   else
162#     HOST_LS=`ls -ld $HOST_SRC`
163#     if [ "${HOST_LS:0:1}" == "d" ]; then
164#       $ADB $DEVICE_SERIAL shell mkdir -p $ANDROID_DST
165#       adb_push_if_needed $HOST_SRC $ANDROID_DST
166#     else
167#       echo -n "$ANDROID_DST "
168#       $ADB $DEVICE_SERIAL shell mkdir -p "$(dirname "$ANDROID_DST")"
169#       $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST
170#     fi
171#   fi
172# }
173
174# setup_device "${DEVICE_ID}"
175