-
Notifications
You must be signed in to change notification settings - Fork 15
/
upload_app_to_BS.sh
executable file
·121 lines (98 loc) · 3.7 KB
/
upload_app_to_BS.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
#!/bin/bash
#
# This is a positional arguments-only example of Argbash potential
#
# ARG_HELP([This script uploads an Android apk or iOS ipa to BrowserStack given the User Name and Access Key passed])
# ARG_POSITIONAL_SINGLE([bs_user_name],[BrowserStack User Name])
# ARG_POSITIONAL_SINGLE([bs_access_key],[BrowserStack Access Key])
# ARG_POSITIONAL_SINGLE([android_app_location],[Name and Location of the Android App apk or iOS ipa])
# ARGBASH_GO()
# needed because of Argbash --> m4_ignore([
### START OF CODE GENERATED BY Argbash v2.9.0 one line above ###
# Argbash is a bash code generator used to get arguments parsing right.
# Argbash is FREE SOFTWARE, see https://argbash.io for more info
# Generated online by https://argbash.io/generate
die()
{
local _ret="${2:-1}"
test "${_PRINT_HELP:-no}" = yes && print_help >&2
echo "$1" >&2
exit "${_ret}"
}
begins_with_short_option()
{
local first_option all_short_options='h'
first_option="${1:0:1}"
test "$all_short_options" = "${all_short_options/$first_option/}" && return 1 || return 0
}
# THE DEFAULTS INITIALIZATION - POSITIONALS
_positionals=()
# THE DEFAULTS INITIALIZATION - OPTIONALS
print_help()
{
printf '%s\n' "This script uploads an Android apk or iOS ipa to BrowserStack given the User Name and Access Key passed"
printf 'Usage: %s [-h|--help] <bs_user_name> <bs_access_key> <android_app_location>\n' "$0"
printf '\t%s\n' "<bs_user_name>: BrowserStack User Name"
printf '\t%s\n' "<bs_access_key>: BrowserStack Access Key"
printf '\t%s\n' "<android_app_location>: Name and Location of the Android App apk or or iOS ipa"
printf '\t%s\n' "-h, --help: Prints help"
}
parse_commandline()
{
_positionals_count=0
while test $# -gt 0
do
_key="$1"
case "$_key" in
-h|--help)
print_help
exit 0
;;
-h*)
print_help
exit 0
;;
*)
_last_positional="$1"
_positionals+=("$_last_positional")
_positionals_count=$((_positionals_count + 1))
;;
esac
shift
done
}
handle_passed_args_count()
{
local _required_args_string="'bs_user_name', 'bs_access_key' and 'android_app_location'"
test "${_positionals_count}" -ge 3 || _PRINT_HELP=yes die "FATAL ERROR: Not enough positional arguments - we require exactly 3 (namely: $_required_args_string), but got only ${_positionals_count}." 1
test "${_positionals_count}" -le 3 || _PRINT_HELP=yes die "FATAL ERROR: There were spurious positional arguments --- we expect exactly 3 (namely: $_required_args_string), but got ${_positionals_count} (the last one was: '${_last_positional}')." 1
}
assign_positional_args()
{
local _positional_name _shift_for=$1
_positional_names="_arg_bs_user_name _arg_bs_access_key _arg_android_app_location "
shift "$_shift_for"
for _positional_name in ${_positional_names}
do
test $# -gt 0 || break
eval "$_positional_name=\${1}" || die "Error during argument parsing, possibly an Argbash bug." 1
shift
done
}
parse_commandline "$@"
handle_passed_args_count
assign_positional_args 1 "${_positionals[@]}"
# OTHER STUFF GENERATED BY Argbash
### END OF CODE GENERATED BY Argbash (sortof) ### ])
# [ <-- needed because of Argbash
echo "Value of first argument: $_arg_bs_user_name"
echo "Value of second argument: $_arg_bs_access_key"
echo "Value of third argument: $_arg_android_app_location"
echo "------------------UPLOADING-APP-TO-BROWSERSTACK------------------"
curl -u "$_arg_bs_user_name:$_arg_bs_access_key" \
-X POST "https://api-cloud.browserstack.com/app-automate/upload" \
-F "file=@$_arg_android_app_location"
# the app URL is returned from the above call, may need that in the tests somewhere.
# {"app_url":"bs://e1aad69246cb74c89bbd463a3eeed9bfbe140ee0"}
# may need to write the app url to the config.json file
# ] <-- needed because of Argbash