@napi-rs/cli 3.0.0-alpha.1 → 3.0.0-alpha.100

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 (176) hide show
  1. package/cli.mjs +1 -1
  2. package/dist/api/__tests__/create-npm-dirs.spec.d.ts +1 -0
  3. package/dist/api/__tests__/new.spec.d.ts +1 -0
  4. package/dist/api/build.d.ts +2 -2
  5. package/dist/api/create-npm-dirs.d.ts +5 -0
  6. package/dist/api/templates/index.d.ts +0 -7
  7. package/dist/api/templates/js-binding.d.ts +2 -1
  8. package/dist/api/templates/load-wasi-template.d.ts +2 -0
  9. package/dist/api/templates/wasi-worker-template.d.ts +2 -0
  10. package/dist/cli.js +3961 -14
  11. package/dist/def/artifacts.d.ts +21 -1
  12. package/dist/def/build.d.ts +167 -4
  13. package/dist/def/create-npm-dirs.d.ts +10 -0
  14. package/dist/def/new.d.ts +25 -7
  15. package/dist/def/pre-publish.d.ts +21 -2
  16. package/dist/def/rename.d.ts +16 -6
  17. package/dist/def/universalize.d.ts +10 -0
  18. package/dist/def/version.d.ts +10 -0
  19. package/dist/index.cjs +10142 -20524
  20. package/dist/index.d.ts +1 -0
  21. package/dist/index.js +3711 -29
  22. package/dist/utils/__tests__/config.spec.d.ts +1 -0
  23. package/dist/utils/config.d.ts +70 -6
  24. package/dist/utils/index.d.ts +1 -1
  25. package/dist/utils/metadata.d.ts +13 -1
  26. package/dist/utils/misc.d.ts +3 -3
  27. package/dist/utils/read-config.d.ts +7 -0
  28. package/dist/utils/target.d.ts +9 -6
  29. package/dist/utils/typegen.d.ts +4 -1
  30. package/dist/utils/version.d.ts +2 -1
  31. package/package.json +60 -24
  32. package/src/api/__tests__/create-npm-dirs.spec.ts +210 -0
  33. package/src/api/__tests__/new.spec.ts +429 -0
  34. package/src/api/artifacts.ts +83 -8
  35. package/src/api/build.ts +682 -134
  36. package/src/api/create-npm-dirs.ts +64 -13
  37. package/src/api/new.ts +389 -125
  38. package/src/api/pre-publish.ts +27 -16
  39. package/src/api/rename.ts +103 -17
  40. package/src/api/templates/index.ts +0 -7
  41. package/src/api/templates/js-binding.ts +212 -107
  42. package/src/api/templates/load-wasi-template.ts +216 -0
  43. package/src/api/templates/wasi-worker-template.ts +122 -0
  44. package/src/api/universalize.ts +13 -8
  45. package/src/api/version.ts +5 -2
  46. package/src/commands/artifacts.ts +2 -2
  47. package/src/commands/build.ts +1 -1
  48. package/src/commands/new.ts +46 -49
  49. package/src/def/artifacts.ts +22 -3
  50. package/src/def/build.ts +83 -8
  51. package/src/def/create-npm-dirs.ts +9 -0
  52. package/src/def/new.ts +28 -3
  53. package/src/def/pre-publish.ts +24 -3
  54. package/src/def/rename.ts +11 -2
  55. package/src/def/universalize.ts +9 -0
  56. package/src/def/version.ts +9 -0
  57. package/src/index.ts +2 -0
  58. package/src/utils/__tests__/__fixtures__/napi_type_def +130 -130
  59. package/src/utils/__tests__/__snapshots__/config.spec.ts.md +97 -0
  60. package/src/utils/__tests__/__snapshots__/config.spec.ts.snap +0 -0
  61. package/src/utils/__tests__/__snapshots__/target.spec.ts.md +56 -0
  62. package/src/utils/__tests__/__snapshots__/target.spec.ts.snap +0 -0
  63. package/src/utils/__tests__/__snapshots__/typegen.spec.ts.md +703 -164
  64. package/src/utils/__tests__/__snapshots__/typegen.spec.ts.snap +0 -0
  65. package/src/utils/__tests__/__snapshots__/version.spec.ts.md +9 -8
  66. package/src/utils/__tests__/__snapshots__/version.spec.ts.snap +0 -0
  67. package/src/utils/__tests__/config.spec.ts +81 -0
  68. package/src/utils/__tests__/typegen.spec.ts +19 -4
  69. package/src/utils/cargo.ts +2 -2
  70. package/src/utils/config.ts +147 -13
  71. package/src/utils/index.ts +1 -1
  72. package/src/utils/log.ts +1 -1
  73. package/src/utils/metadata.ts +52 -14
  74. package/src/utils/misc.ts +21 -7
  75. package/src/utils/read-config.ts +20 -0
  76. package/src/utils/target.ts +53 -9
  77. package/src/utils/typegen.ts +100 -40
  78. package/src/utils/version.ts +11 -9
  79. package/dist/api/artifacts.js +0 -50
  80. package/dist/api/build.js +0 -404
  81. package/dist/api/create-npm-dirs.js +0 -63
  82. package/dist/api/new.js +0 -154
  83. package/dist/api/pre-publish.js +0 -157
  84. package/dist/api/rename.js +0 -28
  85. package/dist/api/templates/.gitignore.d.ts +0 -1
  86. package/dist/api/templates/.gitignore.js +0 -198
  87. package/dist/api/templates/.npmignore.d.ts +0 -1
  88. package/dist/api/templates/.npmignore.js +0 -14
  89. package/dist/api/templates/build.rs.d.ts +0 -1
  90. package/dist/api/templates/build.rs.js +0 -4
  91. package/dist/api/templates/cargo.toml.d.ts +0 -6
  92. package/dist/api/templates/cargo.toml.js +0 -25
  93. package/dist/api/templates/ci-template.d.ts +0 -1
  94. package/dist/api/templates/ci-template.js +0 -566
  95. package/dist/api/templates/ci.yml.d.ts +0 -1
  96. package/dist/api/templates/ci.yml.js +0 -92
  97. package/dist/api/templates/index.js +0 -8
  98. package/dist/api/templates/js-binding.js +0 -124
  99. package/dist/api/templates/lib.rs.d.ts +0 -1
  100. package/dist/api/templates/lib.rs.js +0 -10
  101. package/dist/api/templates/package.json.d.ts +0 -8
  102. package/dist/api/templates/package.json.js +0 -30
  103. package/dist/api/universalize.js +0 -38
  104. package/dist/api/version.js +0 -16
  105. package/dist/commands/artifacts.js +0 -19
  106. package/dist/commands/build.js +0 -34
  107. package/dist/commands/create-npm-dirs.js +0 -7
  108. package/dist/commands/help.js +0 -12
  109. package/dist/commands/new.js +0 -112
  110. package/dist/commands/pre-publish.js +0 -8
  111. package/dist/commands/rename.js +0 -7
  112. package/dist/commands/universalize.js +0 -7
  113. package/dist/commands/version.js +0 -7
  114. package/dist/def/artifacts.js +0 -38
  115. package/dist/def/build.js +0 -105
  116. package/dist/def/commands/artifacts.d.ts +0 -15
  117. package/dist/def/commands/artifacts.js +0 -29
  118. package/dist/def/commands/build.d.ts +0 -53
  119. package/dist/def/commands/build.js +0 -105
  120. package/dist/def/commands/create-npm-dirs.d.ts +0 -15
  121. package/dist/def/commands/create-npm-dirs.js +0 -29
  122. package/dist/def/commands/new.d.ts +0 -27
  123. package/dist/def/commands/new.js +0 -53
  124. package/dist/def/commands/pre-publish.d.ts +0 -23
  125. package/dist/def/commands/pre-publish.js +0 -45
  126. package/dist/def/commands/rename.d.ts +0 -25
  127. package/dist/def/commands/rename.js +0 -49
  128. package/dist/def/commands/universalize.d.ts +0 -13
  129. package/dist/def/commands/universalize.js +0 -25
  130. package/dist/def/commands/version.d.ts +0 -13
  131. package/dist/def/commands/version.js +0 -25
  132. package/dist/def/create-npm-dirs.js +0 -38
  133. package/dist/def/new.js +0 -66
  134. package/dist/def/options/artifacts.d.ts +0 -35
  135. package/dist/def/options/artifacts.js +0 -11
  136. package/dist/def/options/build.d.ts +0 -97
  137. package/dist/def/options/build.js +0 -3
  138. package/dist/def/options/create-npm-dirs.d.ts +0 -35
  139. package/dist/def/options/create-npm-dirs.js +0 -11
  140. package/dist/def/options/new.d.ts +0 -79
  141. package/dist/def/options/new.js +0 -15
  142. package/dist/def/options/pre-publish.d.ts +0 -65
  143. package/dist/def/options/pre-publish.js +0 -13
  144. package/dist/def/options/rename.d.ts +0 -75
  145. package/dist/def/options/rename.js +0 -11
  146. package/dist/def/options/universalize.d.ts +0 -28
  147. package/dist/def/options/universalize.js +0 -10
  148. package/dist/def/options/version.d.ts +0 -28
  149. package/dist/def/options/version.js +0 -10
  150. package/dist/def/pre-publish.js +0 -56
  151. package/dist/def/rename.js +0 -58
  152. package/dist/def/universalize.js +0 -33
  153. package/dist/def/version.js +0 -33
  154. package/dist/utils/__tests__/target.spec.js +0 -10
  155. package/dist/utils/__tests__/typegen.spec.js +0 -37
  156. package/dist/utils/__tests__/version.spec.js +0 -5
  157. package/dist/utils/cargo.js +0 -33
  158. package/dist/utils/ci.d.ts +0 -11
  159. package/dist/utils/ci.js +0 -86
  160. package/dist/utils/config.js +0 -42
  161. package/dist/utils/index.js +0 -9
  162. package/dist/utils/log.js +0 -14
  163. package/dist/utils/metadata.js +0 -19
  164. package/dist/utils/misc.js +0 -35
  165. package/dist/utils/target.js +0 -109
  166. package/dist/utils/typegen.js +0 -158
  167. package/dist/utils/version.js +0 -59
  168. package/src/api/templates/.gitignore.ts +0 -198
  169. package/src/api/templates/.npmignore.ts +0 -14
  170. package/src/api/templates/build.rs.ts +0 -4
  171. package/src/api/templates/cargo.toml.ts +0 -35
  172. package/src/api/templates/ci-template.ts +0 -566
  173. package/src/api/templates/ci.yml.ts +0 -116
  174. package/src/api/templates/lib.rs.ts +0 -10
  175. package/src/api/templates/package.json.ts +0 -44
  176. package/src/utils/ci.ts +0 -102
@@ -1,566 +0,0 @@
1
- export const YAML = () => `
2
- name: CI
3
-
4
- env:
5
- DEBUG: 'napi:*'
6
- MACOSX_DEPLOYMENT_TARGET: '10.13'
7
-
8
- on:
9
- push:
10
- branches:
11
- - main
12
- tags-ignore:
13
- - '**'
14
- paths-ignore:
15
- - '**/*.md'
16
- - 'LICENSE'
17
- - '**/*.gitignore'
18
- - '.editorconfig'
19
- - 'docs/**'
20
- pull_request:
21
-
22
- jobs:
23
- build:
24
-
25
- strategy:
26
- fail-fast: false
27
- matrix:
28
- settings:
29
- - host: macos-latest
30
- target: 'x86_64-apple-darwin'
31
- build: |
32
- yarn build --platform
33
- strip -x *.node
34
- - host: windows-latest
35
- build: yarn build --platform
36
- target: 'x86_64-pc-windows-msvc'
37
- - host: windows-latest
38
- build: |
39
- yarn build --platform --target i686-pc-windows-msvc
40
- yarn test
41
- target: 'i686-pc-windows-msvc'
42
- - host: ubuntu-latest
43
- target: 'x86_64-unknown-linux-gnu'
44
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
45
- build: >-
46
- set -e &&\n
47
- yarn build --platform --target x86_64-unknown-linux-gnu &&\n
48
- strip *.node
49
- - host: ubuntu-latest
50
- target: 'x86_64-unknown-linux-musl'
51
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
52
- build: >-
53
- set -e &&
54
- yarn build --platform &&
55
- strip *.node
56
- - host: macos-latest
57
- target: 'aarch64-apple-darwin'
58
- build: |
59
- yarn build --platform --target aarch64-apple-darwin
60
- strip -x *.node
61
- - host: ubuntu-latest
62
- target: 'aarch64-unknown-linux-gnu'
63
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
64
- build: >-
65
- set -e &&\n
66
- yarn build --platform --target aarch64-unknown-linux-gnu &&\n
67
- aarch64-unknown-linux-gnu-strip *.node
68
- - host: ubuntu-latest
69
- target: 'armv7-unknown-linux-gnueabihf'
70
- setup: |
71
- sudo apt-get update
72
- sudo apt-get install gcc-arm-linux-gnueabihf -y
73
- build: |
74
- yarn build --platform --target armv7-unknown-linux-gnueabihf
75
- arm-linux-gnueabihf-strip *.node
76
- - host: ubuntu-latest
77
- target: 'aarch64-linux-android'
78
- build: |
79
- yarn build --platform --target aarch64-linux-android
80
- \${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip *.node
81
- - host: ubuntu-latest
82
- target: 'armv7-linux-androideabi'
83
- build: |
84
- yarn build --platform --target armv7-linux-androideabi
85
- \${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip *.node
86
- - host: ubuntu-latest
87
- target: 'aarch64-unknown-linux-musl'
88
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
89
- build: >-
90
- set -e &&\n
91
- rustup target add aarch64-unknown-linux-musl &&\n
92
- yarn build --platform --target aarch64-unknown-linux-musl &&\n
93
- /aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip *.node
94
- - host: windows-latest
95
- target: 'aarch64-pc-windows-msvc'
96
- build: yarn build --platform --target aarch64-pc-windows-msvc
97
-
98
- name: stable - \${{ matrix.settings.target }} - node@18
99
- runs-on: \${{ matrix.settings.host }}
100
-
101
- steps:
102
- - uses: actions/checkout@v3
103
-
104
- - name: Setup node
105
- uses: actions/setup-node@v3
106
- if: \${{ !matrix.settings.docker }}
107
- with:
108
- node-version: 18
109
- check-latest: true
110
- cache: yarn
111
-
112
- - name: Install
113
- uses: dtolnay/rust-toolchain@stable
114
- if: \${{ !matrix.settings.docker }}
115
- with:
116
- toolchain: stable
117
- targets: \${{ matrix.settings.target }}
118
-
119
- - name: Cache cargo
120
- uses: actions/cache@v3
121
- with:
122
- path: |
123
- ~/.cargo/registry/index/
124
- ~/.cargo/registry/cache/
125
- ~/.cargo/git/db/
126
- .cargo-cache
127
- target/
128
- key: \${{ matrix.settings.target }}-cargo-\${{ matrix.settings.host }}
129
-
130
- - uses: goto-bus-stop/setup-zig@v2
131
- if: \${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }}
132
- with:
133
- version: 0.10.1
134
-
135
- - name: Setup toolchain
136
- run: \${{ matrix.settings.setup }}
137
- if: \${{ matrix.settings.setup }}
138
- shell: bash
139
-
140
- - name: Setup node x86
141
- if: matrix.settings.target == 'i686-pc-windows-msvc'
142
- run: yarn config set supportedArchitectures.cpu "ia32"
143
- shell: bash
144
-
145
- - name: 'Install dependencies'
146
- run: yarn install
147
-
148
- - name: Setup node x86
149
- uses: actions/setup-node@v3
150
- if: matrix.settings.target == 'i686-pc-windows-msvc'
151
- with:
152
- node-version: 18
153
- check-latest: true
154
- cache: yarn
155
- architecture: x86
156
-
157
- - name: Build in docker
158
- uses: addnab/docker-run-action@v3
159
- if: \${{ matrix.settings.docker }}
160
- with:
161
- image: \${{ matrix.settings.docker }}
162
- options: --user 0:0 -v \${{ github.workspace }}/.cargo-cache/git/db:/usr/local/cargo/git/db -v \${{ github.workspace }}/.cargo/registry/cache:/usr/local/cargo/registry/cache -v \${{ github.workspace }}/.cargo/registry/index:/usr/local/cargo/registry/index -v \${{ github.workspace }}:/build -w /build
163
- run: \${{ matrix.settings.build }}
164
-
165
- - name: 'Build'
166
- run: \${{ matrix.settings.build }}
167
- if: \${{ !matrix.settings.docker }}
168
- shell: bash
169
-
170
- - name: Upload artifact
171
- uses: actions/upload-artifact@v3
172
- with:
173
- name: bindings-\${{ matrix.settings.target }}
174
- path: "*.node"
175
- if-no-files-found: error
176
-
177
- build-freebsd:
178
- runs-on: macos-12
179
- name: Build FreeBSD
180
- steps:
181
- - uses: actions/checkout@v3
182
- - name: Build
183
- id: build
184
- uses: vmactions/freebsd-vm@v0
185
- env:
186
- DEBUG: 'napi:*'
187
- RUSTUP_HOME: /usr/local/rustup
188
- CARGO_HOME: /usr/local/cargo
189
- RUSTUP_IO_THREADS: 1
190
- with:
191
- envs: 'DEBUG RUSTUP_HOME CARGO_HOME RUSTUP_IO_THREADS'
192
- usesh: true
193
- mem: 3000
194
- prepare: |
195
- pkg install -y -f curl node libnghttp2
196
- curl -qL https://www.npmjs.com/install.sh | sh
197
- npm install --location=global --ignore-scripts yarn
198
- curl https://sh.rustup.rs -sSf --output rustup.sh
199
- sh rustup.sh -y --profile minimal --default-toolchain beta
200
- export PATH="/usr/local/cargo/bin:$PATH"
201
- echo "~~~~ rustc --version ~~~~"
202
- rustc --version
203
- echo "~~~~ node -v ~~~~"
204
- node -v
205
- echo "~~~~ yarn --version ~~~~"
206
- yarn --version
207
- run: |
208
- export PATH="/usr/local/cargo/bin:$PATH"
209
- pwd
210
- ls -lah
211
- whoami
212
- env
213
- freebsd-version
214
- yarn install
215
- yarn build
216
- strip -x *.node
217
- yarn test
218
- rm -rf node_modules
219
- rm -rf target
220
- rm -rf .yarn/cache
221
- - name: Upload artifact
222
- uses: actions/upload-artifact@v3
223
- with:
224
- name: bindings-freebsd
225
- path: "*.node"
226
- if-no-files-found: error
227
-
228
- test-macOS-windows-binding:
229
- name: Test bindings on \${{ matrix.settings.target }} - node@\${{ matrix.node }}
230
- needs:
231
- - build
232
- strategy:
233
- fail-fast: false
234
- matrix:
235
- settings:
236
- - host: macos-latest
237
- target: 'x86_64-apple-darwin'
238
- - host: windows-latest
239
- target: 'x86_64-pc-windows-msvc'
240
- node: ['14', '16', '18']
241
- runs-on: \${{ matrix.settings.host }}
242
-
243
- steps:
244
- - uses: actions/checkout@v3
245
-
246
- - name: Setup node
247
- uses: actions/setup-node@v3
248
- with:
249
- node-version: \${{ matrix.node }}
250
- check-latest: true
251
- cache: 'yarn'
252
-
253
- - name: 'Install dependencies'
254
- run: yarn install
255
-
256
- - name: Download artifacts
257
- uses: actions/download-artifact@v3
258
- with:
259
- name: bindings-\${{ matrix.settings.target }}
260
- path: .
261
-
262
- - name: List packages
263
- run: ls -R .
264
- shell: bash
265
-
266
- - name: Test bindings
267
- run: yarn test
268
-
269
- test-linux-x64-gnu-binding:
270
- name: Test bindings on Linux-x64-gnu - node@\${{ matrix.node }}
271
- needs:
272
- - build
273
- strategy:
274
- fail-fast: false
275
- matrix:
276
- node: ['14', '16', '18']
277
- runs-on: ubuntu-latest
278
-
279
- steps:
280
- - uses: actions/checkout@v3
281
-
282
- - name: Setup node
283
- uses: actions/setup-node@v3
284
- with:
285
- node-version: \${{ matrix.node }}
286
- check-latest: true
287
- cache: 'yarn'
288
-
289
- - name: 'Install dependencies'
290
- run: yarn install
291
-
292
- - name: Download artifacts
293
- uses: actions/download-artifact@v3
294
- with:
295
- name: bindings-x86_64-unknown-linux-gnu
296
- path: .
297
-
298
- - name: List packages
299
- run: ls -R .
300
- shell: bash
301
-
302
- - name: Test bindings
303
- run: docker run --rm -v $(pwd):/build -w /build node:\${{ matrix.node }}-slim yarn test
304
-
305
- test-linux-x64-musl-binding:
306
- name: Test bindings on x86_64-unknown-linux-musl - node@\${{ matrix.node }}
307
- needs:
308
- - build
309
- strategy:
310
- fail-fast: false
311
- matrix:
312
- node: ['14', '16', '18']
313
- runs-on: ubuntu-latest
314
-
315
- steps:
316
- - uses: actions/checkout@v3
317
-
318
- - name: Setup node
319
- uses: actions/setup-node@v3
320
- with:
321
- node-version: \${{ matrix.node }}
322
- check-latest: true
323
- cache: 'yarn'
324
-
325
- - name: 'Install dependencies'
326
- run: |
327
- yarn config set supportedArchitectures.libc "musl"
328
- yarn install
329
-
330
- - name: Download artifacts
331
- uses: actions/download-artifact@v3
332
- with:
333
- name: bindings-x86_64-unknown-linux-musl
334
- path: .
335
-
336
- - name: List packages
337
- run: ls -R .
338
- shell: bash
339
-
340
- - name: Test bindings
341
- run: docker run --rm -v $(pwd):/build -w /build node:\${{ matrix.node }}-alpine yarn test
342
-
343
- test-linux-aarch64-gnu-binding:
344
- name: Test bindings on aarch64-unknown-linux-gnu - node@\${{ matrix.node }}
345
- needs:
346
- - build
347
- strategy:
348
- fail-fast: false
349
- matrix:
350
- node: ['14', '16', '18']
351
- runs-on: ubuntu-latest
352
-
353
- steps:
354
- - uses: actions/checkout@v3
355
-
356
- - name: Download artifacts
357
- uses: actions/download-artifact@v3
358
- with:
359
- name: bindings-aarch64-unknown-linux-gnu
360
- path: .
361
-
362
- - name: List packages
363
- run: ls -R .
364
- shell: bash
365
-
366
- - name: Install dependencies
367
- run: |
368
- yarn config set supportedArchitectures.cpu "arm64"
369
- yarn config set supportedArchitectures.libc "glibc"
370
- yarn install
371
-
372
- - name: Set up QEMU
373
- uses: docker/setup-qemu-action@v2
374
- with:
375
- platforms: arm64
376
- - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
377
-
378
- - name: Setup and run tests
379
- uses: addnab/docker-run-action@v3
380
- with:
381
- image: node:\${{ matrix.node }}-slim
382
- options: --platform linux/arm64 -v \${{ github.workspace }}:/build -w /build
383
- run: |
384
- set -e
385
- yarn test
386
- ls -la
387
-
388
- test-linux-aarch64-musl-binding:
389
- name: Test bindings on aarch64-unknown-linux-musl - node@\${{ matrix.node }}
390
- needs:
391
- - build
392
-
393
- runs-on: ubuntu-latest
394
-
395
- steps:
396
- - uses: actions/checkout@v3
397
-
398
- - name: Download artifacts
399
- uses: actions/download-artifact@v3
400
- with:
401
- name: bindings-aarch64-unknown-linux-musl
402
- path: .
403
-
404
- - name: List packages
405
- run: ls -R .
406
- shell: bash
407
-
408
- - name: Install dependencies
409
- run: |
410
- yarn config set supportedArchitectures.cpu "arm64"
411
- yarn config set supportedArchitectures.libc "musl"
412
- yarn install
413
-
414
- - name: Set up QEMU
415
- uses: docker/setup-qemu-action@v2
416
- with:
417
- platforms: arm64
418
- - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
419
-
420
- - name: Setup and run tests
421
- uses: addnab/docker-run-action@v3
422
- with:
423
- image: node:lts-alpine
424
- options: --platform linux/arm64 -v \${{ github.workspace }}:/build -w /build
425
- run: |
426
- set -e
427
- yarn test
428
-
429
- test-linux-arm-gnueabihf-binding:
430
- name: Test bindings on armv7-unknown-linux-gnueabihf - node@\${{ matrix.node }}
431
- needs:
432
- - build
433
- strategy:
434
- fail-fast: false
435
- matrix:
436
- node: ['14', '16', '18']
437
- runs-on: ubuntu-latest
438
-
439
- steps:
440
- - uses: actions/checkout@v3
441
-
442
- - name: Download artifacts
443
- uses: actions/download-artifact@v3
444
- with:
445
- name: bindings-armv7-unknown-linux-gnueabihf
446
- path: .
447
-
448
- - name: List packages
449
- run: ls -R .
450
- shell: bash
451
-
452
- - name: Install dependencies
453
- run: |
454
- yarn config set supportedArchitectures.cpu "arm"
455
- yarn install
456
-
457
- - name: Set up QEMU
458
- uses: docker/setup-qemu-action@v2
459
- with:
460
- platforms: arm
461
- - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
462
-
463
- - name: Setup and run tests
464
- uses: addnab/docker-run-action@v3
465
- with:
466
- image: node:\${{ matrix.node }}-bullseye-slim
467
- options: --platform linux/arm/v7 -v \${{ github.workspace }}:/build -w /build
468
- run: |
469
- set -e
470
- yarn test
471
- ls -la
472
-
473
- universal-macOS:
474
- name: Build universal macOS binary
475
- needs:
476
- - build
477
- runs-on: macos-latest
478
-
479
- steps:
480
- - uses: actions/checkout@v3
481
-
482
- - name: Setup node
483
- uses: actions/setup-node@v3
484
- with:
485
- node-version: 18
486
- check-latest: true
487
- cache: yarn
488
-
489
- - name: 'Install dependencies'
490
- run: yarn install
491
-
492
- - name: Download macOS x64 artifact
493
- uses: actions/download-artifact@v3
494
- with:
495
- name: bindings-x86_64-apple-darwin
496
- path: artifacts
497
- - name: Download macOS arm64 artifact
498
- uses: actions/download-artifact@v3
499
- with:
500
- name: bindings-aarch64-apple-darwin
501
- path: artifacts
502
-
503
- - name: Combine binaries
504
- run: yarn universal
505
-
506
- - name: Upload artifact
507
- uses: actions/upload-artifact@v3
508
- with:
509
- name: bindings-universal-apple-darwin
510
- path: "*.node"
511
- if-no-files-found: error
512
-
513
- publish:
514
- name: Publish
515
- runs-on: ubuntu-latest
516
- needs:
517
- - test-linux-x64-gnu-binding
518
- - test-linux-x64-musl-binding
519
- - test-linux-aarch64-gnu-binding
520
- - test-linux-arm-gnueabihf-binding
521
- - test-macOS-windows-binding
522
- - test-linux-aarch64-musl-binding
523
- - build-freebsd
524
-
525
- steps:
526
- - uses: actions/checkout@v3
527
-
528
- - name: Setup node
529
- uses: actions/setup-node@v3
530
- with:
531
- node-version: 18
532
- check-latest: true
533
- cache: 'yarn'
534
-
535
- - name: 'Install dependencies'
536
- run: yarn install
537
-
538
- - name: Download all artifacts
539
- uses: actions/download-artifact@v3
540
- with:
541
- path: artifacts
542
-
543
- - name: Move artifacts
544
- run: yarn artifacts
545
-
546
- - name: List packages
547
- run: ls -R ./npm
548
- shell: bash
549
-
550
- - name: Publish
551
- run: |
552
- if git log -1 --pretty=%B | grep "^[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+$";
553
- then
554
- echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
555
- npm publish --access public
556
- elif git log -1 --pretty=%B | grep "^[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+";
557
- then
558
- echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
559
- npm publish --tag next --access public
560
- else
561
- echo "Not a release, skipping publish"
562
- fi
563
- env:
564
- GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}
565
- NPM_TOKEN: \${{ secrets.NPM_TOKEN }}
566
- `
@@ -1,116 +0,0 @@
1
- import { load, dump } from 'js-yaml'
2
-
3
- import {
4
- NodeArchToCpu,
5
- UniArchsByPlatform,
6
- parseTriple,
7
- } from '../../utils/index.js'
8
-
9
- import { YAML } from './ci-template.js'
10
-
11
- const BUILD_FREEBSD = 'build-freebsd'
12
- const TEST_MACOS_WINDOWS = 'test-macOS-windows-binding'
13
- const TEST_LINUX_X64_GNU = 'test-linux-x64-gnu-binding'
14
- const TEST_LINUX_X64_MUSL = 'test-linux-x64-musl-binding'
15
- const TEST_LINUX_AARCH64_GNU = 'test-linux-aarch64-gnu-binding'
16
- const TEST_LINUX_AARCH64_MUSL = 'test-linux-aarch64-musl-binding'
17
- const TEST_LINUX_ARM_GNUEABIHF = 'test-linux-arm-gnueabihf-binding'
18
- const UNIVERSAL_MACOS = 'universal-macOS'
19
-
20
- export const createGithubActionsCIYml = (
21
- binaryName: string,
22
- targets: string[],
23
- ) => {
24
- const allTargets = new Set(
25
- targets.flatMap((t) => {
26
- const platform = parseTriple(t)
27
- if (platform.arch === 'universal') {
28
- const srcTriples = UniArchsByPlatform[platform.platform]?.map((arch) =>
29
- t.replace('universal', NodeArchToCpu[arch]),
30
- )
31
- return [t, ...(srcTriples ?? [])]
32
- }
33
- return [t]
34
- }),
35
- )
36
-
37
- const fullTemplate = load(YAML()) as any
38
-
39
- const requiredSteps = []
40
- const enableWindowsX86 = allTargets.has('x86_64-pc-windows-msvc')
41
- const enableMacOSX86 = allTargets.has('x86_64-apple-darwin')
42
- const enableLinuxX86Gnu = allTargets.has('x86_64-unknown-linux-gnu')
43
- const enableLinuxX86Musl = allTargets.has('x86_64-unknown-linux-musl')
44
- const enableLinuxArm8Gnu = allTargets.has('aarch64-unknown-linux-gnu')
45
- const enableLinuxArm8Musl = allTargets.has('aarch64-unknown-linux-musl')
46
- const enableLinuxArm7 = allTargets.has('armv7-unknown-linux-gnueabihf')
47
- const enableFreeBSD = allTargets.has('x86_64-unknown-freebsd')
48
- const enableMacOSUni = allTargets.has('universal-apple-darwin')
49
- fullTemplate.jobs.build.strategy.matrix.settings =
50
- fullTemplate.jobs.build.strategy.matrix.settings.filter(
51
- ({ target }: { target: string }) => allTargets.has(target),
52
- )
53
- if (!fullTemplate.jobs.build.strategy.matrix.settings.length) {
54
- delete fullTemplate.jobs.build.strategy.matrix
55
- }
56
-
57
- if (!enableFreeBSD) {
58
- delete fullTemplate.jobs[BUILD_FREEBSD]
59
- } else {
60
- requiredSteps.push(BUILD_FREEBSD)
61
- }
62
-
63
- if (!enableWindowsX86 && !enableMacOSX86) {
64
- delete fullTemplate.jobs[TEST_MACOS_WINDOWS]
65
- } else {
66
- const filterTarget = enableWindowsX86 ? 'macos-latest' : 'windows-latest'
67
- fullTemplate.jobs[TEST_MACOS_WINDOWS].strategy.matrix.settings =
68
- fullTemplate.jobs[TEST_MACOS_WINDOWS].strategy.matrix.settings.filter(
69
- ({ host }: { host: string; target: string }) => host !== filterTarget,
70
- )
71
-
72
- requiredSteps.push(TEST_MACOS_WINDOWS)
73
- }
74
-
75
- if (!enableLinuxX86Gnu) {
76
- delete fullTemplate.jobs[TEST_LINUX_X64_GNU]
77
- } else {
78
- requiredSteps.push(TEST_LINUX_X64_GNU)
79
- }
80
-
81
- if (!enableLinuxX86Musl) {
82
- delete fullTemplate.jobs[TEST_LINUX_X64_MUSL]
83
- } else {
84
- requiredSteps.push(TEST_LINUX_X64_MUSL)
85
- }
86
-
87
- if (!enableLinuxArm8Gnu) {
88
- delete fullTemplate.jobs[TEST_LINUX_AARCH64_GNU]
89
- } else {
90
- requiredSteps.push(TEST_LINUX_AARCH64_GNU)
91
- }
92
-
93
- if (!enableLinuxArm8Musl) {
94
- delete fullTemplate.jobs[TEST_LINUX_AARCH64_MUSL]
95
- } else {
96
- requiredSteps.push(TEST_LINUX_AARCH64_MUSL)
97
- }
98
-
99
- if (!enableLinuxArm7) {
100
- delete fullTemplate.jobs[TEST_LINUX_ARM_GNUEABIHF]
101
- } else {
102
- requiredSteps.push(TEST_LINUX_ARM_GNUEABIHF)
103
- }
104
-
105
- if (!enableMacOSUni) {
106
- delete fullTemplate.jobs[UNIVERSAL_MACOS]
107
- } else {
108
- requiredSteps.push(UNIVERSAL_MACOS)
109
- }
110
-
111
- fullTemplate.jobs.publish.needs = requiredSteps
112
-
113
- return dump(fullTemplate, {
114
- lineWidth: 1000,
115
- })
116
- }
@@ -1,10 +0,0 @@
1
- export const createLibRs = () => `#![deny(clippy::all)]
2
-
3
- #[macro_use]
4
- extern crate napi_derive;
5
-
6
- #[napi]
7
- pub fn sum(a: i32, b: i32) -> i32 {
8
- a + b
9
- }
10
- `