forked from exelban/stats
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
133 lines (102 loc) · 3.85 KB
/
Makefile
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
APP = Stats
BUNDLE_ID = eu.exelban.$(APP)
BUILD_PATH = $(PWD)/build
APP_PATH = "$(BUILD_PATH)/$(APP).app"
ZIP_PATH = "$(BUILD_PATH)/$(APP).zip"
.SILENT: archive notarize sign prepare-dmg prepare-dSYM clean next-version check history disk smc
.PHONY: build archive notarize sign prepare-dmg prepare-dSYM clean next-version check history open smc
build: clean next-version archive notarize sign prepare-dmg prepare-dSYM open
# --- MAIN WORLFLOW FUNCTIONS --- #
archive: clean
osascript -e 'display notification "Exporting application archive..." with title "Build the Stats"'
echo "Exporting application archive..."
xcodebuild \
-scheme $(APP) \
-destination 'platform=OS X,arch=x86_64' \
-configuration Release archive \
-archivePath $(BUILD_PATH)/$(APP).xcarchive
echo "Application built, starting the export archive..."
xcodebuild -exportArchive \
-exportOptionsPlist "$(PWD)/exportOptions.plist" \
-archivePath $(BUILD_PATH)/$(APP).xcarchive \
-exportPath $(BUILD_PATH)
ditto -c -k --keepParent $(APP_PATH) $(ZIP_PATH)
echo "Project archived successfully"
notarize:
osascript -e 'display notification "Submitting app for notarization..." with title "Build the Stats"'
echo "Submitting app for notarization..."
xcrun altool --notarize-app \
--primary-bundle-id $(BUNDLE_ID)\
-itc_provider $(AC_PROVIDER) \
-u $(AC_USERNAME) \
-p @keychain:AC_PASSWORD \
--file $(ZIP_PATH)
echo "Application sent to the notarization center"
sleep 30s
LAST_REQUEST="test"
sign:
osascript -e 'display notification "Checking if package is approved by Apple..." with title "Build the Stats"'
echo "Checking if package is approved by Apple..."
while true; do \
if [[ "$$(xcrun altool --notarization-history 0 -itc_provider $(AC_PROVIDER) -u $(AC_USERNAME) -p @keychain:AC_PASSWORD | sed -n '6p')" == *"success"* ]]; then \
echo "OK" ;\
break ;\
fi ;\
echo "Package was not approved by Apple, recheck in 10s..."; \
sleep 10s ;\
done
echo "Going to staple an application..."
xcrun stapler staple $(APP_PATH)
spctl -a -t exec -vvv $(APP_PATH)
osascript -e 'display notification "Stats successfully stapled" with title "Build the Stats"'
echo "Stats successfully stapled"
prepare-dmg:
if [ ! -d $(PWD)/create-dmg ]; then \
git clone https://github.com/create-dmg/create-dmg; \
fi
./create-dmg/create-dmg \
--volname $(APP) \
--background "./Stats/Supporting Files/background.png" \
--window-pos 200 120 \
--window-size 500 320 \
--icon-size 80 \
--icon "Stats.app" 125 175 \
--hide-extension "Stats.app" \
--app-drop-link 375 175 \
--no-internet-enable \
$(PWD)/$(APP).dmg \
$(APP_PATH)
rm -rf ./create-dmg
prepare-dSYM:
echo "Zipping dSYMs..."
cd $(BUILD_PATH)/Stats.xcarchive/dSYMs && zip -r $(PWD)/dSYMs.zip .
echo "Created zip with dSYMs"
# --- HELPERS --- #
clean:
rm -rf $(BUILD_PATH)
if [ -a $(PWD)/dSYMs.zip ]; then rm $(PWD)/dSYMs.zip; fi;
if [ -a $(PWD)/Stats.dmg ]; then rm $(PWD)/Stats.dmg; fi;
next-version:
versionNumber=$$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$(PWD)/Stats/Supporting Files/Info.plist") ;\
echo "Actual version is: $$versionNumber" ;\
versionNumber=$$((versionNumber + 1)) ;\
echo "Next version is: $$versionNumber" ;\
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $$versionNumber" "$(PWD)/Stats/Supporting Files/Info.plist" ;\
check:
xcrun altool \
--notarization-info 36ba52a7-97bb-43e7-8faf-72bd6e9e1df3 \
-itc_provider $(AC_PROVIDER) \
-u $(AC_USERNAME) \
-p @keychain:AC_PASSWORD
history:
xcrun altool --notarization-history 0 \
-itc_provider $(AC_PROVIDER) \
-u $(AC_USERNAME) \
-p @keychain:AC_PASSWORD
open:
osascript -e 'display notification "Stats signed and ready for distribution" with title "Build the Stats"'
echo "Opening working folder..."
open $(PWD)
smc:
$(MAKE) --directory=./smc
open $(PWD)/smc