reflex-packager 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/package.yml +310 -0
- data/.github/workflows/release-gem.yml +2 -49
- data/.github/workflows/tag.yml +11 -28
- data/.github/workflows/test.yml +16 -37
- data/.gitignore +2 -0
- data/ChangeLog.md +28 -0
- data/Gemfile.lock +26 -0
- data/README.md +232 -27
- data/Rakefile +21 -0
- data/VERSION +1 -1
- data/bin/reflex +2 -32
- data/examples/hello/icon.png +0 -0
- data/examples/hello/main.rb +18 -0
- data/examples/hello/reflex.yml +3 -0
- data/lib/reflex/packager/app_store_connect.rb +162 -0
- data/lib/reflex/packager/cli.rb +42 -9
- data/lib/reflex/packager/config.rb +233 -36
- data/lib/reflex/packager/data_compiler.rb +59 -0
- data/lib/reflex/packager/data_file.rb +183 -0
- data/lib/reflex/packager/data_loader.rb +127 -0
- data/lib/reflex/packager/gems.rb +282 -0
- data/lib/reflex/packager/library.rb +120 -0
- data/lib/reflex/packager/macos.rb +592 -94
- data/lib/reflex/packager/platform.rb +289 -10
- data/lib/reflex/packager/profile.rb +38 -26
- data/lib/reflex/packager/profiles/reflex.rb +43 -0
- data/lib/reflex/packager/rake.rb +115 -0
- data/lib/reflex/packager/stores/app_store.rb +60 -0
- data/lib/reflex/packager/stores/itchio.rb +53 -0
- data/lib/reflex/packager/templates/macos/AppStore.entitlements.erb +8 -0
- data/lib/reflex/packager/templates/macos/AppStoreExportOptions.plist.erb +14 -0
- data/lib/reflex/packager/templates/macos/ExportOptions.plist.erb +20 -0
- data/lib/reflex/packager/templates/macos/InfoPlist.strings.erb +5 -0
- data/lib/reflex/packager/templates/macos/boot.rb.erb +29 -0
- data/lib/reflex/packager/templates/macos/compile.rb.erb +7 -0
- data/lib/reflex/packager/templates/macos/main.mm.erb +10 -7
- data/lib/reflex/packager/templates/macos/project.yml.erb +60 -3
- data/lib/reflex/packager/templates/windows/app.manifest.erb +25 -0
- data/lib/reflex/packager/templates/windows/app.rc.erb +38 -0
- data/lib/reflex/packager/templates/windows/boot.rb.erb +32 -0
- data/lib/reflex/packager/templates/windows/main.cpp.erb +47 -0
- data/lib/reflex/packager/templates/windows/runtime.manifest.erb +7 -0
- data/lib/reflex/packager/windows.rb +370 -0
- data/lib/reflex/packager.rb +18 -1
- data/reflex-packager.gemspec +8 -7
- data/test/helper.rb +50 -5
- data/test/test_packager_app_store_connect.rb +108 -0
- data/test/test_packager_cli.rb +38 -3
- data/test/test_packager_config.rb +166 -27
- data/test/test_packager_data_file.rb +96 -0
- data/test/test_packager_data_loader.rb +114 -0
- data/test/test_packager_library.rb +81 -0
- data/test/test_packager_macos.rb +714 -86
- data/test/test_packager_platform.rb +16 -0
- data/test/test_packager_rake.rb +165 -0
- data/test/test_packager_stores_app_store.rb +66 -0
- data/test/test_packager_stores_itchio.rb +38 -0
- data/test/test_packager_windows.rb +685 -0
- metadata +72 -15
- data/.github/workflows/utils.rb +0 -127
- data/lib/reflex/packager/templates/macos/Podfile.erb +0 -30
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cb521f5b845fcc538ca8a2f71233eea1b89dbf57b7cfd0f983e6efb0d936785a
|
|
4
|
+
data.tar.gz: 5d3d2678a1008978d36bb1667ae0cd49d06cafdf9f690ea8f8f6ea6d4560c0c5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 745755edd9e378024f4dea7d1334da0848fd05ca7447133960368a91b24a08cb21d30526b3f0092df74e7e316687895a6971cf2ef20cab66d8af4eab4ca11213
|
|
7
|
+
data.tar.gz: 8b0d64a01d1b389ce28e1d11aa5e0cda42de43e4330aa0fbd4c34df517e4a84141287b9eb05f8486fd845c842cbd56012cd552c4af4bb2d63377d0f685744928
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
name: Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_call:
|
|
5
|
+
inputs:
|
|
6
|
+
platforms:
|
|
7
|
+
description: 'the platforms to package the app for, of macos and windows'
|
|
8
|
+
type: string
|
|
9
|
+
default: macos windows
|
|
10
|
+
ruby-version:
|
|
11
|
+
type: string
|
|
12
|
+
all-ref:
|
|
13
|
+
description: 'branch, tag or commit of xord/all for an app to take'
|
|
14
|
+
type: string
|
|
15
|
+
libraries:
|
|
16
|
+
description: 'the libraries of xord/all for all-ref, by the order to build'
|
|
17
|
+
type: string
|
|
18
|
+
default: xot rucy beeps rays reflex reflex-packager
|
|
19
|
+
retention-days:
|
|
20
|
+
description: 'days to keep the zip, and the pkg for the Mac App Store, of a run not of a tag, 0 to upload none'
|
|
21
|
+
type: number
|
|
22
|
+
default: 0
|
|
23
|
+
macos-appstore:
|
|
24
|
+
description: 'package the app for the Mac App Store too, with the notarized one, and upload it to App Store Connect on a tag'
|
|
25
|
+
type: boolean
|
|
26
|
+
default: false
|
|
27
|
+
itchio:
|
|
28
|
+
description: 'upload the app to itch.io on a tag, with BUTLER_API_KEY, to upload.itchio.project of the config'
|
|
29
|
+
type: boolean
|
|
30
|
+
default: true
|
|
31
|
+
secrets:
|
|
32
|
+
# to sign the app with Developer ID and to notarize it, none for neither
|
|
33
|
+
APPLE_TEAM_ID:
|
|
34
|
+
required: false
|
|
35
|
+
APPLE_CODESIGN_P12: # the .p12 file of Developer ID in base64
|
|
36
|
+
required: false
|
|
37
|
+
APPLE_CODESIGN_P12_PASSWORD:
|
|
38
|
+
required: false
|
|
39
|
+
APPLE_API_ISSUER_ID:
|
|
40
|
+
required: false
|
|
41
|
+
APPLE_API_KEY_ID:
|
|
42
|
+
required: false
|
|
43
|
+
APPLE_API_KEY_P8: # the .p8 file of App Store Connect as it is
|
|
44
|
+
required: false
|
|
45
|
+
# to upload the app to itch.io on a release, upload.itchio.project of the config
|
|
46
|
+
BUTLER_API_KEY:
|
|
47
|
+
required: false
|
|
48
|
+
|
|
49
|
+
permissions:
|
|
50
|
+
contents: write
|
|
51
|
+
|
|
52
|
+
env:
|
|
53
|
+
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
|
54
|
+
APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
|
|
55
|
+
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
|
|
56
|
+
|
|
57
|
+
jobs:
|
|
58
|
+
prepare:
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
|
|
61
|
+
outputs:
|
|
62
|
+
apple-team: ${{ steps.apple-team.outputs.team }}
|
|
63
|
+
notarize: ${{ steps.apple-team.outputs.notarize }}
|
|
64
|
+
# for all the jobs to take the same commit, even if all-ref moves on
|
|
65
|
+
monorepo-commit: ${{ steps.monorepo-commit.outputs.commit }}
|
|
66
|
+
|
|
67
|
+
steps:
|
|
68
|
+
- name: apple team?
|
|
69
|
+
id: apple-team
|
|
70
|
+
# with the team, the app is signed with Developer ID and notarized,
|
|
71
|
+
# or else signed as the config tells
|
|
72
|
+
env:
|
|
73
|
+
TEAM: ${{ env.APPLE_TEAM_ID != '' }}
|
|
74
|
+
APPSTORE: ${{ contains(inputs.platforms, 'macos') && inputs.macos-appstore }}
|
|
75
|
+
run: |
|
|
76
|
+
if [ "$APPSTORE" = true ] && [ "$TEAM" != true ]; then
|
|
77
|
+
echo '::error::the input macos-appstore needs APPLE_TEAM_ID in the secrets'
|
|
78
|
+
exit 1
|
|
79
|
+
fi
|
|
80
|
+
echo "team=$TEAM" >> "$GITHUB_OUTPUT"
|
|
81
|
+
echo "notarize=$TEAM" >> "$GITHUB_OUTPUT"
|
|
82
|
+
|
|
83
|
+
- name: monorepo commit
|
|
84
|
+
id: monorepo-commit
|
|
85
|
+
if: inputs.all-ref
|
|
86
|
+
env:
|
|
87
|
+
REF: ${{ inputs.all-ref }}
|
|
88
|
+
run: |
|
|
89
|
+
commit=$(git ls-remote https://github.com/xord/all.git "$REF" | tail -1 | cut -f1)
|
|
90
|
+
echo "commit=${commit:-$REF}" >> "$GITHUB_OUTPUT"
|
|
91
|
+
|
|
92
|
+
macos-package:
|
|
93
|
+
needs: prepare
|
|
94
|
+
if: contains(inputs.platforms, 'macos')
|
|
95
|
+
runs-on: macos-latest
|
|
96
|
+
|
|
97
|
+
outputs:
|
|
98
|
+
submission-id: ${{ steps.submit.outputs.id }}
|
|
99
|
+
|
|
100
|
+
steps:
|
|
101
|
+
- &checkout
|
|
102
|
+
name: checkout
|
|
103
|
+
uses: actions/checkout@v4
|
|
104
|
+
|
|
105
|
+
- &setup-ruby
|
|
106
|
+
name: setup ruby
|
|
107
|
+
uses: ruby/setup-ruby@v1
|
|
108
|
+
with:
|
|
109
|
+
ruby-version: ${{ inputs.ruby-version ||
|
|
110
|
+
(hashFiles('.ruby-version') != '' && 'default') ||
|
|
111
|
+
'4.0.7' }}
|
|
112
|
+
|
|
113
|
+
- name: setup xcodegen
|
|
114
|
+
run: brew install xcodegen
|
|
115
|
+
|
|
116
|
+
- &setup-monorepo
|
|
117
|
+
name: setup monorepo
|
|
118
|
+
if: inputs.all-ref
|
|
119
|
+
uses: xord/xot/.github/actions/setup-monorepo@master
|
|
120
|
+
with:
|
|
121
|
+
ref: ${{ needs.prepare.outputs.monorepo-commit }}
|
|
122
|
+
libraries: ${{ inputs.libraries }}
|
|
123
|
+
|
|
124
|
+
- &setup-gems
|
|
125
|
+
name: setup gems
|
|
126
|
+
env:
|
|
127
|
+
# not for all-ref, as the Gemfile takes the gems of the monorepo then
|
|
128
|
+
BUNDLE_FROZEN: ${{ hashFiles('Gemfile.lock') != '' && !inputs.all-ref }}
|
|
129
|
+
run: bundle install
|
|
130
|
+
|
|
131
|
+
- &package
|
|
132
|
+
name: package
|
|
133
|
+
if: needs.prepare.outputs.apple-team != 'true' || github.job != 'macos-package'
|
|
134
|
+
run: bundle exec rake package
|
|
135
|
+
|
|
136
|
+
- &archive
|
|
137
|
+
name: archive
|
|
138
|
+
id: archive
|
|
139
|
+
if: needs.prepare.outputs.apple-team != 'true' || github.job != 'macos-package'
|
|
140
|
+
run: |
|
|
141
|
+
bundle exec rake archive
|
|
142
|
+
zip=$(ls dist/*/*.zip)
|
|
143
|
+
echo "name=$(basename "$zip" .zip)" >> "$GITHUB_OUTPUT"
|
|
144
|
+
echo "path=$zip" >> "$GITHUB_OUTPUT"
|
|
145
|
+
|
|
146
|
+
- &upload
|
|
147
|
+
name: upload
|
|
148
|
+
if: (needs.prepare.outputs.apple-team != 'true' || github.job != 'macos-package') &&
|
|
149
|
+
github.ref_type != 'tag' && inputs.retention-days > 0
|
|
150
|
+
uses: actions/upload-artifact@v4
|
|
151
|
+
with:
|
|
152
|
+
name: ${{ steps.archive.outputs.name }}
|
|
153
|
+
path: ${{ steps.archive.outputs.path }}
|
|
154
|
+
retention-days: ${{ inputs.retention-days }}
|
|
155
|
+
|
|
156
|
+
- &release
|
|
157
|
+
name: release
|
|
158
|
+
if: (needs.prepare.outputs.apple-team != 'true' || github.job != 'macos-package') &&
|
|
159
|
+
github.ref_type == 'tag'
|
|
160
|
+
env:
|
|
161
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
162
|
+
run: bundle exec rake release
|
|
163
|
+
|
|
164
|
+
- &upload-itchio
|
|
165
|
+
name: upload to itch.io
|
|
166
|
+
if: (needs.prepare.outputs.apple-team != 'true' || github.job != 'macos-package') &&
|
|
167
|
+
github.ref_type == 'tag' && inputs.itchio
|
|
168
|
+
env:
|
|
169
|
+
BUTLER_API_KEY: ${{ secrets.BUTLER_API_KEY }}
|
|
170
|
+
run: |
|
|
171
|
+
[ -n "$BUTLER_API_KEY" ] || exit 0 # not to upload with no key
|
|
172
|
+
os=$([ "$RUNNER_OS" = Windows ] && echo windows || echo darwin)
|
|
173
|
+
arch=$(uname -m | sed 's/x86_64/amd64/')
|
|
174
|
+
dir=$(cd "$RUNNER_TEMP" && pwd)/butler # as /d/a/_temp on Windows, for PATH
|
|
175
|
+
curl -sSfL -o "$dir.zip" \
|
|
176
|
+
"https://broth.itch.zone/butler/$os-$arch/LATEST/archive/default"
|
|
177
|
+
unzip -q "$dir.zip" -d "$dir"
|
|
178
|
+
PATH="$dir:$PATH" bundle exec rake upload:itchio
|
|
179
|
+
|
|
180
|
+
- name: submit for notarization
|
|
181
|
+
id: submit
|
|
182
|
+
if: needs.prepare.outputs.notarize == 'true'
|
|
183
|
+
env:
|
|
184
|
+
APPLE_CODESIGN_P12: ${{ secrets.APPLE_CODESIGN_P12 }}
|
|
185
|
+
APPLE_CODESIGN_P12_PASSWORD: ${{ secrets.APPLE_CODESIGN_P12_PASSWORD }}
|
|
186
|
+
APPLE_API_KEY_P8: ${{ secrets.APPLE_API_KEY_P8 }}
|
|
187
|
+
APPSTORE: ${{ inputs.macos-appstore && '--appstore' || '' }}
|
|
188
|
+
shell: bash # with pipefail, not to let tee hide the failure
|
|
189
|
+
run: |
|
|
190
|
+
bundle exec reflex package --pack --notarize-submit $APPSTORE . |
|
|
191
|
+
tee "$RUNNER_TEMP/submit.log"
|
|
192
|
+
echo "id=$(sed -n 's/^Submitted for the notarization: //p' "$RUNNER_TEMP/submit.log")" \
|
|
193
|
+
>> "$GITHUB_OUTPUT"
|
|
194
|
+
[ -z "$APPSTORE" ] || echo "pkg=$(basename dist/appstore/*.pkg .pkg)" >> "$GITHUB_OUTPUT"
|
|
195
|
+
|
|
196
|
+
- name: upload pkg
|
|
197
|
+
if: inputs.macos-appstore && github.ref_type != 'tag' && inputs.retention-days > 0
|
|
198
|
+
uses: actions/upload-artifact@v4
|
|
199
|
+
with:
|
|
200
|
+
name: ${{ steps.submit.outputs.pkg }}
|
|
201
|
+
path: dist/appstore/*.pkg
|
|
202
|
+
retention-days: ${{ inputs.retention-days }}
|
|
203
|
+
|
|
204
|
+
- name: tar xcarchive for notarization
|
|
205
|
+
if: needs.prepare.outputs.notarize == 'true'
|
|
206
|
+
# by tar, as an artifact keeps no permission of the files nor symlink
|
|
207
|
+
run: cd .build/macos && tar cf "$RUNNER_TEMP/xcarchive.tar" generic/*.xcarchive
|
|
208
|
+
|
|
209
|
+
- name: upload xcarchive for notarization
|
|
210
|
+
if: needs.prepare.outputs.notarize == 'true'
|
|
211
|
+
uses: actions/upload-artifact@v4
|
|
212
|
+
with:
|
|
213
|
+
name: xcarchive
|
|
214
|
+
path: ${{ runner.temp }}/xcarchive.tar
|
|
215
|
+
retention-days: 1
|
|
216
|
+
|
|
217
|
+
- name: release pkg
|
|
218
|
+
if: inputs.macos-appstore && github.ref_type == 'tag'
|
|
219
|
+
env:
|
|
220
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
221
|
+
run: bundle exec rake release
|
|
222
|
+
|
|
223
|
+
- name: upload to App Store Connect
|
|
224
|
+
if: inputs.macos-appstore && github.ref_type == 'tag'
|
|
225
|
+
env:
|
|
226
|
+
APPLE_API_KEY_P8: ${{ secrets.APPLE_API_KEY_P8 }}
|
|
227
|
+
run: bundle exec rake upload:appstore
|
|
228
|
+
|
|
229
|
+
macos-wait:
|
|
230
|
+
needs: [prepare, macos-package]
|
|
231
|
+
if: needs.prepare.outputs.notarize == 'true'
|
|
232
|
+
runs-on: ubuntu-latest # cheaper than macos
|
|
233
|
+
|
|
234
|
+
steps:
|
|
235
|
+
- *checkout
|
|
236
|
+
|
|
237
|
+
- name: setup packages
|
|
238
|
+
# the ones of install_packages of beeps, rays and reflex, to build them
|
|
239
|
+
run: |
|
|
240
|
+
sudo apt-get update
|
|
241
|
+
sudo apt-get install -y -qq libopenal-dev libglew-dev libsdl2-dev libsdl2-ttf-dev
|
|
242
|
+
|
|
243
|
+
- *setup-ruby
|
|
244
|
+
- *setup-monorepo
|
|
245
|
+
- *setup-gems
|
|
246
|
+
|
|
247
|
+
- name: wait
|
|
248
|
+
env:
|
|
249
|
+
APPLE_API_KEY_P8: ${{ secrets.APPLE_API_KEY_P8 }}
|
|
250
|
+
ID: ${{ needs.macos-package.outputs.submission-id }}
|
|
251
|
+
run: bundle exec reflex package --notarize-wait "$ID"
|
|
252
|
+
|
|
253
|
+
macos-export:
|
|
254
|
+
needs: [prepare, macos-package, macos-wait]
|
|
255
|
+
runs-on: macos-latest
|
|
256
|
+
|
|
257
|
+
steps:
|
|
258
|
+
- *checkout
|
|
259
|
+
- *setup-ruby
|
|
260
|
+
- *setup-monorepo
|
|
261
|
+
- *setup-gems
|
|
262
|
+
|
|
263
|
+
- name: download xcarchive
|
|
264
|
+
uses: actions/download-artifact@v4
|
|
265
|
+
with:
|
|
266
|
+
name: xcarchive
|
|
267
|
+
path: ${{ runner.temp }}
|
|
268
|
+
|
|
269
|
+
- name: untar xcarchive
|
|
270
|
+
run: mkdir -p .build/macos && tar xf "$RUNNER_TEMP/xcarchive.tar" -C .build/macos
|
|
271
|
+
|
|
272
|
+
- name: export
|
|
273
|
+
env:
|
|
274
|
+
APPLE_API_KEY_P8: ${{ secrets.APPLE_API_KEY_P8 }}
|
|
275
|
+
run: bundle exec reflex package --notarize-export .
|
|
276
|
+
|
|
277
|
+
- *archive
|
|
278
|
+
- *upload
|
|
279
|
+
- *release
|
|
280
|
+
- *upload-itchio
|
|
281
|
+
|
|
282
|
+
windows-package:
|
|
283
|
+
needs: prepare
|
|
284
|
+
if: contains(inputs.platforms, 'windows')
|
|
285
|
+
runs-on: windows-latest
|
|
286
|
+
|
|
287
|
+
defaults:
|
|
288
|
+
run:
|
|
289
|
+
shell: bash # as the steps shared with the jobs on macos are written
|
|
290
|
+
|
|
291
|
+
steps:
|
|
292
|
+
- *checkout
|
|
293
|
+
- *setup-ruby
|
|
294
|
+
|
|
295
|
+
- name: setup packages
|
|
296
|
+
run: |
|
|
297
|
+
pacman -S --noconfirm --needed \
|
|
298
|
+
"$MINGW_PACKAGE_PREFIX-glew" "$MINGW_PACKAGE_PREFIX-openal"
|
|
299
|
+
|
|
300
|
+
- *setup-monorepo
|
|
301
|
+
- *setup-gems
|
|
302
|
+
|
|
303
|
+
- name: setup mesa
|
|
304
|
+
run: bundle exec ruby -rxot/rake -e 'setup_mesa'
|
|
305
|
+
|
|
306
|
+
- *package
|
|
307
|
+
- *archive
|
|
308
|
+
- *upload
|
|
309
|
+
- *release
|
|
310
|
+
- *upload-itchio
|
|
@@ -9,52 +9,5 @@ permissions:
|
|
|
9
9
|
|
|
10
10
|
jobs:
|
|
11
11
|
release:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
steps:
|
|
15
|
-
- name: ruby 3.2
|
|
16
|
-
uses: ruby/setup-ruby@v1
|
|
17
|
-
with:
|
|
18
|
-
ruby-version: 3.2
|
|
19
|
-
|
|
20
|
-
- name: checkout
|
|
21
|
-
uses: actions/checkout@v4
|
|
22
|
-
|
|
23
|
-
- name: setup gems
|
|
24
|
-
run: bundle install
|
|
25
|
-
|
|
26
|
-
- name: setup dependencies
|
|
27
|
-
run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
|
|
28
|
-
|
|
29
|
-
- name: packages
|
|
30
|
-
run: bundle exec rake packages
|
|
31
|
-
|
|
32
|
-
- name: setup zig
|
|
33
|
-
if: github.event.repository.name == 'reflex-terminal'
|
|
34
|
-
uses: mlugg/setup-zig@v2
|
|
35
|
-
with:
|
|
36
|
-
version: 0.16.0
|
|
37
|
-
|
|
38
|
-
- name: test
|
|
39
|
-
run: bundle exec rake test
|
|
40
|
-
|
|
41
|
-
- name: create gem
|
|
42
|
-
id: gem
|
|
43
|
-
run: |
|
|
44
|
-
bundle exec rake gem
|
|
45
|
-
echo path=$(ruby -e 'print Dir.glob("*.gem").first') >> $GITHUB_OUTPUT
|
|
46
|
-
|
|
47
|
-
- name: create github release
|
|
48
|
-
env:
|
|
49
|
-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
50
|
-
run: ruby -I.github/workflows -rutils -e 'release(*ARGV)' ./${{ steps.gem.outputs.path }}
|
|
51
|
-
|
|
52
|
-
- name: upload to rubygems
|
|
53
|
-
env:
|
|
54
|
-
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_AUTH_TOKEN }}
|
|
55
|
-
run: |
|
|
56
|
-
mkdir -p $HOME/.gem
|
|
57
|
-
touch $HOME/.gem/credentials
|
|
58
|
-
chmod 0600 $HOME/.gem/credentials
|
|
59
|
-
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
|
60
|
-
bundle exec rake upload
|
|
12
|
+
uses: xord/xot/.github/workflows/release-gem.yml@master
|
|
13
|
+
secrets: inherit
|
data/.github/workflows/tag.yml
CHANGED
|
@@ -1,35 +1,18 @@
|
|
|
1
1
|
name: Tag
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
|
-
|
|
4
|
+
workflow_run:
|
|
5
|
+
workflows: [Test]
|
|
6
|
+
types: [completed]
|
|
5
7
|
branches: [master]
|
|
6
8
|
|
|
9
|
+
workflow_call:
|
|
10
|
+
secrets:
|
|
11
|
+
PAT:
|
|
12
|
+
required: true
|
|
13
|
+
|
|
7
14
|
jobs:
|
|
8
15
|
tag:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
- name: ruby 3.2
|
|
13
|
-
uses: ruby/setup-ruby@v1
|
|
14
|
-
with:
|
|
15
|
-
ruby-version: 3.2
|
|
16
|
-
|
|
17
|
-
- name: checkout
|
|
18
|
-
uses: actions/checkout@v4
|
|
19
|
-
with:
|
|
20
|
-
fetch-depth: 0
|
|
21
|
-
token: ${{ secrets.PAT }}
|
|
22
|
-
|
|
23
|
-
- name: setup dependencies
|
|
24
|
-
run: "ruby -I.github/workflows -rutils -e 'setup_dependencies only: :xot'"
|
|
25
|
-
|
|
26
|
-
- name: setup user name and email
|
|
27
|
-
run: |
|
|
28
|
-
git config --global user.email "xordog@gmail.com"
|
|
29
|
-
git config --global user.name "xord"
|
|
30
|
-
|
|
31
|
-
- name: tag versions
|
|
32
|
-
run: "ruby -I.github/workflows -rutils -e 'tag_versions'"
|
|
33
|
-
|
|
34
|
-
- name: push tags
|
|
35
|
-
run: git push origin --tags
|
|
16
|
+
uses: xord/xot/.github/workflows/tag.yml@master
|
|
17
|
+
secrets:
|
|
18
|
+
PAT: ${{ secrets.PAT }}
|
data/.github/workflows/test.yml
CHANGED
|
@@ -5,42 +5,21 @@ on:
|
|
|
5
5
|
branches: [master]
|
|
6
6
|
pull_request:
|
|
7
7
|
|
|
8
|
+
workflow_call:
|
|
9
|
+
inputs:
|
|
10
|
+
ruby-version:
|
|
11
|
+
type: string
|
|
12
|
+
all-ref:
|
|
13
|
+
description: 'branch, tag or commit of xord/all for an app to take'
|
|
14
|
+
type: string
|
|
15
|
+
libraries:
|
|
16
|
+
description: 'the libraries of xord/all for all-ref, by the order to build'
|
|
17
|
+
type: string
|
|
18
|
+
|
|
8
19
|
jobs:
|
|
9
20
|
test:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
with:
|
|
16
|
-
ruby-version: 3.2
|
|
17
|
-
|
|
18
|
-
- name: checkout
|
|
19
|
-
uses: actions/checkout@v4
|
|
20
|
-
|
|
21
|
-
- name: setup gems
|
|
22
|
-
run: bundle install
|
|
23
|
-
|
|
24
|
-
- name: setup dependencies
|
|
25
|
-
run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
|
|
26
|
-
|
|
27
|
-
- name: packages
|
|
28
|
-
run: bundle exec rake verbose packages
|
|
29
|
-
|
|
30
|
-
- name: setup zig
|
|
31
|
-
if: github.event.repository.name == 'reflex-terminal'
|
|
32
|
-
uses: mlugg/setup-zig@v2
|
|
33
|
-
with:
|
|
34
|
-
version: 0.16.0
|
|
35
|
-
|
|
36
|
-
- name: vendor
|
|
37
|
-
run: bundle exec rake vendor
|
|
38
|
-
|
|
39
|
-
- name: lib
|
|
40
|
-
run: bundle exec rake verbose lib
|
|
41
|
-
|
|
42
|
-
- name: ext
|
|
43
|
-
run: bundle exec rake verbose ext
|
|
44
|
-
|
|
45
|
-
- name: test
|
|
46
|
-
run: bundle exec rake verbose test
|
|
21
|
+
uses: xord/xot/.github/workflows/test.yml@master
|
|
22
|
+
with:
|
|
23
|
+
ruby-version: ${{ inputs.ruby-version }}
|
|
24
|
+
all-ref: ${{ inputs.all-ref }}
|
|
25
|
+
libraries: ${{ inputs.libraries || 'xot rucy beeps rays reflex reflex-packager' }}
|
data/.gitignore
CHANGED
data/ChangeLog.md
CHANGED
|
@@ -1,6 +1,34 @@
|
|
|
1
1
|
# reflex-packager ChangeLog
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## [v0.3.0] - 2026-11-04
|
|
5
|
+
|
|
6
|
+
- [BREAKING] Build a macOS app without CocoaPods, from the sources in the installed gems
|
|
7
|
+
- [BREAKING] Put the files of a build in .build/, and the packages in dist/ by their variant, as dist/generic/ and dist/adhoc/
|
|
8
|
+
- [BREAKING] Name the .app by the name of the app with spaces
|
|
9
|
+
- [BREAKING] Refuse a version that YAML reads as a number, as 1.10 without quotes
|
|
10
|
+
- [BREAKING] Refuse a version of more than three numbers on macOS
|
|
11
|
+
- Package an app for Windows by --platform windows
|
|
12
|
+
- Package for the platform the packager runs on, and a universal macOS app, by default
|
|
13
|
+
- Compile the scripts of an app into a data file by --pack
|
|
14
|
+
- Sign and notarize a macOS app, by --notarize and --notarize-wait
|
|
15
|
+
- Package an app for the Mac App Store by --appstore, and upload it to App Store Connect by rake upload:appstore
|
|
16
|
+
- Upload an app to itch.io by rake upload:itchio
|
|
17
|
+
- Add the workflow to test, package and release an app, for the apps to call
|
|
18
|
+
- Add copyright and localizations to the config
|
|
19
|
+
- Add excludes: to the config, to leave files out of the app
|
|
20
|
+
- Read the version of an app from its VERSION file
|
|
21
|
+
- Set CFBundleVersion from the version, not 1
|
|
22
|
+
- Name the zip by the platform and the architecture, as macos-universal or windows-x64
|
|
23
|
+
- Show the error an app dies of with Reflex.alert, with the paths in the package
|
|
24
|
+
- Quiet the build of a macOS app unless verbose
|
|
25
|
+
- Embed CRuby 4.0.701 with Ruby 4.0.7
|
|
26
|
+
- Add a hello example to try packaging with
|
|
27
|
+
|
|
28
|
+
- Fix an app in a folder of a non-ASCII name exiting with no output on macOS
|
|
29
|
+
- Fix a directory of the app being copied again into its copy
|
|
30
|
+
|
|
31
|
+
|
|
4
32
|
## [v0.2.0] - 2026-08-04
|
|
5
33
|
|
|
6
34
|
- [BREAKING] Replace Profile#template with a templates Hash
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
GEM
|
|
2
|
+
remote: https://rubygems.org/
|
|
3
|
+
specs:
|
|
4
|
+
power_assert (3.1.0)
|
|
5
|
+
rake (13.4.2)
|
|
6
|
+
test-unit (3.7.8)
|
|
7
|
+
power_assert
|
|
8
|
+
yard (0.9.45)
|
|
9
|
+
|
|
10
|
+
PLATFORMS
|
|
11
|
+
ruby
|
|
12
|
+
|
|
13
|
+
DEPENDENCIES
|
|
14
|
+
rake
|
|
15
|
+
test-unit
|
|
16
|
+
yard
|
|
17
|
+
|
|
18
|
+
CHECKSUMS
|
|
19
|
+
bundler (4.0.20) sha256=7978a8ac648767f5e635bc522445b79e80a52b907a39a36c2d8085ed6bc762ae
|
|
20
|
+
power_assert (3.1.0) sha256=fefe98ed5d3140628138f3f9f9194d6ece01f1320e69700d3c928adca7518251
|
|
21
|
+
rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
|
|
22
|
+
test-unit (3.7.8) sha256=689d1ca53f4d46f678b4e5d68d8e4294f87fc5e8b9238cc4de7c5727e8d65943
|
|
23
|
+
yard (0.9.45) sha256=52e211493f7cb8a3ebf7e104a25a1e73937a3103092545d34cb88fafebb3dc51
|
|
24
|
+
|
|
25
|
+
BUNDLED WITH
|
|
26
|
+
4.0.20
|