expressir 1.3.0-aarch64-linux-gnu
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 +7 -0
- data/.cross_rubies +20 -0
- data/.github/workflows/rake.yml +313 -0
- data/.github/workflows/release.yml +181 -0
- data/.gitignore +23 -0
- data/.gitmodules +6 -0
- data/.hound.yml +3 -0
- data/.rspec +2 -0
- data/.rubocop.yml +18 -0
- data/.yardopts +11 -0
- data/Gemfile +4 -0
- data/README.adoc +155 -0
- data/Rakefile +17 -0
- data/bin/console +11 -0
- data/bin/rspec +29 -0
- data/bin/setup +8 -0
- data/docs/development.md +90 -0
- data/exe/expressir +22 -0
- data/exe/format +18 -0
- data/exe/format-test +81 -0
- data/exe/generate-parser +51 -0
- data/expressir.gemspec +48 -0
- data/lib/expressir/cli/ui.rb +36 -0
- data/lib/expressir/cli.rb +21 -0
- data/lib/expressir/config.rb +23 -0
- data/lib/expressir/express/2.7/express_parser.so +0 -0
- data/lib/expressir/express/3.0/express_parser.so +0 -0
- data/lib/expressir/express/3.1/express_parser.so +0 -0
- data/lib/expressir/express/3.2/express_parser.so +0 -0
- data/lib/expressir/express/cache.rb +51 -0
- data/lib/expressir/express/formatter.rb +1608 -0
- data/lib/expressir/express/hyperlink_formatter.rb +36 -0
- data/lib/expressir/express/model_visitor.rb +24 -0
- data/lib/expressir/express/parser.rb +84 -0
- data/lib/expressir/express/resolve_references_model_visitor.rb +31 -0
- data/lib/expressir/express/schema_head_formatter.rb +23 -0
- data/lib/expressir/express/visitor.rb +2588 -0
- data/lib/expressir/model/cache.rb +17 -0
- data/lib/expressir/model/data_type.rb +9 -0
- data/lib/expressir/model/data_types/aggregate.rb +31 -0
- data/lib/expressir/model/data_types/array.rb +31 -0
- data/lib/expressir/model/data_types/bag.rb +25 -0
- data/lib/expressir/model/data_types/binary.rb +22 -0
- data/lib/expressir/model/data_types/boolean.rb +10 -0
- data/lib/expressir/model/data_types/enumeration.rb +25 -0
- data/lib/expressir/model/data_types/enumeration_item.rb +26 -0
- data/lib/expressir/model/data_types/generic.rb +26 -0
- data/lib/expressir/model/data_types/generic_entity.rb +26 -0
- data/lib/expressir/model/data_types/integer.rb +10 -0
- data/lib/expressir/model/data_types/list.rb +28 -0
- data/lib/expressir/model/data_types/logical.rb +10 -0
- data/lib/expressir/model/data_types/number.rb +10 -0
- data/lib/expressir/model/data_types/real.rb +19 -0
- data/lib/expressir/model/data_types/select.rb +28 -0
- data/lib/expressir/model/data_types/set.rb +25 -0
- data/lib/expressir/model/data_types/string.rb +22 -0
- data/lib/expressir/model/declaration.rb +9 -0
- data/lib/expressir/model/declarations/attribute.rb +47 -0
- data/lib/expressir/model/declarations/constant.rb +34 -0
- data/lib/expressir/model/declarations/entity.rb +53 -0
- data/lib/expressir/model/declarations/function.rb +67 -0
- data/lib/expressir/model/declarations/interface.rb +28 -0
- data/lib/expressir/model/declarations/interface_item.rb +23 -0
- data/lib/expressir/model/declarations/interfaced_item.rb +37 -0
- data/lib/expressir/model/declarations/parameter.rb +34 -0
- data/lib/expressir/model/declarations/procedure.rb +64 -0
- data/lib/expressir/model/declarations/remark_item.rb +21 -0
- data/lib/expressir/model/declarations/rule.rb +71 -0
- data/lib/expressir/model/declarations/schema.rb +117 -0
- data/lib/expressir/model/declarations/schema_version.rb +22 -0
- data/lib/expressir/model/declarations/schema_version_item.rb +22 -0
- data/lib/expressir/model/declarations/subtype_constraint.rb +40 -0
- data/lib/expressir/model/declarations/type.rb +45 -0
- data/lib/expressir/model/declarations/unique_rule.rb +31 -0
- data/lib/expressir/model/declarations/variable.rb +34 -0
- data/lib/expressir/model/declarations/where_rule.rb +31 -0
- data/lib/expressir/model/expression.rb +9 -0
- data/lib/expressir/model/expressions/aggregate_initializer.rb +19 -0
- data/lib/expressir/model/expressions/aggregate_initializer_item.rb +22 -0
- data/lib/expressir/model/expressions/binary_expression.rb +53 -0
- data/lib/expressir/model/expressions/entity_constructor.rb +22 -0
- data/lib/expressir/model/expressions/function_call.rb +22 -0
- data/lib/expressir/model/expressions/interval.rb +34 -0
- data/lib/expressir/model/expressions/query_expression.rb +35 -0
- data/lib/expressir/model/expressions/unary_expression.rb +27 -0
- data/lib/expressir/model/identifier.rb +34 -0
- data/lib/expressir/model/literal.rb +9 -0
- data/lib/expressir/model/literals/binary.rb +19 -0
- data/lib/expressir/model/literals/integer.rb +19 -0
- data/lib/expressir/model/literals/logical.rb +23 -0
- data/lib/expressir/model/literals/real.rb +19 -0
- data/lib/expressir/model/literals/string.rb +22 -0
- data/lib/expressir/model/model_element.rb +208 -0
- data/lib/expressir/model/reference.rb +9 -0
- data/lib/expressir/model/references/attribute_reference.rb +22 -0
- data/lib/expressir/model/references/group_reference.rb +22 -0
- data/lib/expressir/model/references/index_reference.rb +27 -0
- data/lib/expressir/model/references/simple_reference.rb +24 -0
- data/lib/expressir/model/repository.rb +23 -0
- data/lib/expressir/model/statement.rb +9 -0
- data/lib/expressir/model/statements/alias.rb +35 -0
- data/lib/expressir/model/statements/assignment.rb +22 -0
- data/lib/expressir/model/statements/case.rb +25 -0
- data/lib/expressir/model/statements/case_action.rb +22 -0
- data/lib/expressir/model/statements/compound.rb +19 -0
- data/lib/expressir/model/statements/escape.rb +10 -0
- data/lib/expressir/model/statements/if.rb +25 -0
- data/lib/expressir/model/statements/null.rb +10 -0
- data/lib/expressir/model/statements/procedure_call.rb +22 -0
- data/lib/expressir/model/statements/repeat.rb +47 -0
- data/lib/expressir/model/statements/return.rb +19 -0
- data/lib/expressir/model/statements/skip.rb +10 -0
- data/lib/expressir/model/supertype_expression.rb +9 -0
- data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +29 -0
- data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +19 -0
- data/lib/expressir/model.rb +79 -0
- data/lib/expressir/version.rb +3 -0
- data/lib/expressir.rb +24 -0
- data/rakelib/antlr4-native.rake +161 -0
- data/rakelib/cross-ruby.rake +384 -0
- data/spec/acceptance/version_spec.rb +27 -0
- data/spec/expressir/express/cache_spec.rb +89 -0
- data/spec/expressir/express/formatter_spec.rb +173 -0
- data/spec/expressir/express/parser_spec.rb +141 -0
- data/spec/expressir/model/model_element_spec.rb +318 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/support/console_helper.rb +29 -0
- data/spec/syntax/multiple.exp +23 -0
- data/spec/syntax/multiple.yaml +198 -0
- data/spec/syntax/multiple_formatted.exp +71 -0
- data/spec/syntax/multiple_hyperlink_formatted.exp +71 -0
- data/spec/syntax/multiple_schema_head_hyperlink_formatted.exp +13 -0
- data/spec/syntax/remark.exp +193 -0
- data/spec/syntax/remark.yaml +471 -0
- data/spec/syntax/remark_formatted.exp +228 -0
- data/spec/syntax/single.exp +4 -0
- data/spec/syntax/single.yaml +18 -0
- data/spec/syntax/single_formatted.exp +10 -0
- data/spec/syntax/single_formatted.yaml +36 -0
- data/spec/syntax/syntax.exp +333 -0
- data/spec/syntax/syntax.yaml +3509 -0
- data/spec/syntax/syntax_formatted.exp +902 -0
- data/spec/syntax/syntax_hyperlink_formatted.exp +902 -0
- data/spec/syntax/syntax_schema_head_formatted.exp +18 -0
- metadata +390 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3d7525074aac8d35650eb724a90f2adf4e3f1072e5be6a445bfb3ac9acf416d0
|
4
|
+
data.tar.gz: f0bd6140c6616c3f1ef2f65477d7583c55bd78da8f3dc7692e87091cc305df7d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 49cea640e6730e38060c6fdb81ff2ddea786c559b8a0ef443868965914c8a95027c6e6c9ae626585e8508fb74f5ecd971cc1af4f7046c7e82557fd2d41e146ec
|
7
|
+
data.tar.gz: 74b5f350b0aa9f95213fcadf5026b6ace47ceb0ee28fb0a855af73f695f21c79614b3af63e2bf2d4f7cb11988d321e50e49ea05a40ea1fafb7af98db4a7b414d
|
data/.cross_rubies
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
3.2.0:x86_64-w64-mingw32
|
2
|
+
3.2.0:x86_64-linux-gnu
|
3
|
+
3.2.0:aarch64-linux-gnu
|
4
|
+
3.2.0:x86_64-darwin
|
5
|
+
3.2.0:arm64-darwin
|
6
|
+
3.1.0:x86_64-w64-mingw32
|
7
|
+
3.1.0:x86_64-linux-gnu
|
8
|
+
3.1.0:aarch64-linux-gnu
|
9
|
+
3.1.0:x86_64-darwin
|
10
|
+
3.1.0:arm64-darwin
|
11
|
+
3.0.0:x86_64-w64-mingw32
|
12
|
+
3.0.0:x86_64-linux-gnu
|
13
|
+
3.0.0:aarch64-linux-gnu
|
14
|
+
3.0.0:x86_64-darwin
|
15
|
+
3.0.0:arm64-darwin
|
16
|
+
2.7.0:x86_64-w64-mingw32
|
17
|
+
2.7.0:x86_64-linux-gnu
|
18
|
+
2.7.0:aarch64-linux-gnu
|
19
|
+
2.7.0:x86_64-darwin
|
20
|
+
2.7.0:arm64-darwin
|
@@ -0,0 +1,313 @@
|
|
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
|
+
pull_request:
|
12
|
+
workflow_dispatch:
|
13
|
+
|
14
|
+
concurrency:
|
15
|
+
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
|
16
|
+
cancel-in-progress: true
|
17
|
+
|
18
|
+
env:
|
19
|
+
BUNDLER_VER: 2.4.22
|
20
|
+
# Forcing bundler version to ensure that it is consistent everywhere and
|
21
|
+
# does not cause bundler gem reinstalls
|
22
|
+
# bundler/rubygems 2.3.22 is a minimal requirement to support gnu/musl differentiation
|
23
|
+
# https://github.com/rubygems/rubygems/pull/4488
|
24
|
+
|
25
|
+
jobs:
|
26
|
+
rubocop:
|
27
|
+
runs-on: ubuntu-latest
|
28
|
+
steps:
|
29
|
+
- name: Checkout
|
30
|
+
uses: actions/checkout@v4
|
31
|
+
with:
|
32
|
+
submodules: recursive
|
33
|
+
|
34
|
+
- name: Install Ruby
|
35
|
+
uses: ruby/setup-ruby@master
|
36
|
+
with:
|
37
|
+
ruby-version: 3.1
|
38
|
+
bundler: ${{ env.BUNDLER_VER }}
|
39
|
+
bundler-cache: true
|
40
|
+
|
41
|
+
- name: Bundle
|
42
|
+
run: bundle install --jobs 4 --retry 3
|
43
|
+
|
44
|
+
- name: Rubocop
|
45
|
+
run: bundle exec rake rubocop
|
46
|
+
|
47
|
+
rake:
|
48
|
+
name: test on ruby-${{ matrix.ruby }} ${{ matrix.os }}
|
49
|
+
runs-on: ${{ matrix.os }}
|
50
|
+
strategy:
|
51
|
+
fail-fast: false
|
52
|
+
matrix:
|
53
|
+
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
|
54
|
+
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
55
|
+
|
56
|
+
steps:
|
57
|
+
- name: Checkout
|
58
|
+
uses: actions/checkout@v4
|
59
|
+
with:
|
60
|
+
submodules: recursive
|
61
|
+
|
62
|
+
- name: Setup packages
|
63
|
+
if: startsWith(matrix.os, 'macos')
|
64
|
+
run: brew install autoconf automake libtool
|
65
|
+
|
66
|
+
- name: Install Ruby
|
67
|
+
uses: ruby/setup-ruby@master
|
68
|
+
with:
|
69
|
+
ruby-version: ${{ matrix.ruby }}
|
70
|
+
bundler: ${{ env.BUNDLER_VER }}
|
71
|
+
# Rice gem has issues with bundler cache
|
72
|
+
# more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126
|
73
|
+
# but it is not the only issue
|
74
|
+
bundler-cache: false
|
75
|
+
|
76
|
+
- name: Bundle
|
77
|
+
run: bundle install --jobs 4 --retry 3
|
78
|
+
|
79
|
+
- name: Process cache
|
80
|
+
uses: actions/cache@v3
|
81
|
+
id: cache
|
82
|
+
with:
|
83
|
+
path: lib/expressir/express/express_parser.*
|
84
|
+
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') }}
|
85
|
+
|
86
|
+
- name: Build native extension
|
87
|
+
if: steps.cache.outputs.cache-hit != 'true'
|
88
|
+
run: bundle exec rake compile
|
89
|
+
|
90
|
+
- name: Run tests
|
91
|
+
run: |
|
92
|
+
bundle exec rake
|
93
|
+
cat .rspec_status
|
94
|
+
|
95
|
+
# test release workflow
|
96
|
+
pack-ruby:
|
97
|
+
runs-on: ubuntu-latest
|
98
|
+
steps:
|
99
|
+
- name: Checkout
|
100
|
+
uses: actions/checkout@v4
|
101
|
+
with:
|
102
|
+
submodules: recursive
|
103
|
+
|
104
|
+
- name: Setup Ruby
|
105
|
+
uses: ruby/setup-ruby@master
|
106
|
+
with:
|
107
|
+
ruby-version: '3.1'
|
108
|
+
bundler: ${{ env.BUNDLER_VER }}
|
109
|
+
bundler-cache: false
|
110
|
+
|
111
|
+
- name: Bundle
|
112
|
+
run: bundle install --jobs 4 --retry 3
|
113
|
+
|
114
|
+
- name: Build gem without native extension
|
115
|
+
run: gem build expressir.gemspec
|
116
|
+
|
117
|
+
- name: Package gem without native extension
|
118
|
+
uses: actions/upload-artifact@v3
|
119
|
+
with:
|
120
|
+
name: pkg-ruby
|
121
|
+
path: expressir-*.gem
|
122
|
+
|
123
|
+
pack:
|
124
|
+
runs-on: ubuntu-latest
|
125
|
+
strategy:
|
126
|
+
fail-fast: false
|
127
|
+
matrix:
|
128
|
+
platform: [ linux-gnu, windows, darwin ]
|
129
|
+
steps:
|
130
|
+
- name: Checkout
|
131
|
+
uses: actions/checkout@v4
|
132
|
+
with:
|
133
|
+
submodules: recursive
|
134
|
+
|
135
|
+
- name: Setup Ruby
|
136
|
+
uses: ruby/setup-ruby@master
|
137
|
+
with:
|
138
|
+
ruby-version: '3.1'
|
139
|
+
bundler-cache: false
|
140
|
+
bundler: ${{ env.BUNDLER_VER }}
|
141
|
+
|
142
|
+
- name: Bundle
|
143
|
+
run: bundle install --jobs 4 --retry 3
|
144
|
+
|
145
|
+
- name: Enable swap
|
146
|
+
run: |
|
147
|
+
sudo fallocate -l 15g /compile.swap
|
148
|
+
sudo chmod 600 /compile.swap
|
149
|
+
sudo mkswap /compile.swap
|
150
|
+
sudo swapon /compile.swap
|
151
|
+
sudo swapon --all --verbose
|
152
|
+
|
153
|
+
- name: Build gem with native extension
|
154
|
+
run: bundle exec rake gem:${{ matrix.platform }}
|
155
|
+
|
156
|
+
- name: Package gem with native extension
|
157
|
+
uses: actions/upload-artifact@v3
|
158
|
+
with:
|
159
|
+
name: pkg-${{ matrix.platform }}
|
160
|
+
path: pkg/*.gem
|
161
|
+
|
162
|
+
verify-ruby:
|
163
|
+
name: verify ruby gem on ruby-${{ matrix.ruby }} ${{ matrix.os }}
|
164
|
+
needs: pack-ruby
|
165
|
+
runs-on: ${{ matrix.os }}
|
166
|
+
strategy:
|
167
|
+
fail-fast: false
|
168
|
+
matrix:
|
169
|
+
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
|
170
|
+
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
171
|
+
steps:
|
172
|
+
- name: Install Ruby
|
173
|
+
uses: ruby/setup-ruby@master
|
174
|
+
with:
|
175
|
+
ruby-version: ${{ matrix.ruby }}
|
176
|
+
bundler-cache: false
|
177
|
+
bundler: ${{ env.BUNDLER_VER }}
|
178
|
+
|
179
|
+
- name: Checkout
|
180
|
+
uses: actions/checkout@v4
|
181
|
+
with:
|
182
|
+
submodules: recursive
|
183
|
+
|
184
|
+
- name: Bundle
|
185
|
+
run: bundle install --jobs 4 --retry 3
|
186
|
+
|
187
|
+
- name: Download packaged gem
|
188
|
+
uses: actions/download-artifact@v3
|
189
|
+
with:
|
190
|
+
name: pkg-ruby
|
191
|
+
path: pkg
|
192
|
+
|
193
|
+
- name: Install gem
|
194
|
+
run: gem install -l pkg/expressir-*.gem
|
195
|
+
|
196
|
+
- name: Verify
|
197
|
+
run: |
|
198
|
+
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
|
199
|
+
ruby bin/rspec
|
200
|
+
cat .rspec_status || echo ".rspec_status was not found"
|
201
|
+
|
202
|
+
verify-darwin:
|
203
|
+
name: verify MacOS binary gem on ruby-${{ matrix.ruby }}
|
204
|
+
needs: pack
|
205
|
+
runs-on: macos-latest
|
206
|
+
strategy:
|
207
|
+
fail-fast: false
|
208
|
+
matrix:
|
209
|
+
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
|
210
|
+
steps:
|
211
|
+
- name: Install Ruby
|
212
|
+
uses: ruby/setup-ruby@master
|
213
|
+
with:
|
214
|
+
ruby-version: ${{ matrix.ruby }}
|
215
|
+
bundler-cache: false
|
216
|
+
bundler: ${{ env.BUNDLER_VER }}
|
217
|
+
|
218
|
+
- name: Checkout
|
219
|
+
uses: actions/checkout@v4
|
220
|
+
|
221
|
+
- name: Bundle
|
222
|
+
run: bundle install --jobs 4 --retry 3
|
223
|
+
|
224
|
+
- name: Download packaged gem
|
225
|
+
uses: actions/download-artifact@v3
|
226
|
+
with:
|
227
|
+
name: pkg-darwin
|
228
|
+
path: pkg
|
229
|
+
|
230
|
+
- name: Install binary gem
|
231
|
+
run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM.sub(/darwin\d{2}$/, 'darwin')").gem
|
232
|
+
# MacOS with have something like x86_64-darwin19, others just x86_64-linux
|
233
|
+
|
234
|
+
- name: Verify
|
235
|
+
run: |
|
236
|
+
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
|
237
|
+
ruby bin/rspec
|
238
|
+
cat .rspec_status || echo ".rspec_status was not found"
|
239
|
+
|
240
|
+
verify-linux-gnu:
|
241
|
+
name: verify Linux (gnu) binary gem on ruby-${{ matrix.ruby }}
|
242
|
+
needs: pack
|
243
|
+
runs-on: ubuntu-latest
|
244
|
+
strategy:
|
245
|
+
fail-fast: false
|
246
|
+
matrix:
|
247
|
+
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
|
248
|
+
steps:
|
249
|
+
- name: Install Ruby
|
250
|
+
uses: ruby/setup-ruby@master
|
251
|
+
with:
|
252
|
+
ruby-version: ${{ matrix.ruby }}
|
253
|
+
bundler-cache: false
|
254
|
+
bundler: ${{ env.BUNDLER_VER }}
|
255
|
+
|
256
|
+
- name: Checkout
|
257
|
+
uses: actions/checkout@v4
|
258
|
+
|
259
|
+
- name: Bundle
|
260
|
+
run: bundle install --jobs 4 --retry 3
|
261
|
+
|
262
|
+
- name: Download packaged gem
|
263
|
+
uses: actions/download-artifact@v3
|
264
|
+
with:
|
265
|
+
name: pkg-linux-gnu
|
266
|
+
path: pkg
|
267
|
+
|
268
|
+
- name: Install binary gem
|
269
|
+
run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM")-gnu.gem
|
270
|
+
|
271
|
+
- name: Verify
|
272
|
+
run: |
|
273
|
+
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
|
274
|
+
ruby bin/rspec
|
275
|
+
cat .rspec_status || echo ".rspec_status was not found"
|
276
|
+
|
277
|
+
verify-windows:
|
278
|
+
name: verify Windows binary gem on ruby-${{ matrix.ruby }}
|
279
|
+
needs: pack
|
280
|
+
continue-on-error: true
|
281
|
+
runs-on: windows-latest
|
282
|
+
strategy:
|
283
|
+
fail-fast: false
|
284
|
+
matrix:
|
285
|
+
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
|
286
|
+
steps:
|
287
|
+
- name: Install Ruby
|
288
|
+
uses: ruby/setup-ruby@master
|
289
|
+
with:
|
290
|
+
ruby-version: ${{ matrix.ruby }}
|
291
|
+
bundler-cache: false
|
292
|
+
bundler: ${{ env.BUNDLER_VER }}
|
293
|
+
|
294
|
+
- name: Checkout
|
295
|
+
uses: actions/checkout@v4
|
296
|
+
|
297
|
+
- name: Bundle
|
298
|
+
run: bundle install --jobs 4 --retry 3
|
299
|
+
|
300
|
+
- name: Download packaged gem
|
301
|
+
uses: actions/download-artifact@v3
|
302
|
+
with:
|
303
|
+
name: pkg-windows
|
304
|
+
path: pkg
|
305
|
+
|
306
|
+
- name: Install binary gem
|
307
|
+
run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
|
308
|
+
|
309
|
+
- name: Verify
|
310
|
+
run: |
|
311
|
+
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
|
312
|
+
ruby bin/rspec
|
313
|
+
cat .rspec_status || echo ".rspec_status was not found"
|
@@ -0,0 +1,181 @@
|
|
1
|
+
name: release
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_dispatch:
|
5
|
+
inputs:
|
6
|
+
next_version:
|
7
|
+
description: |
|
8
|
+
Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
|
9
|
+
required: true
|
10
|
+
default: 'patch'
|
11
|
+
push:
|
12
|
+
tags: [ v* ]
|
13
|
+
|
14
|
+
concurrency:
|
15
|
+
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
|
16
|
+
cancel-in-progress: true
|
17
|
+
|
18
|
+
jobs:
|
19
|
+
bump:
|
20
|
+
runs-on: ubuntu-latest
|
21
|
+
steps:
|
22
|
+
- uses: actions/checkout@v4
|
23
|
+
with:
|
24
|
+
submodules: recursive
|
25
|
+
|
26
|
+
- uses: ruby/setup-ruby@master
|
27
|
+
with:
|
28
|
+
ruby-version: '3.1'
|
29
|
+
bundler: ${{ env.BUNDLER_VER }}
|
30
|
+
|
31
|
+
- if: ${{ github.event_name == 'workflow_dispatch' }} # unfortunatelly cannot keep this condition on job level
|
32
|
+
run: |
|
33
|
+
git config --global user.name github-actions
|
34
|
+
git config --global user.email github-actions@github.com
|
35
|
+
gem install gem-release
|
36
|
+
gem bump --version ${{ github.event.inputs.next_version }} --tag --push
|
37
|
+
|
38
|
+
pack:
|
39
|
+
runs-on: ubuntu-latest
|
40
|
+
needs: bump
|
41
|
+
strategy:
|
42
|
+
fail-fast: false
|
43
|
+
matrix:
|
44
|
+
platform: [ linux-gnu, windows, darwin ]
|
45
|
+
steps:
|
46
|
+
- uses: actions/checkout@v4
|
47
|
+
with:
|
48
|
+
submodules: recursive
|
49
|
+
ref: main # https://github.com/actions/checkout/issues/439#issuecomment-830862188
|
50
|
+
|
51
|
+
- uses: ruby/setup-ruby@master
|
52
|
+
with:
|
53
|
+
ruby-version: '3.1'
|
54
|
+
# bundler-cache: true important to not use cache because it leads to "cannot find -lrice"
|
55
|
+
# more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126
|
56
|
+
|
57
|
+
- run: bundle install --jobs 4 --retry 3
|
58
|
+
|
59
|
+
- name: Build gem and save version
|
60
|
+
if: matrix.platform == 'linux-gnu'
|
61
|
+
run: |
|
62
|
+
gem build expressir.gemspec | grep -o 'Version: .*' | awk '{print $2}' > version
|
63
|
+
|
64
|
+
- if: matrix.platform == 'linux-gnu'
|
65
|
+
uses: actions/upload-artifact@v3
|
66
|
+
with:
|
67
|
+
name: pkg-ruby
|
68
|
+
path: expressir-*.gem
|
69
|
+
|
70
|
+
- if: matrix.platform == 'linux-gnu'
|
71
|
+
uses: actions/upload-artifact@v3
|
72
|
+
with:
|
73
|
+
name: version
|
74
|
+
path: version
|
75
|
+
|
76
|
+
- name: Enable swap
|
77
|
+
run: |
|
78
|
+
sudo fallocate -l 15g /compile.swap
|
79
|
+
sudo chmod 600 /compile.swap
|
80
|
+
sudo mkswap /compile.swap
|
81
|
+
sudo swapon /compile.swap
|
82
|
+
sudo swapon --all --verbose
|
83
|
+
|
84
|
+
# build gem WITH pre-built native extension
|
85
|
+
- run: bundle exec rake gem:${{ matrix.platform }}
|
86
|
+
|
87
|
+
- uses: actions/upload-artifact@v3
|
88
|
+
with:
|
89
|
+
name: pkg-${{ matrix.platform }}
|
90
|
+
path: pkg/*.gem
|
91
|
+
|
92
|
+
publish:
|
93
|
+
runs-on: ubuntu-latest
|
94
|
+
needs: pack
|
95
|
+
steps:
|
96
|
+
- uses: actions/download-artifact@v3
|
97
|
+
with:
|
98
|
+
name: pkg-ruby
|
99
|
+
path: pkg
|
100
|
+
|
101
|
+
- uses: actions/download-artifact@v3
|
102
|
+
with:
|
103
|
+
name: pkg-linux-gnu
|
104
|
+
path: pkg
|
105
|
+
|
106
|
+
- uses: actions/download-artifact@v3
|
107
|
+
with:
|
108
|
+
name: pkg-windows
|
109
|
+
path: pkg
|
110
|
+
|
111
|
+
- uses: actions/download-artifact@v3
|
112
|
+
with:
|
113
|
+
name: pkg-darwin
|
114
|
+
path: pkg
|
115
|
+
|
116
|
+
- uses: ruby/setup-ruby@master
|
117
|
+
with:
|
118
|
+
ruby-version: '3.1'
|
119
|
+
|
120
|
+
- name: Publish to rubygems.org
|
121
|
+
env:
|
122
|
+
RUBYGEMS_API_KEY: ${{ secrets.LUTAML_CI_RUBYGEMS_API_KEY }}
|
123
|
+
run: |
|
124
|
+
ls -l pkg/
|
125
|
+
mkdir -p ~/.gem
|
126
|
+
cat > ~/.gem/credentials << EOF
|
127
|
+
---
|
128
|
+
:rubygems_api_key: ${RUBYGEMS_API_KEY}
|
129
|
+
EOF
|
130
|
+
chmod 0600 ~/.gem/credentials
|
131
|
+
gem signin
|
132
|
+
for gem in pkg/*.gem; do gem push $gem -V; done
|
133
|
+
sleep(5)
|
134
|
+
|
135
|
+
verify:
|
136
|
+
name: Verify published gem on ${{ matrix.os }}
|
137
|
+
needs: publish
|
138
|
+
runs-on: ${{ matrix.os }}
|
139
|
+
strategy:
|
140
|
+
fail-fast: false
|
141
|
+
matrix:
|
142
|
+
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
143
|
+
steps:
|
144
|
+
- name: Install Ruby
|
145
|
+
uses: ruby/setup-ruby@master
|
146
|
+
with:
|
147
|
+
ruby-version: 3.1
|
148
|
+
bundler-cache: true
|
149
|
+
bundler: ${{ env.BUNDLER_VER }}
|
150
|
+
|
151
|
+
- name: Download version
|
152
|
+
uses: actions/download-artifact@v3
|
153
|
+
with:
|
154
|
+
name: version
|
155
|
+
|
156
|
+
- name: Install gem
|
157
|
+
run: gem install expressir -v $(cat version)
|
158
|
+
|
159
|
+
- name: Verify
|
160
|
+
run: expressir version
|
161
|
+
|
162
|
+
verify-alpine:
|
163
|
+
name: Verify published gem on alpine
|
164
|
+
needs: publish
|
165
|
+
runs-on: ubuntu-latest
|
166
|
+
container:
|
167
|
+
image: alpine:3.17
|
168
|
+
steps:
|
169
|
+
- name: Install packages
|
170
|
+
run: apk --no-cache add bash build-base git ruby-dev gcc g++ automake
|
171
|
+
|
172
|
+
- name: Download version
|
173
|
+
uses: actions/download-artifact@v3
|
174
|
+
with:
|
175
|
+
name: version
|
176
|
+
|
177
|
+
- name: Install gem
|
178
|
+
run: gem install expressir -v $(cat version)
|
179
|
+
|
180
|
+
- name: Verify
|
181
|
+
run: expressir version
|
data/.gitignore
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/_yardoc/
|
4
|
+
/coverage/
|
5
|
+
/doc/
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/tmp/
|
9
|
+
/Gemfile.lock
|
10
|
+
/.idea
|
11
|
+
/.vscode
|
12
|
+
/lib/expressir/express/express_parser.bundle
|
13
|
+
/lib/expressir/express/express_parser.so
|
14
|
+
/lib/expressir/express/*/express_parser.bundle
|
15
|
+
/lib/expressir/express/*/express_parser.so
|
16
|
+
/spec/syntax/*-pretty.exp
|
17
|
+
/ext/express-parser/rice-embed
|
18
|
+
|
19
|
+
# rspec failure tracking
|
20
|
+
.rspec_status
|
21
|
+
|
22
|
+
# rubocop guide
|
23
|
+
.rubocop-https---*
|
data/.gitmodules
ADDED
data/.hound.yml
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
inherit_from:
|
2
|
+
- https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
|
3
|
+
|
4
|
+
AllCops:
|
5
|
+
TargetRubyVersion: 2.7
|
6
|
+
NewCops: enable
|
7
|
+
SuggestExtensions: false
|
8
|
+
Exclude:
|
9
|
+
- 'vendor/**/*'
|
10
|
+
- 'expressir.gemspec'
|
11
|
+
- 'tmp/**/*'
|
12
|
+
- 'pkg/**/*'
|
13
|
+
- 'exe/format-test'
|
14
|
+
- 'lib/expressir/express/**/*'
|
15
|
+
- 'lib/expressir/model/**/*'
|
16
|
+
|
17
|
+
Layout/LineLength:
|
18
|
+
Max: 160
|
data/.yardopts
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# macro must be defined first, see https://stackoverflow.com/a/10344776/1823988
|
2
|
+
lib/expressir/model/model_element.rb
|
3
|
+
lib/expressir/model/data_type.rb
|
4
|
+
lib/expressir/model/declaration.rb
|
5
|
+
lib/expressir/model/expression.rb
|
6
|
+
lib/expressir/model/literal.rb
|
7
|
+
lib/expressir/model/reference.rb
|
8
|
+
lib/expressir/model/statement.rb
|
9
|
+
lib/expressir/model/supertype_expression.rb
|
10
|
+
|
11
|
+
lib/**/*.rb
|
data/Gemfile
ADDED