expressir 1.3.3-x86_64-linux-musl

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.
Files changed (147) hide show
  1. checksums.yaml +7 -0
  2. data/.cross_rubies +28 -0
  3. data/.github/workflows/codeql.yml +47 -0
  4. data/.github/workflows/rake.yml +448 -0
  5. data/.github/workflows/release.yml +189 -0
  6. data/.github/workflows/stress.yml +53 -0
  7. data/.gitignore +23 -0
  8. data/.gitmodules +6 -0
  9. data/.hound.yml +3 -0
  10. data/.rspec +2 -0
  11. data/.rubocop.yml +18 -0
  12. data/.yardopts +11 -0
  13. data/Gemfile +4 -0
  14. data/README.adoc +155 -0
  15. data/Rakefile +17 -0
  16. data/bin/console +11 -0
  17. data/bin/rspec +29 -0
  18. data/bin/setup +8 -0
  19. data/docs/development.md +90 -0
  20. data/exe/expressir +22 -0
  21. data/exe/format +18 -0
  22. data/exe/format-test +81 -0
  23. data/exe/generate-parser +51 -0
  24. data/expressir.gemspec +48 -0
  25. data/lib/expressir/cli/ui.rb +36 -0
  26. data/lib/expressir/cli.rb +21 -0
  27. data/lib/expressir/config.rb +23 -0
  28. data/lib/expressir/express/2.7/express_parser.so +0 -0
  29. data/lib/expressir/express/3.0/express_parser.so +0 -0
  30. data/lib/expressir/express/3.1/express_parser.so +0 -0
  31. data/lib/expressir/express/3.2/express_parser.so +0 -0
  32. data/lib/expressir/express/cache.rb +51 -0
  33. data/lib/expressir/express/formatter.rb +1608 -0
  34. data/lib/expressir/express/hyperlink_formatter.rb +36 -0
  35. data/lib/expressir/express/model_visitor.rb +24 -0
  36. data/lib/expressir/express/parser.rb +83 -0
  37. data/lib/expressir/express/resolve_references_model_visitor.rb +31 -0
  38. data/lib/expressir/express/schema_head_formatter.rb +23 -0
  39. data/lib/expressir/express/visitor.rb +2591 -0
  40. data/lib/expressir/model/cache.rb +17 -0
  41. data/lib/expressir/model/data_type.rb +9 -0
  42. data/lib/expressir/model/data_types/aggregate.rb +31 -0
  43. data/lib/expressir/model/data_types/array.rb +31 -0
  44. data/lib/expressir/model/data_types/bag.rb +25 -0
  45. data/lib/expressir/model/data_types/binary.rb +22 -0
  46. data/lib/expressir/model/data_types/boolean.rb +10 -0
  47. data/lib/expressir/model/data_types/enumeration.rb +25 -0
  48. data/lib/expressir/model/data_types/enumeration_item.rb +26 -0
  49. data/lib/expressir/model/data_types/generic.rb +26 -0
  50. data/lib/expressir/model/data_types/generic_entity.rb +26 -0
  51. data/lib/expressir/model/data_types/integer.rb +10 -0
  52. data/lib/expressir/model/data_types/list.rb +28 -0
  53. data/lib/expressir/model/data_types/logical.rb +10 -0
  54. data/lib/expressir/model/data_types/number.rb +10 -0
  55. data/lib/expressir/model/data_types/real.rb +19 -0
  56. data/lib/expressir/model/data_types/select.rb +28 -0
  57. data/lib/expressir/model/data_types/set.rb +25 -0
  58. data/lib/expressir/model/data_types/string.rb +22 -0
  59. data/lib/expressir/model/declaration.rb +9 -0
  60. data/lib/expressir/model/declarations/attribute.rb +47 -0
  61. data/lib/expressir/model/declarations/constant.rb +34 -0
  62. data/lib/expressir/model/declarations/entity.rb +53 -0
  63. data/lib/expressir/model/declarations/function.rb +67 -0
  64. data/lib/expressir/model/declarations/interface.rb +28 -0
  65. data/lib/expressir/model/declarations/interface_item.rb +23 -0
  66. data/lib/expressir/model/declarations/interfaced_item.rb +37 -0
  67. data/lib/expressir/model/declarations/parameter.rb +34 -0
  68. data/lib/expressir/model/declarations/procedure.rb +64 -0
  69. data/lib/expressir/model/declarations/remark_item.rb +21 -0
  70. data/lib/expressir/model/declarations/rule.rb +71 -0
  71. data/lib/expressir/model/declarations/schema.rb +117 -0
  72. data/lib/expressir/model/declarations/schema_version.rb +22 -0
  73. data/lib/expressir/model/declarations/schema_version_item.rb +22 -0
  74. data/lib/expressir/model/declarations/subtype_constraint.rb +40 -0
  75. data/lib/expressir/model/declarations/type.rb +45 -0
  76. data/lib/expressir/model/declarations/unique_rule.rb +31 -0
  77. data/lib/expressir/model/declarations/variable.rb +34 -0
  78. data/lib/expressir/model/declarations/where_rule.rb +31 -0
  79. data/lib/expressir/model/expression.rb +9 -0
  80. data/lib/expressir/model/expressions/aggregate_initializer.rb +19 -0
  81. data/lib/expressir/model/expressions/aggregate_initializer_item.rb +22 -0
  82. data/lib/expressir/model/expressions/binary_expression.rb +53 -0
  83. data/lib/expressir/model/expressions/entity_constructor.rb +22 -0
  84. data/lib/expressir/model/expressions/function_call.rb +22 -0
  85. data/lib/expressir/model/expressions/interval.rb +34 -0
  86. data/lib/expressir/model/expressions/query_expression.rb +35 -0
  87. data/lib/expressir/model/expressions/unary_expression.rb +27 -0
  88. data/lib/expressir/model/identifier.rb +34 -0
  89. data/lib/expressir/model/literal.rb +9 -0
  90. data/lib/expressir/model/literals/binary.rb +19 -0
  91. data/lib/expressir/model/literals/integer.rb +19 -0
  92. data/lib/expressir/model/literals/logical.rb +23 -0
  93. data/lib/expressir/model/literals/real.rb +19 -0
  94. data/lib/expressir/model/literals/string.rb +22 -0
  95. data/lib/expressir/model/model_element.rb +208 -0
  96. data/lib/expressir/model/reference.rb +9 -0
  97. data/lib/expressir/model/references/attribute_reference.rb +22 -0
  98. data/lib/expressir/model/references/group_reference.rb +22 -0
  99. data/lib/expressir/model/references/index_reference.rb +27 -0
  100. data/lib/expressir/model/references/simple_reference.rb +24 -0
  101. data/lib/expressir/model/repository.rb +23 -0
  102. data/lib/expressir/model/statement.rb +9 -0
  103. data/lib/expressir/model/statements/alias.rb +35 -0
  104. data/lib/expressir/model/statements/assignment.rb +22 -0
  105. data/lib/expressir/model/statements/case.rb +25 -0
  106. data/lib/expressir/model/statements/case_action.rb +22 -0
  107. data/lib/expressir/model/statements/compound.rb +19 -0
  108. data/lib/expressir/model/statements/escape.rb +10 -0
  109. data/lib/expressir/model/statements/if.rb +25 -0
  110. data/lib/expressir/model/statements/null.rb +10 -0
  111. data/lib/expressir/model/statements/procedure_call.rb +22 -0
  112. data/lib/expressir/model/statements/repeat.rb +47 -0
  113. data/lib/expressir/model/statements/return.rb +19 -0
  114. data/lib/expressir/model/statements/skip.rb +10 -0
  115. data/lib/expressir/model/supertype_expression.rb +9 -0
  116. data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +29 -0
  117. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +19 -0
  118. data/lib/expressir/model.rb +79 -0
  119. data/lib/expressir/version.rb +3 -0
  120. data/lib/expressir.rb +44 -0
  121. data/rakelib/antlr4-native.rake +173 -0
  122. data/rakelib/cross-ruby.rake +403 -0
  123. data/spec/acceptance/version_spec.rb +30 -0
  124. data/spec/expressir/express/cache_spec.rb +89 -0
  125. data/spec/expressir/express/formatter_spec.rb +171 -0
  126. data/spec/expressir/express/parser_spec.rb +141 -0
  127. data/spec/expressir/model/model_element_spec.rb +318 -0
  128. data/spec/spec_helper.rb +24 -0
  129. data/spec/support/console_helper.rb +29 -0
  130. data/spec/syntax/multiple.exp +23 -0
  131. data/spec/syntax/multiple.yaml +198 -0
  132. data/spec/syntax/multiple_formatted.exp +71 -0
  133. data/spec/syntax/multiple_hyperlink_formatted.exp +71 -0
  134. data/spec/syntax/multiple_schema_head_hyperlink_formatted.exp +13 -0
  135. data/spec/syntax/remark.exp +193 -0
  136. data/spec/syntax/remark.yaml +471 -0
  137. data/spec/syntax/remark_formatted.exp +228 -0
  138. data/spec/syntax/single.exp +4 -0
  139. data/spec/syntax/single.yaml +18 -0
  140. data/spec/syntax/single_formatted.exp +10 -0
  141. data/spec/syntax/single_formatted.yaml +36 -0
  142. data/spec/syntax/syntax.exp +333 -0
  143. data/spec/syntax/syntax.yaml +3509 -0
  144. data/spec/syntax/syntax_formatted.exp +902 -0
  145. data/spec/syntax/syntax_hyperlink_formatted.exp +902 -0
  146. data/spec/syntax/syntax_schema_head_formatted.exp +18 -0
  147. metadata +392 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: fdc4aff53d7a77746059e95286a5d81e6d5c5e6f1d15c93560fd7e5ccddf5c75
4
+ data.tar.gz: c0b50d97ff5610a5f50b87c092347f4fe8632fe5e226e449f1eb27618d61aa61
5
+ SHA512:
6
+ metadata.gz: 53db636c4336502dbb03aebaf74c5a9941e9cd6642aed9476d6cc06c6f001114d86ce08470a168692af7930f26191b09551eb9237afe41a6fa10e46f0a647119
7
+ data.tar.gz: 68999b9a8691fc6640a133cf844d7647cd254cd11ca208a666f678698ed992f10a6e0412911368a0f219a4ef33b13bc51378b36163a0e1790feb9ae53b643224
data/.cross_rubies ADDED
@@ -0,0 +1,28 @@
1
+ 3.2.0:x86_64-w64-mingw32
2
+ 3.2.0:x86_64-linux-gnu
3
+ 3.2.0:x86_64-linux-musl
4
+ 3.2.0:aarch64-linux-gnu
5
+ 3.2.0:aarch64-linux-musl
6
+ 3.2.0:x86_64-darwin
7
+ 3.2.0:arm64-darwin
8
+ 3.1.0:x86_64-w64-mingw32
9
+ 3.1.0:x86_64-linux-gnu
10
+ 3.1.0:x86_64-linux-musl
11
+ 3.1.0:aarch64-linux-gnu
12
+ 3.1.0:aarch64-linux-musl
13
+ 3.1.0:x86_64-darwin
14
+ 3.1.0:arm64-darwin
15
+ 3.0.0:x86_64-w64-mingw32
16
+ 3.0.0:x86_64-linux-gnu
17
+ 3.0.0:x86_64-linux-musl
18
+ 3.0.0:aarch64-linux-gnu
19
+ 3.0.0:aarch64-linux-musl
20
+ 3.0.0:x86_64-darwin
21
+ 3.0.0:arm64-darwin
22
+ 2.7.0:x86_64-w64-mingw32
23
+ 2.7.0:x86_64-linux-gnu
24
+ 2.7.0:x86_64-linux-musl
25
+ 2.7.0:aarch64-linux-gnu
26
+ 2.7.0:aarch64-linux-musl
27
+ 2.7.0:x86_64-darwin
28
+ 2.7.0:arm64-darwin
@@ -0,0 +1,47 @@
1
+ name: "CodeQL"
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ schedule:
7
+ - cron: '0 23 * * 3'
8
+ workflow_dispatch:
9
+
10
+ concurrency:
11
+ group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
12
+ cancel-in-progress: true
13
+
14
+ env:
15
+ BUNDLER_VER: 2.4.22
16
+
17
+ jobs:
18
+ analyze:
19
+ name: Analyze
20
+ runs-on: ubuntu-latest
21
+
22
+ steps:
23
+ - name: Checkout
24
+ uses: actions/checkout@v4
25
+ with:
26
+ submodules: recursive
27
+
28
+ - name: Install Ruby
29
+ uses: ruby/setup-ruby@master
30
+ with:
31
+ ruby-version: 3.1
32
+ bundler: ${{ env.BUNDLER_VER }}
33
+ bundler-cache: false
34
+
35
+ - name: Bundle
36
+ run: bundle install --jobs 4 --retry 3
37
+
38
+ - name: Initialize CodeQL
39
+ uses: github/codeql-action/init@v2
40
+ with:
41
+ languages: "ruby, cpp"
42
+
43
+ - name: Build native extension
44
+ run: bundle exec rake compile
45
+
46
+ - name: Perform CodeQL Analysis
47
+ uses: github/codeql-action/analyze@v2
@@ -0,0 +1,448 @@
1
+ name: rake
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ paths-ignore:
7
+ - 'docs/**'
8
+ - '**.adoc'
9
+ - '**.md'
10
+ - .github/workflows/release.yml
11
+ - .github/workflows/codeql.yml
12
+ pull_request:
13
+ workflow_dispatch:
14
+
15
+ concurrency:
16
+ group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
17
+ cancel-in-progress: true
18
+
19
+ env:
20
+ RUBYGEM_VER: 3.4.22
21
+ BUNDLER_VER: 2.4.22
22
+ # Forcing bundler version to ensure that it is consistent everywhere and
23
+ # does not cause bundler gem reinstalls
24
+ # bundler/rubygems 2.3.22 is a minimal requirement to support gnu/musl differentiation
25
+ # https://github.com/rubygems/rubygems/pull/4488
26
+
27
+ jobs:
28
+ rubocop:
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - name: Checkout
32
+ uses: actions/checkout@v4
33
+ with:
34
+ submodules: recursive
35
+
36
+ - name: Install Ruby
37
+ uses: ruby/setup-ruby@master
38
+ with:
39
+ ruby-version: 3.1
40
+ bundler: ${{ env.BUNDLER_VER }}
41
+ bundler-cache: true
42
+
43
+ - name: Bundle
44
+ run: bundle install --jobs 4 --retry 3
45
+
46
+ - name: Rubocop
47
+ run: bundle exec rake rubocop
48
+
49
+ rake:
50
+ name: test on ruby-${{ matrix.ruby }} ${{ matrix.os }}
51
+ runs-on: ${{ matrix.os }}
52
+ strategy:
53
+ fail-fast: false
54
+ matrix:
55
+ ruby: [ '3.2', '3.1', '3.0', '2.7' ]
56
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
57
+
58
+ steps:
59
+ - name: Checkout
60
+ uses: actions/checkout@v4
61
+ with:
62
+ submodules: recursive
63
+
64
+ - name: Setup packages
65
+ if: startsWith(matrix.os, 'macos')
66
+ run: brew install autoconf automake libtool
67
+
68
+ - name: Install Ruby
69
+ uses: ruby/setup-ruby@master
70
+ with:
71
+ ruby-version: ${{ matrix.ruby }}
72
+ bundler: ${{ env.BUNDLER_VER }}
73
+ # Rice gem has issues with bundler cache
74
+ # more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126
75
+ # but it is not the only issue
76
+ bundler-cache: false
77
+
78
+ - name: Bundle
79
+ run: bundle install --jobs 4 --retry 3
80
+
81
+ - name: Process cache
82
+ uses: actions/cache@v4
83
+ id: cache
84
+ with:
85
+ path: lib/expressir/express/express_parser.*
86
+ key: v4-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('ext/express_parser/extconf.rb', 'ext/express_parser/antlrgen/**', 'ext/express_parser/express_parser.cpp', '.git/modules/ext/express_parser/antlr4-upstream/HEAD') }}
87
+
88
+ - name: Build native extension
89
+ if: steps.cache.outputs.cache-hit != 'true'
90
+ run: bundle exec rake compile
91
+
92
+ - name: Run tests
93
+ run: |
94
+ bundle exec rake
95
+ cat .rspec_status
96
+
97
+ rake-alpine:
98
+ name: test on ruby-${{ matrix.ruby }} alpine container
99
+ runs-on: ubuntu-latest
100
+ strategy:
101
+ fail-fast: false
102
+ matrix:
103
+ ruby: [ '3.2', '3.1', '3.0', '2.7' ]
104
+ container: ruby:${{ matrix.ruby }}-alpine
105
+ steps:
106
+ - name: Install packages
107
+ run: |
108
+ apk --no-cache --upgrade add build-base git bash tar
109
+
110
+ - name: Checkout
111
+ uses: actions/checkout@v4
112
+ with:
113
+ submodules: recursive
114
+
115
+ - name: Upgrade RubyGems
116
+ if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
117
+ run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
118
+
119
+ - name: Bundle
120
+ run: |
121
+ git config --global --add safe.directory $PWD
122
+ bundle install --jobs 4 --retry 3
123
+
124
+ - name: Process cache
125
+ uses: actions/cache@v4
126
+ id: cache
127
+ with:
128
+ path: lib/expressir/express/express_parser.*
129
+ key: v4-alpine-${{ matrix.ruby }}-${{ hashFiles('ext/express_parser/extconf.rb', 'ext/express_parser/antlrgen/**', 'ext/express_parser/express_parser.cpp', '.git/modules/ext/express_parser/antlr4-upstream/HEAD') }}
130
+
131
+ - name: Build native extension
132
+ if: steps.cache.outputs.cache-hit != 'true'
133
+ run: bundle exec rake compile
134
+
135
+ - name: Run tests
136
+ run: |
137
+ bundle exec rake
138
+ cat .rspec_status
139
+
140
+ # test release workflow
141
+ pack-ruby:
142
+ runs-on: ubuntu-latest
143
+ steps:
144
+ - name: Checkout
145
+ uses: actions/checkout@v4
146
+ with:
147
+ submodules: recursive
148
+
149
+ - name: Setup Ruby
150
+ uses: ruby/setup-ruby@master
151
+ with:
152
+ ruby-version: '3.1'
153
+ bundler: ${{ env.BUNDLER_VER }}
154
+ bundler-cache: false
155
+
156
+ - name: Bundle
157
+ run: bundle install --jobs 4 --retry 3
158
+
159
+ - name: Build gem without native extension
160
+ run: gem build expressir.gemspec
161
+
162
+ - name: Package gem without native extension
163
+ uses: actions/upload-artifact@v4
164
+ with:
165
+ name: pkg-ruby
166
+ path: expressir-*.gem
167
+
168
+ pack:
169
+ runs-on: ubuntu-latest
170
+ strategy:
171
+ fail-fast: false
172
+ matrix:
173
+ platform: [ linux-gnu, linux-musl, windows, darwin ]
174
+ steps:
175
+ - name: Checkout
176
+ uses: actions/checkout@v4
177
+ with:
178
+ submodules: recursive
179
+
180
+ - name: Setup Ruby
181
+ uses: ruby/setup-ruby@master
182
+ with:
183
+ ruby-version: '3.1'
184
+ bundler-cache: false
185
+ bundler: ${{ env.BUNDLER_VER }}
186
+
187
+ - name: Bundle
188
+ run: bundle install --jobs 4 --retry 3
189
+
190
+ - name: Enable swap
191
+ run: |
192
+ sudo fallocate -l 15g /compile.swap
193
+ sudo chmod 600 /compile.swap
194
+ sudo mkswap /compile.swap
195
+ sudo swapon /compile.swap
196
+ sudo swapon --all --verbose
197
+
198
+ - name: Build gem with native extension
199
+ run: bundle exec rake gem:${{ matrix.platform }}
200
+
201
+ - name: Package gem with native extension
202
+ uses: actions/upload-artifact@v4
203
+ with:
204
+ name: pkg-${{ matrix.platform }}
205
+ path: pkg/*.gem
206
+
207
+ verify-ruby:
208
+ name: verify ruby gem on ruby-${{ matrix.ruby }} ${{ matrix.os }}
209
+ needs: pack-ruby
210
+ runs-on: ${{ matrix.os }}
211
+ strategy:
212
+ fail-fast: false
213
+ matrix:
214
+ ruby: [ '3.2', '3.1', '3.0', '2.7' ]
215
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
216
+ steps:
217
+ - name: Install Ruby
218
+ uses: ruby/setup-ruby@master
219
+ with:
220
+ ruby-version: ${{ matrix.ruby }}
221
+ bundler-cache: false
222
+ bundler: ${{ env.BUNDLER_VER }}
223
+
224
+ - name: Checkout
225
+ uses: actions/checkout@v4
226
+ with:
227
+ submodules: recursive
228
+
229
+ - name: Bundle
230
+ run: bundle install --jobs 4 --retry 3
231
+
232
+ - name: Download packaged gem
233
+ uses: actions/download-artifact@v4
234
+ with:
235
+ name: pkg-ruby
236
+ path: pkg
237
+
238
+ - name: Install gem
239
+ run: gem install -l pkg/expressir-*.gem
240
+
241
+ - name: Verify
242
+ run: |
243
+ cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
244
+ ruby bin/rspec
245
+ cat .rspec_status || echo ".rspec_status was not found"
246
+
247
+ verify-ruby-linux-musl:
248
+ name: verify ruby gem on ruby-${{ matrix.ruby }} on alpine container
249
+ needs: pack-ruby
250
+ runs-on: ubuntu-latest
251
+ strategy:
252
+ fail-fast: false
253
+ matrix:
254
+ ruby: [ '3.2', '3.1', '3.0', '2.7' ]
255
+ container: ruby:${{ matrix.ruby }}-alpine
256
+ steps:
257
+ - name: Install packages
258
+ run: |
259
+ apk --no-cache --upgrade add build-base git bash tar
260
+
261
+ - name: Checkout
262
+ uses: actions/checkout@v4
263
+ with:
264
+ submodules: recursive
265
+
266
+ - name: Upgrade RubyGems
267
+ if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
268
+ run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
269
+
270
+ - name: Bundle
271
+ run: |
272
+ git config --global --add safe.directory $PWD
273
+ bundle install --jobs 4 --retry 3
274
+
275
+ - name: Download packaged gem
276
+ uses: actions/download-artifact@v4
277
+ with:
278
+ name: pkg-ruby
279
+ path: pkg
280
+
281
+ - name: Install gem
282
+ run: gem install -l pkg/expressir-*.gem
283
+
284
+ - name: Verify
285
+ run: |
286
+ cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
287
+ ruby bin/rspec
288
+ cat .rspec_status || echo ".rspec_status was not found"
289
+
290
+ verify-darwin:
291
+ name: verify MacOS binary gem on ruby-${{ matrix.ruby }}
292
+ needs: pack
293
+ runs-on: macos-latest
294
+ strategy:
295
+ fail-fast: false
296
+ matrix:
297
+ ruby: [ '3.2', '3.1', '3.0', '2.7' ]
298
+ steps:
299
+ - name: Install Ruby
300
+ uses: ruby/setup-ruby@master
301
+ with:
302
+ ruby-version: ${{ matrix.ruby }}
303
+ bundler-cache: false
304
+ bundler: ${{ env.BUNDLER_VER }}
305
+
306
+ - name: Checkout
307
+ uses: actions/checkout@v4
308
+
309
+ - name: Bundle
310
+ run: bundle install --jobs 4 --retry 3
311
+
312
+ - name: Download packaged gem
313
+ uses: actions/download-artifact@v4
314
+ with:
315
+ name: pkg-darwin
316
+ path: pkg
317
+
318
+ - name: Install binary gem
319
+ run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM.sub(/darwin\d{2}$/, 'darwin')").gem
320
+ # MacOS with have something like x86_64-darwin19, others just x86_64-linux
321
+
322
+ - name: Verify
323
+ run: |
324
+ cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
325
+ ruby bin/rspec
326
+ cat .rspec_status || echo ".rspec_status was not found"
327
+
328
+ verify-linux-gnu:
329
+ name: verify Linux (gnu) binary gem on ruby-${{ matrix.ruby }}
330
+ needs: pack
331
+ runs-on: ubuntu-latest
332
+ strategy:
333
+ fail-fast: false
334
+ matrix:
335
+ ruby: [ '3.2', '3.1', '3.0', '2.7' ]
336
+ steps:
337
+ - name: Install Ruby
338
+ uses: ruby/setup-ruby@master
339
+ with:
340
+ ruby-version: ${{ matrix.ruby }}
341
+ bundler-cache: false
342
+ bundler: ${{ env.BUNDLER_VER }}
343
+
344
+ - name: Upgrade RubyGems
345
+ if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
346
+ run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
347
+
348
+ - name: Checkout
349
+ uses: actions/checkout@v4
350
+
351
+ - name: Bundle
352
+ run: bundle install --jobs 4 --retry 3
353
+
354
+ - name: Download packaged gem
355
+ uses: actions/download-artifact@v4
356
+ with:
357
+ name: pkg-linux-gnu
358
+ path: pkg
359
+
360
+ - name: Install binary gem
361
+ run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM")-gnu.gem
362
+
363
+ - name: Verify
364
+ run: |
365
+ cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
366
+ ruby bin/rspec
367
+ cat .rspec_status || echo ".rspec_status was not found"
368
+
369
+ verify-windows:
370
+ name: verify Windows binary gem on ruby-${{ matrix.ruby }}
371
+ needs: pack
372
+ continue-on-error: true
373
+ runs-on: windows-latest
374
+ strategy:
375
+ fail-fast: false
376
+ matrix:
377
+ ruby: [ '3.2', '3.1', '3.0', '2.7' ]
378
+ steps:
379
+ - name: Install Ruby
380
+ uses: ruby/setup-ruby@master
381
+ with:
382
+ ruby-version: ${{ matrix.ruby }}
383
+ bundler-cache: false
384
+ bundler: ${{ env.BUNDLER_VER }}
385
+
386
+ - name: Checkout
387
+ uses: actions/checkout@v4
388
+
389
+ - name: Bundle
390
+ run: bundle install --jobs 4 --retry 3
391
+
392
+ - name: Download packaged gem
393
+ uses: actions/download-artifact@v4
394
+ with:
395
+ name: pkg-windows
396
+ path: pkg
397
+
398
+ - name: Install binary gem
399
+ run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
400
+
401
+ - name: Verify
402
+ run: |
403
+ cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
404
+ ruby bin/rspec
405
+ cat .rspec_status || echo ".rspec_status was not found"
406
+
407
+ verify-linux-musl:
408
+ name: verify Linux (musl) binary gem on ruby-${{ matrix.ruby }}
409
+ needs: pack
410
+ runs-on: ubuntu-latest
411
+ strategy:
412
+ fail-fast: false
413
+ matrix:
414
+ ruby: [ '3.2', '3.1', '3.0', '2.7' ]
415
+ container: ruby:${{ matrix.ruby }}-alpine
416
+ steps:
417
+ - name: Install packages
418
+ run: |
419
+ apk --no-cache --upgrade add build-base git bash tar
420
+
421
+ - name: Checkout
422
+ uses: actions/checkout@v4
423
+ with:
424
+ submodules: recursive
425
+
426
+ - name: Upgrade RubyGems
427
+ if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
428
+ run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
429
+
430
+ - name: Bundle
431
+ run: |
432
+ git config --global --add safe.directory $PWD
433
+ bundle install --jobs 4 --retry 3
434
+
435
+ - name: Download packaged gem
436
+ uses: actions/download-artifact@v4
437
+ with:
438
+ name: pkg-linux-musl
439
+ path: pkg
440
+
441
+ - name: Install binary gem
442
+ run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
443
+
444
+ - name: Verify
445
+ run: |
446
+ cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
447
+ ruby bin/rspec
448
+ cat .rspec_status || echo ".rspec_status was not found"