-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathjustfile
More file actions
119 lines (101 loc) · 3.19 KB
/
Copy pathjustfile
File metadata and controls
119 lines (101 loc) · 3.19 KB
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
app_name := "MiniWhisper"
bundle_id := "com.miniwhisper.dev"
team_id := env("CODESIGN_TEAM_ID", "")
install_path := "/Applications/MiniWhisper Dev.app"
default:
@just --list --unsorted
# Kill existing, build, sign, install to /Applications, and launch
[group('dev')]
dev: kill build package
#!/usr/bin/env bash
set -euo pipefail
rm -rf "{{install_path}}"
cp -R build/{{app_name}}.app "{{install_path}}"
bash Scripts/sign-dev-app.sh "{{install_path}}"
rm -rf build/{{app_name}}.app
open "{{install_path}}"
# Debug build
[group('build')]
build:
swift build --product MiniWhisper
swift build --product miniwhispercli
# Create .app bundle (debug)
[group('build')]
package:
bash Scripts/build-app.sh debug
# Release build + package
[group('build')]
release:
bash Scripts/build-app.sh release
# Remove build artifacts
[group('build')]
clean:
rm -rf .build build *.zip
# Sign, notarize, and package for distribution
[group('release')]
sign-and-notarize:
bash Scripts/sign-and-notarize.sh
# Create DMG installer from signed app
[group('release')]
create-dmg: sign-and-notarize
bash Scripts/create-dmg.sh
# Create GitHub release and upload zip + dmg
[group('release')]
github-release: sign-and-notarize create-dmg
#!/usr/bin/env bash
source version.env
TAG="v${MARKETING_VERSION}"
ZIP="MiniWhisper-${MARKETING_VERSION}.zip"
DMG="MiniWhisper.dmg"
git tag -f "$TAG"
git push -f origin "$TAG"
gh release create "$TAG" "$ZIP" "$DMG" \
--title "MiniWhisper ${MARKETING_VERSION}" \
--generate-notes
# Update homebrew tap with new version
[group('release')]
update-tap:
bash Scripts/update-tap.sh
# Full release: sign, notarize, GitHub release, update tap, update appcast
[group('release')]
publish: github-release update-tap
#!/usr/bin/env bash
set -euo pipefail
source version.env
just generate-appcast "MiniWhisper-${MARKETING_VERSION}.zip"
git add appcast.xml
git commit -m "Update appcast for v${MARKETING_VERSION}"
git push origin main
echo "Release complete!"
[group('sparkle')]
generate-appcast zip:
./Scripts/make-appcast.sh {{zip}}
[group('sparkle')]
generate-appcast-beta zip:
SPARKLE_CHANNEL=beta ./Scripts/make-appcast.sh {{zip}}
[group('sparkle')]
verify-appcast version="":
./Scripts/verify-appcast.sh {{version}}
# Local E2E test of the update flow: real Sparkle against a localhost appcast
[group('sparkle')]
test-update:
bash Scripts/test-update-flow.sh
# Kill running instance
[group('dev')]
kill:
-pkill -f "{{app_name}}" 2>/dev/null || true
-pkill -f "MiniWhisper Dev" 2>/dev/null || true
# Reset TCC permissions (use when permissions get stuck)
[group('dev')]
reset-tcc:
sudo tccutil reset ListenEvent {{bundle_id}}
sudo tccutil reset Accessibility {{bundle_id}}
sudo tccutil reset Microphone {{bundle_id}}
@echo "TCC permissions reset. Re-run 'just run' and grant permissions when prompted."
# Reset app UserDefaults
[group('dev')]
reset-settings:
-killall "{{app_name}}" 2>/dev/null || true
-killall "MiniWhisper Dev" 2>/dev/null || true
defaults delete {{bundle_id}} 2>/dev/null || true
@echo "Settings reset. Restart the app to use defaults."