nixenvironment 0.0.59 → 0.0.60
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +14 -14
- data/bin/Config +2 -2
- data/bin/nixenvironment +420 -842
- data/legacy/CleanWorkingCopy.sh +69 -0
- data/legacy/Deploy.sh +44 -0
- data/legacy/DeployAPK.py +58 -0
- data/legacy/DeployIPA.sh +125 -0
- data/legacy/DetectSCM.sh +11 -0
- data/legacy/GenerateCodeCoverageForXCTests.sh +134 -0
- data/legacy/GenerateCodeDuplicationReport.sh +24 -0
- data/legacy/IncrementBuildNumber.py +129 -0
- data/legacy/LoadBuildEnvVars.sh +116 -0
- data/legacy/MakeTag.sh +94 -0
- data/legacy/RemoveTemporaryFiles.sh +9 -0
- data/legacy/SaveRevision.sh +122 -0
- data/legacy/UnityBuildAndroid.py +84 -0
- data/legacy/UnityBuildAutomationScripts/CommandLineReader.cs +130 -0
- data/legacy/UnityBuildAutomationScripts/NIXBuilder.cs +105 -0
- data/legacy/UnityBuildEnvVars.py +41 -0
- data/legacy/VerifyBinarySigning.py +80 -0
- data/legacy/svn-clean.pl +246 -0
- data/legacy/svncopy.pl +1134 -0
- data/lib/nixenvironment.rb +5 -0
- data/lib/nixenvironment/archiver.rb +690 -0
- data/lib/nixenvironment/build_env_vars_loader.rb +24 -0
- data/lib/nixenvironment/cmd_executor.rb +33 -0
- data/lib/nixenvironment/config.rb +127 -14
- data/lib/nixenvironment/git.rb +107 -0
- data/lib/nixenvironment/plist.rb +52 -0
- data/lib/nixenvironment/version.rb +1 -1
- data/lib/nixenvironment/xcodebuild.rb +167 -0
- data/nixenvironment.gemspec +6 -0
- data/utils/XcodeIconTagger/IconTagger +0 -0
- data/utils/XcodeIconTagger/masks/OneLineMask.png +0 -0
- data/utils/XcodeIconTagger/masks/TwoLineMask.png +0 -0
- data/utils/aapt +0 -0
- data/utils/gcovr +986 -0
- data/utils/identitieslist +0 -0
- data/utils/simian-2.3.33.jar +0 -0
- metadata +118 -2
@@ -0,0 +1,69 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
|
3
|
+
# Created by Yuri Govorushchenko on 22/05/2013.
|
4
|
+
# Copyright 2013 nix. All rights reserved.
|
5
|
+
|
6
|
+
# Script reverts all changes in working copy and removes unversioned files.
|
7
|
+
|
8
|
+
currentScriptDir=$(cd "$(dirname "$0")"; pwd)
|
9
|
+
SCM_TYPE=$("${currentScriptDir}/DetectSCM.sh")
|
10
|
+
|
11
|
+
cleanAll=$1
|
12
|
+
|
13
|
+
CLEAN_ALL=0
|
14
|
+
if [ "${cleanAll}" == "all" ]; then
|
15
|
+
echo "--- Clean all specified"
|
16
|
+
CLEAN_ALL=1
|
17
|
+
fi
|
18
|
+
|
19
|
+
# Subversion
|
20
|
+
if [[ "${SCM_TYPE}" = "svn" ]]; then
|
21
|
+
echo "SVN working copy detected, cleaning..."
|
22
|
+
|
23
|
+
# revert all changes
|
24
|
+
svn revert --depth=infinity "./"
|
25
|
+
|
26
|
+
# revert all changes in external directories
|
27
|
+
for i in $(svn status | grep ^Performing | cut -d\' -f 2)
|
28
|
+
do
|
29
|
+
svn revert -R $i
|
30
|
+
done
|
31
|
+
|
32
|
+
# wipe out unversioned files
|
33
|
+
perl "${currentScriptDir}/svn-clean.pl" "./"
|
34
|
+
|
35
|
+
# git
|
36
|
+
elif [[ "${SCM_TYPE}" = "git" ]]; then
|
37
|
+
echo "GIT working copy detected, cleaning..."
|
38
|
+
|
39
|
+
# revert all changes
|
40
|
+
git reset --hard
|
41
|
+
|
42
|
+
if [ ${CLEAN_ALL} -eq 1 ]; then
|
43
|
+
# wipe out unversioned files (force, remove whole directories, remove ignored files)
|
44
|
+
git clean -fdx
|
45
|
+
else
|
46
|
+
# wipe out unversioned files (force, remove whole directories)
|
47
|
+
git clean -fd
|
48
|
+
fi
|
49
|
+
|
50
|
+
# mercurial
|
51
|
+
elif [[ "${SCM_TYPE}" = "mercurial" ]]; then
|
52
|
+
echo "Mercurial working copy detected, cleaning..."
|
53
|
+
|
54
|
+
# revert all changes
|
55
|
+
hg revert --all
|
56
|
+
|
57
|
+
if [ ${CLEAN_ALL} -eq 1 ]; then
|
58
|
+
# wipe out unversioned files
|
59
|
+
hg --config extensions.purge= clean --all
|
60
|
+
else
|
61
|
+
# wipe out unversioned files (except ignored files)
|
62
|
+
hg --config extensions.purge= clean
|
63
|
+
fi
|
64
|
+
|
65
|
+
# undefined SCM
|
66
|
+
else
|
67
|
+
echo "error: script must be run from working copy" 1>&2
|
68
|
+
exit 1
|
69
|
+
fi
|
data/legacy/Deploy.sh
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
|
3
|
+
# Created by Yaroslav on 10/21/11.
|
4
|
+
# Copyright 2011 nix. All rights reserved.
|
5
|
+
|
6
|
+
# Script uploads IPA product. Creates appropriate subdirectories.
|
7
|
+
|
8
|
+
if [[ $# < 5 ]]; then
|
9
|
+
echo "usage: $0 DEPLOY_HOST DEPLOY_DIR DEPLOY_USER DEPLOY_PASSWORD LOCAL_PATH_TO_BUILD"
|
10
|
+
exit 1
|
11
|
+
fi
|
12
|
+
|
13
|
+
DEPLOY_HOST=$1
|
14
|
+
DEPLOY_DIR=$2
|
15
|
+
DEPLOY_USER=$3
|
16
|
+
DEPLOY_PASS=$4
|
17
|
+
LOCAL_PATH_TO_BUILD=$5
|
18
|
+
|
19
|
+
chmod -R 775 "${LOCAL_PATH_TO_BUILD}"
|
20
|
+
|
21
|
+
echo "Uploading build"
|
22
|
+
|
23
|
+
expect -d <<END_OF_SCRIPT
|
24
|
+
set timeout -1
|
25
|
+
spawn scp -p -r "${LOCAL_PATH_TO_BUILD}" "${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_DIR}"
|
26
|
+
expect {
|
27
|
+
"Password:" {
|
28
|
+
send "${DEPLOY_PASS}\r"
|
29
|
+
}
|
30
|
+
"yes/no)?" {
|
31
|
+
send "yes\r"
|
32
|
+
}
|
33
|
+
eof {
|
34
|
+
exit
|
35
|
+
}
|
36
|
+
-re . {
|
37
|
+
exp_continue
|
38
|
+
}
|
39
|
+
}
|
40
|
+
expect eof
|
41
|
+
exit
|
42
|
+
END_OF_SCRIPT
|
43
|
+
|
44
|
+
rm -rf "${LOCAL_PATH_TO_BUILD}"
|
data/legacy/DeployAPK.py
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
#!/usr/bin/python
|
2
|
+
|
3
|
+
# Created by Egor Zubkov on 22/12/14.
|
4
|
+
# Copyright 2014 NIX. All rights reserved.
|
5
|
+
|
6
|
+
import os
|
7
|
+
import sys
|
8
|
+
import re
|
9
|
+
import shutil
|
10
|
+
import UnityBuildEnvVars
|
11
|
+
|
12
|
+
|
13
|
+
def main():
|
14
|
+
build_env_vars = UnityBuildEnvVars
|
15
|
+
configuration, build_number, build_path = build_env_vars.env_vars()
|
16
|
+
build_name, build_version = build_data(build_path)
|
17
|
+
|
18
|
+
print "BUNDLE_ID = %s" % build_name
|
19
|
+
print "APP_VERSION = %s" % build_version
|
20
|
+
print "BUILD_VERSION = %s" % build_number
|
21
|
+
|
22
|
+
upload_build(configuration, build_name, build_version, build_number, build_path)
|
23
|
+
|
24
|
+
|
25
|
+
def build_data(build_path):
|
26
|
+
regex_template = "^package:.*\s%s='([a-zA-Z0-9._]*)'.*"
|
27
|
+
build_name_regex = regex_template % "name"
|
28
|
+
build_version_regex = regex_template % "versionName"
|
29
|
+
|
30
|
+
aapt_path = os.path.join(os.path.dirname(__file__), "Utils/aapt")
|
31
|
+
output = os.popen("'%s' dump badging '%s'" % (aapt_path, build_path)).read()
|
32
|
+
|
33
|
+
build_name = re.match(build_name_regex, output).groups()[0]
|
34
|
+
build_version = re.match(build_version_regex, output).groups()[0]
|
35
|
+
|
36
|
+
return build_name, build_version
|
37
|
+
|
38
|
+
|
39
|
+
def upload_build(configuration, build_name, build_version, build_number, build_path):
|
40
|
+
deploy_host = os.environ['DEPLOY_HOST']
|
41
|
+
deploy_dir = os.environ['ANDROID_DEPLOY_PATH']
|
42
|
+
deploy_user = os.environ['ANDROID_DEPLOY_USERNAME']
|
43
|
+
deploy_password = os.environ['ANDROID_DEPLOY_PASSWORD']
|
44
|
+
|
45
|
+
deploy_file_path = os.path.join(os.path.dirname(__file__), "Deploy.sh")
|
46
|
+
build_version_path = "v.%s_%s" % (build_version, build_number)
|
47
|
+
temp_build_dir = os.path.join(os.path.dirname(build_path), build_name)
|
48
|
+
temp_build_path = os.path.join(temp_build_dir, build_version_path, configuration)
|
49
|
+
|
50
|
+
if os.path.exists(temp_build_dir):
|
51
|
+
shutil.rmtree(temp_build_dir)
|
52
|
+
|
53
|
+
os.makedirs(temp_build_path)
|
54
|
+
shutil.copy(build_path, temp_build_path)
|
55
|
+
os.system("'%s' %s %s %s %s '%s'" % (deploy_file_path, deploy_host, deploy_dir, deploy_user, deploy_password, temp_build_dir))
|
56
|
+
|
57
|
+
if __name__ == '__main__':
|
58
|
+
sys.exit(main())
|
data/legacy/DeployIPA.sh
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
|
3
|
+
# Created by Yaroslav on 10/21/11.
|
4
|
+
# Copyright 2011 nix. All rights reserved.
|
5
|
+
|
6
|
+
# Script uploads IPA product. Creates appropriate subdirectories.
|
7
|
+
|
8
|
+
if [[ $# < 6 ]]; then
|
9
|
+
echo "usage: $0 DEPLOY_HOST DEPLOY_DIR DEPLOY_USER DEPLOY_PASSWORD DEPLOY_ITUNESCONNECT_USER DELIVER_DEPLOY"
|
10
|
+
exit 1
|
11
|
+
fi
|
12
|
+
|
13
|
+
function zipDSYM {
|
14
|
+
if [ -d "${APP_DSYM}" ]; then
|
15
|
+
cd "${BUILT_PRODUCTS_DIR}"
|
16
|
+
zip -r "$1" "${EXECUTABLE_NAME}.app.dSYM"
|
17
|
+
cd "${currentScriptDir}"
|
18
|
+
fi
|
19
|
+
}
|
20
|
+
|
21
|
+
DEPLOY_HOST=$1
|
22
|
+
DEPLOY_DIR=$2
|
23
|
+
DEPLOY_USER=$3
|
24
|
+
DEPLOY_PASS=$4
|
25
|
+
DEPLOY_ITUNESCONNECT_USER=$5
|
26
|
+
DELIVER_DEPLOY=$6
|
27
|
+
|
28
|
+
# load variables
|
29
|
+
currentScriptDir=$(cd "$(dirname "$0")"; pwd)
|
30
|
+
source "${currentScriptDir}/LoadBuildEnvVars.sh"
|
31
|
+
|
32
|
+
checkWorkingCopyIsClean
|
33
|
+
|
34
|
+
if [[ ! -f "${IPA_PRODUCT}" ]] && [[ ! -f "${IPA_PRODUCT_RESIGNED_DEVICE}" ]] && [[ ! -f "${IPA_PRODUCT_RESIGNED_ADHOC}" ]] && [[ ! -f "${IPA_PRODUCT_RESIGNED_APPSTORE}" ]]; then
|
35
|
+
echo "error: Nothing to upload. Generate ipa first."
|
36
|
+
exit 1
|
37
|
+
fi
|
38
|
+
|
39
|
+
# ********************
|
40
|
+
# 1) resigned_appstore
|
41
|
+
# ********************
|
42
|
+
|
43
|
+
if [[ -f "${IPA_PRODUCT_RESIGNED_APPSTORE}" ]]; then
|
44
|
+
LOCAL_PATH_TO_APP="/tmp/${IPA_BUNDLE_ID_RESIGNED_APPSTORE}"
|
45
|
+
LOCAL_PATH_TO_BUILD="${LOCAL_PATH_TO_APP}/v.${CURRENT_APP_VERSION}_${CURRENT_BUILD_VERSION}"
|
46
|
+
rm -rf "${LOCAL_PATH_TO_BUILD}" | true # cleanup in case of previous releases
|
47
|
+
mkdir -p "${LOCAL_PATH_TO_BUILD}"
|
48
|
+
|
49
|
+
CONFIGURATION_FULL_PATH="${LOCAL_PATH_TO_BUILD}/${NAME_FOR_DEPLOYMENT_RESIGNED_APPSTORE}"
|
50
|
+
mkdir "${CONFIGURATION_FULL_PATH}"
|
51
|
+
cp "${IPA_PRODUCT_RESIGNED_APPSTORE}" "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.ipa"
|
52
|
+
|
53
|
+
echo "Starting deliver..."
|
54
|
+
|
55
|
+
if [ "${DEPLOY_ITUNESCONNECT_USER}" == "unknown" ]; then
|
56
|
+
echo "DEPLOY_ITUNESCONNECT_USER isn't specified, skipping deliver..."
|
57
|
+
else
|
58
|
+
if [ "${DELIVER_DEPLOY}" == 1 ]; then
|
59
|
+
deliver testflight "${IPA_PRODUCT_RESIGNED_APPSTORE}" -u "${DEPLOY_ITUNESCONNECT_USER}"
|
60
|
+
else
|
61
|
+
deliver testflight "${IPA_PRODUCT_RESIGNED_APPSTORE}" -u "${DEPLOY_ITUNESCONNECT_USER}" --skip-deploy
|
62
|
+
fi
|
63
|
+
fi
|
64
|
+
|
65
|
+
zipDSYM "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.app.dSYM.zip"
|
66
|
+
|
67
|
+
${currentScriptDir}/Deploy.sh "${DEPLOY_HOST}" "${DEPLOY_DIR}" "${DEPLOY_USER}" "${DEPLOY_PASS}" "${LOCAL_PATH_TO_APP}"
|
68
|
+
fi
|
69
|
+
|
70
|
+
# *********
|
71
|
+
# 2) device
|
72
|
+
# *********
|
73
|
+
|
74
|
+
if [[ -f "${IPA_PRODUCT}" ]]; then
|
75
|
+
LOCAL_PATH_TO_APP="/tmp/${IPA_BUNDLE_ID}"
|
76
|
+
LOCAL_PATH_TO_BUILD="${LOCAL_PATH_TO_APP}/v.${CURRENT_APP_VERSION}_${CURRENT_BUILD_VERSION}"
|
77
|
+
rm -rf "${LOCAL_PATH_TO_BUILD}" | true # cleanup in case of previous releases
|
78
|
+
mkdir -p "${LOCAL_PATH_TO_BUILD}"
|
79
|
+
|
80
|
+
CONFIGURATION_FULL_PATH="${LOCAL_PATH_TO_BUILD}/${NAME_FOR_DEPLOYMENT}"
|
81
|
+
mkdir "${CONFIGURATION_FULL_PATH}"
|
82
|
+
cp "${IPA_PRODUCT}" "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.ipa"
|
83
|
+
|
84
|
+
zipDSYM "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.app.dSYM.zip"
|
85
|
+
|
86
|
+
${currentScriptDir}/Deploy.sh "${DEPLOY_HOST}" "${DEPLOY_DIR}" "${DEPLOY_USER}" "${DEPLOY_PASS}" "${LOCAL_PATH_TO_APP}"
|
87
|
+
fi
|
88
|
+
|
89
|
+
# ******************
|
90
|
+
# 3) resigned_device
|
91
|
+
# ******************
|
92
|
+
|
93
|
+
if [[ -f "${IPA_PRODUCT_RESIGNED_DEVICE}" ]]; then
|
94
|
+
LOCAL_PATH_TO_APP="/tmp/${IPA_BUNDLE_ID_RESIGNED_DEVICE}"
|
95
|
+
LOCAL_PATH_TO_BUILD="${LOCAL_PATH_TO_APP}/v.${CURRENT_APP_VERSION}_${CURRENT_BUILD_VERSION}"
|
96
|
+
rm -rf "${LOCAL_PATH_TO_BUILD}" | true # cleanup in case of previous releases
|
97
|
+
mkdir -p "${LOCAL_PATH_TO_BUILD}"
|
98
|
+
|
99
|
+
CONFIGURATION_FULL_PATH="${LOCAL_PATH_TO_BUILD}/${NAME_FOR_DEPLOYMENT_RESIGNED_DEVICE}"
|
100
|
+
mkdir "${CONFIGURATION_FULL_PATH}"
|
101
|
+
cp "${IPA_PRODUCT_RESIGNED_DEVICE}" "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.ipa"
|
102
|
+
|
103
|
+
zipDSYM "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.app.dSYM.zip"
|
104
|
+
|
105
|
+
${currentScriptDir}/Deploy.sh "${DEPLOY_HOST}" "${DEPLOY_DIR}" "${DEPLOY_USER}" "${DEPLOY_PASS}" "${LOCAL_PATH_TO_APP}"
|
106
|
+
fi
|
107
|
+
|
108
|
+
# *****************
|
109
|
+
# 4) resigned_adhoc
|
110
|
+
# *****************
|
111
|
+
|
112
|
+
if [[ -f "${IPA_PRODUCT_RESIGNED_ADHOC}" ]]; then
|
113
|
+
LOCAL_PATH_TO_APP="/tmp/${IPA_BUNDLE_ID_RESIGNED_ADHOC}"
|
114
|
+
LOCAL_PATH_TO_BUILD="${LOCAL_PATH_TO_APP}/v.${CURRENT_APP_VERSION}_${CURRENT_BUILD_VERSION}"
|
115
|
+
rm -rf "${LOCAL_PATH_TO_BUILD}" | true # cleanup in case of previous releases
|
116
|
+
mkdir -p "${LOCAL_PATH_TO_BUILD}"
|
117
|
+
|
118
|
+
CONFIGURATION_FULL_PATH="${LOCAL_PATH_TO_BUILD}/${NAME_FOR_DEPLOYMENT_RESIGNED_ADHOC}"
|
119
|
+
mkdir "${CONFIGURATION_FULL_PATH}"
|
120
|
+
cp "${IPA_PRODUCT_RESIGNED_ADHOC}" "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.ipa"
|
121
|
+
|
122
|
+
zipDSYM "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.app.dSYM.zip"
|
123
|
+
|
124
|
+
${currentScriptDir}/Deploy.sh "${DEPLOY_HOST}" "${DEPLOY_DIR}" "${DEPLOY_USER}" "${DEPLOY_PASS}" "${LOCAL_PATH_TO_APP}"
|
125
|
+
fi
|
data/legacy/DetectSCM.sh
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
|
3
|
+
# Created by Nezhelskoy Iliya on 10/09/14.
|
4
|
+
# Copyright (c) 2014 NIX. All rights reserved.
|
5
|
+
|
6
|
+
# Script generates code coverage report for Cobertura Jenkins plugin. Call it after running tests.
|
7
|
+
# Tests target should be setup for generating GCOV data.
|
8
|
+
|
9
|
+
# Prepare variables
|
10
|
+
workspace="" scheme="" configuration="" sdk="" exclude="" output="" extraParams=()
|
11
|
+
|
12
|
+
currentScriptDir=$(cd "$(dirname "$0")"; pwd)
|
13
|
+
|
14
|
+
# Description of command usage
|
15
|
+
function Usage()
|
16
|
+
{
|
17
|
+
echo "\tUsage: -workspace <workspacename>\n\t\
|
18
|
+
-scheme <schemeName>\n\t\
|
19
|
+
-configuration <configurationName>\n\t\
|
20
|
+
-sdk <sdkName>\n\t\
|
21
|
+
[-exclude <excludePattern>]\n\t\
|
22
|
+
[-output <outputDirectory>]\n\t\
|
23
|
+
..."
|
24
|
+
}
|
25
|
+
|
26
|
+
function GetParams()
|
27
|
+
{
|
28
|
+
while [[ $# > 0 ]]
|
29
|
+
do
|
30
|
+
key="$1"
|
31
|
+
|
32
|
+
case $key in
|
33
|
+
-workspace)
|
34
|
+
workspace="$2"
|
35
|
+
shift 2;;
|
36
|
+
-scheme)
|
37
|
+
scheme="$2"
|
38
|
+
shift 2;;
|
39
|
+
-configuration)
|
40
|
+
configuration="$2"
|
41
|
+
shift 2 ;;
|
42
|
+
-sdk)
|
43
|
+
sdk="$2"
|
44
|
+
shift 2 ;;
|
45
|
+
-exclude)
|
46
|
+
exclude="-exclude $2"
|
47
|
+
shift 2 ;;
|
48
|
+
-output)
|
49
|
+
output="$2"
|
50
|
+
shift 2 ;;
|
51
|
+
*)
|
52
|
+
extraParams=(${extraParams[@]} \"$1\")
|
53
|
+
shift ;;
|
54
|
+
esac
|
55
|
+
done
|
56
|
+
}
|
57
|
+
|
58
|
+
# Сheck for required arguments
|
59
|
+
function CheckParams()
|
60
|
+
{
|
61
|
+
if [ ! "$workspace" ] || [ ! "$scheme" ] || [ ! "$configuration" ] || [ ! "$sdk" ]; then
|
62
|
+
echo "Missing parameter argument" >&2
|
63
|
+
Usage >&2
|
64
|
+
exit 1
|
65
|
+
fi
|
66
|
+
}
|
67
|
+
|
68
|
+
function GenerateCoverage()
|
69
|
+
{
|
70
|
+
productName="$1"
|
71
|
+
objectsDir="$2"
|
72
|
+
exclude="$3"
|
73
|
+
outputPath="$4"
|
74
|
+
|
75
|
+
# Create output directory
|
76
|
+
mkdir -p $outputPath
|
77
|
+
|
78
|
+
printf " Generating coverage for '$productName'... "
|
79
|
+
"${currentScriptDir}/Utils/gcovr" -r "$(PWD)" --object-directory="${objectsDir}" "${exclude}" --xml > "$outputPath${productName}.xml"
|
80
|
+
|
81
|
+
if [ $? -ne 0 ]; then
|
82
|
+
exit 1
|
83
|
+
fi
|
84
|
+
|
85
|
+
echo "Done"
|
86
|
+
}
|
87
|
+
|
88
|
+
function ProcessBuildSetting ()
|
89
|
+
{
|
90
|
+
# The characters in the value are used to split the line into words
|
91
|
+
IFS=" = "
|
92
|
+
|
93
|
+
# Prepare variables
|
94
|
+
readonly currentVariantKey="CURRENT_VARIANT"
|
95
|
+
readonly defaultVariant="normal"
|
96
|
+
readonly productNameKey="PRODUCT_NAME"
|
97
|
+
readonly currentArchKey="NATIVE_ARCH"
|
98
|
+
readonly objectDirPrefix="OBJECT_FILE_DIR_"
|
99
|
+
|
100
|
+
# To be determined by 'currentVariantKey'. Initially will use the default value
|
101
|
+
objectsDirKey="$objectDirPrefix$defaultVariant"
|
102
|
+
|
103
|
+
productName=""
|
104
|
+
objectsDir=""
|
105
|
+
currentArch=""
|
106
|
+
|
107
|
+
# Read input settings
|
108
|
+
while read settingKey settingValue; do
|
109
|
+
case $settingKey in
|
110
|
+
$currentVariantKey)
|
111
|
+
objectsDirKey="$objectDirPrefix$settingValue" ;;
|
112
|
+
$objectsDirKey)
|
113
|
+
objectsDir=$settingValue ;;
|
114
|
+
$productNameKey)
|
115
|
+
productName=$settingValue ;;
|
116
|
+
$currentArchKey)
|
117
|
+
currentArch=$settingValue ;;
|
118
|
+
esac
|
119
|
+
|
120
|
+
if [ "$productName" ] && [ "$objectsDir" ] && [ "$currentArch" ]; then
|
121
|
+
GenerateCoverage $productName "${objectsDir}/${currentArch}" "$exclude" "$output"
|
122
|
+
productName=""
|
123
|
+
objectsDir=""
|
124
|
+
currentArch=""
|
125
|
+
fi
|
126
|
+
done
|
127
|
+
}
|
128
|
+
|
129
|
+
# Load variables
|
130
|
+
GetParams "$@"
|
131
|
+
CheckParams
|
132
|
+
|
133
|
+
# Execute
|
134
|
+
eval xcodebuild -workspace "$workspace" -scheme "$scheme" -configuration "$configuration" -sdk "$sdk" test -showBuildSettings "${extraParams[@]}" | ProcessBuildSetting
|