forked from appium/appium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
reset.sh
executable file
·171 lines (159 loc) · 5.01 KB
/
reset.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#!/bin/bash
#
# reset.sh: INSTALL OR RESET APPIUM
# This script should ensure that after pulling the most recent code,
# you will be in a state where you can run tests and use appium
#
set -e
should_reset_android=false
should_reset_ios=false
should_reset_selendroid=false
include_dev=false
appium_home=$(pwd)
reset_successful=false
grunt="$(npm bin)/grunt" # might not have grunt-cli installed with -g
verbose=false
while test $# != 0
do
case "$1" in
"--android") should_reset_android=true;;
"--ios") should_reset_ios=true;;
"--selendroid") should_reset_selendroid=true;;
"--dev") include_dev=true;;
"-v") verbose=true;;
"--verbose") verbose=true;;
esac
shift
done
if ! $should_reset_android && ! $should_reset_ios && ! $should_reset_selendroid ; then
should_reset_android=true
should_reset_ios=true
should_reset_selendroid=true
fi
run_cmd() {
if $verbose ; then
"$@"
else
"$@" >/dev/null 2>&1
fi
}
reset_general() {
echo "RESETTING NPM"
set +e
if $include_dev ; then
echo "* Installing new or updated NPM modules (including devDeps)"
run_cmd npm install .
else
echo "* Installing new or updated NPM modules"
run_cmd npm install --production .
fi
install_status=$?
set -e
if [ $install_status -gt 0 ]; then
echo "install failed. Trying again with sudo. Only do this if it's not a network error."
run_cmd sudo npm install .
fi
run_cmd mkdir -p build
}
reset_ios() {
echo "RESETTING IOS"
echo "* Cloning/updating instruments-without-delay"
run_cmd git submodule update --init submodules/instruments-without-delay
echo "* Building instruments-without-delay"
run_cmd pushd submodules/instruments-without-delay
run_cmd ./build.sh
run_cmd popd
echo "* Moving instruments-without-delay into build/iwd"
run_cmd rm -rf build/iwd
run_cmd mkdir build/iwd
run_cmd cp -R submodules/instruments-without-delay/build/* build/iwd
if $include_dev ; then
if [ ! -d "./sample-code/apps/UICatalog" ]; then
echo "* Downloading UICatalog app"
run_cmd $grunt downloadApp
fi
echo "* Cleaning/rebuilding iOS test app: TestApp"
run_cmd $grunt buildApp:TestApp
echo "* Cleaning/rebuilding iOS test app: UICatalog"
run_cmd $grunt buildApp:UICatalog
echo "* Cleaning/rebuilding iOS test app: WebViewApp"
run_cmd $grunt buildApp:WebViewApp
fi
echo "* Setting iOS config to Appium's version"
run_cmd $grunt setConfigVer:ios
}
get_apidemos() {
echo "* Cloning/updating Android test app: ApiDemos"
run_cmd git submodule update --init submodules/ApiDemos
run_cmd rm -rf sample-code/apps/ApiDemos
run_cmd ln -s $appium_home/submodules/ApiDemos $appium_home/sample-code/apps/ApiDemos
}
reset_android() {
echo "RESETTING ANDROID"
echo "* Configuring Android bootstrap"
run_cmd rm -rf build/android_bootstrap
run_cmd $grunt configAndroidBootstrap
echo "* Building Android bootstrap"
run_cmd $grunt buildAndroidBootstrap
if $include_dev ; then
run_cmd get_apidemos
echo "* Configuring and cleaning/building Android test app: ApiDemos"
run_cmd $grunt configAndroidApp:ApiDemos
run_cmd $grunt buildAndroidApp:ApiDemos
fi
echo "* Setting Android config to Appium's version"
run_cmd $grunt setConfigVer:android
}
reset_selendroid() {
echo "RESETTING SELENDROID"
echo "* Cloning/updating selendroid"
run_cmd rm -rf submodules/selendroid/selendroid-server/target
run_cmd git submodule update --init submodules/selendroid
run_cmd rm -rf selendroid
echo "* Building selendroid server and supporting libraries"
run_cmd $grunt buildSelendroidServer
if $include_dev ; then
get_apidemos
echo "* Linking selendroid test app: WebViewDemo"
run_cmd rm -rf $appium_home/sample-code/apps/WebViewDemo
run_cmd ln -s $appium_home/submodules/selendroid/selendroid-test-app $appium_home/sample-code/apps/WebViewDemo
fi
echo "* Setting Selendroid config to Appium's version"
run_cmd $grunt setConfigVer:selendroid
}
cleanup() {
echo "CLEANING UP"
echo "* Cleaning any temp files"
run_cmd rm -rf /tmp/instruments_sock
run_cmd rm -rf *.trace
}
main() {
echo "---- Resetting / Initializing Appium ----"
if $include_dev ; then
echo "* Dev mode is on, will download/build test apps"
fi
reset_general
if $should_reset_ios ; then
reset_ios
fi
if $should_reset_android ; then
reset_android
fi
if $should_reset_selendroid ; then
reset_selendroid
fi
cleanup
reset_successful=true
}
on_exit() {
if $reset_successful ; then
echo "---- reset.sh completed successfully ----"
else
echo "---- FAILURE: reset.sh exited with status $? ----"
if ! $verbose ; then
echo "---- Retry with --verbose to see errors ----"
fi
fi
}
trap on_exit EXIT
main