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