-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathinject_DVTPlugInCompatibilityUUID.sh
executable file
·66 lines (53 loc) · 2.15 KB
/
inject_DVTPlugInCompatibilityUUID.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
#! /usr/bin/env sh
# assumption: Xcode is always installed at /Applications
# STEPS:
# use plistbuddy to read $INFOPLIST_FILE::DVTPlugInCompatibilityUUIDs array
# get new DVTPlugInCompatibilityUUID [ defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID ]
# check new DVTPlugInCompatibilityUUID already in the array
# YES: end
# NO: use plistbuddy to write the new DVTPlugInCompatibilityUUID into the array and write out to file
get_xcode_env_val() {
xcodepath=$("xcode-select" -print-path);
var=$($path/usr/bin/xcodebuild -showBuildSettings | sed -n -e 's/'"$1"' = \(.*\)/\1/p');
echo $var;
}
get_new_DVTPlugInCompatibilityUUID() {
var=$(defaults read "$1/Contents/Info" DVTPlugInCompatibilityUUID)
echo $var;
}
read_DVTPlugInCompatibilityUUIDs() {
var=$(/usr/libexec/PlistBuddy -c "Print DVTPlugInCompatibilityUUIDs" "$1")
echo $var;
}
check_new_DVTPlugInCompatibilityUUID_added() {
case "$1" in
*"$2"* )
# "New DVTPlugInCompatibilityUUID added";
echo 1;
;;
* )
# "New DVTPlugInCompatibilityUUID not added";
echo 0;
;;
esac
}
add_new_DVTPlugInCompatibilityUUID() {
$(/usr/libexec/PlistBuddy -c "Add :DVTPlugInCompatibilityUUIDs: string $2" "$1")
echo "The new DVTPlugInCompatibilityUUID [$2] added"
}
echo "=== $0 starts executing ==="
INFOPLIST_FILE=$(get_xcode_env_val "INFOPLIST_FILE")
echo "Currently working with this info plist file ==> $INFOPLIST_FILE"
for xcode in /Applications/Xcode*.app; do
COMPATIBILITYUUID_ARRAY=$(read_DVTPlugInCompatibilityUUIDs "${INFOPLIST_FILE}")
NEW_COMPATIBILITYUUID=$(get_new_DVTPlugInCompatibilityUUID "$xcode")
echo "from ==> [$xcode] , found DVTPlugInCompatibilityUUID [$NEW_COMPATIBILITYUUID]"
IS_ADDED=$(check_new_DVTPlugInCompatibilityUUID_added "$COMPATIBILITYUUID_ARRAY" "$NEW_COMPATIBILITYUUID")
if [[ $IS_ADDED == 0 ]]; then
echo "DVTPlugInCompatibilityUUID is not in DVTPlugInCompatibilityUUIDs"
add_new_DVTPlugInCompatibilityUUID "$INFOPLIST_FILE" "$NEW_COMPATIBILITYUUID"
else
echo "The new DVTPlugInCompatibilityUUID [$NEW_COMPATIBILITYUUID] already added"
fi
done
echo "=== $0 finish executed ==="