Skip to content

Commit 503075b

Browse files
committed
Availability of 0.1.0
0 parents  commit 503075b

2,638 files changed

Lines changed: 1825308 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml.disabled

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [master]
6+
pull_request:
7+
branches: [master]
8+
9+
env:
10+
CARGO_TERM_COLOR: always
11+
RUSTFLAGS: "-D warnings"
12+
13+
jobs:
14+
check:
15+
name: Check
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v4
19+
- uses: dtolnay/rust-toolchain@nightly
20+
- uses: Swatinem/rust-cache@v2
21+
- run: cargo check --all-features
22+
23+
test:
24+
name: Test
25+
runs-on: ${{ matrix.os }}
26+
strategy:
27+
matrix:
28+
os: [ubuntu-latest, macos-latest, windows-latest]
29+
steps:
30+
- uses: actions/checkout@v4
31+
- uses: dtolnay/rust-toolchain@nightly
32+
- uses: Swatinem/rust-cache@v2
33+
- uses: taiki-e/install-action@nextest
34+
- run: cargo nextest run --all-features
35+
36+
clippy:
37+
name: Clippy
38+
runs-on: ubuntu-latest
39+
steps:
40+
- uses: actions/checkout@v4
41+
- uses: dtolnay/rust-toolchain@nightly
42+
with:
43+
components: clippy
44+
- uses: Swatinem/rust-cache@v2
45+
- run: cargo clippy --all-features -- -D warnings
46+
47+
fmt:
48+
name: Format
49+
runs-on: ubuntu-latest
50+
steps:
51+
- uses: actions/checkout@v4
52+
- uses: dtolnay/rust-toolchain@nightly
53+
with:
54+
components: rustfmt
55+
- run: cargo fmt --all -- --check
56+
57+
bench:
58+
name: Benchmark
59+
runs-on: ubuntu-latest
60+
steps:
61+
- uses: actions/checkout@v4
62+
- uses: dtolnay/rust-toolchain@nightly
63+
- uses: Swatinem/rust-cache@v2
64+
- run: cargo bench --all-features -- --output-format bencher | tee bench_output.txt
65+
- name: Store benchmark result
66+
uses: benchmark-action/github-action-benchmark@v1
67+
with:
68+
tool: 'cargo'
69+
output-file-path: bench_output.txt
70+
auto-push: false
71+
alert-threshold: '110%'
72+
comment-on-alert: true
73+
fail-on-alert: false

.github/workflows/npm-publish.yml

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
# OxiPhysics npm Publishing Workflow
2+
# Author: COOLJAPAN OU (Team Kitasan)
3+
# License: Apache-2.0
4+
#
5+
# Publishes @cooljapan/oxiphysics WASM package to npm
6+
# Triggered by: v* tags or manual workflow_dispatch
7+
8+
name: npm Publish
9+
10+
on:
11+
workflow_dispatch:
12+
inputs:
13+
publish_target:
14+
description: 'Publish target'
15+
required: true
16+
default: 'dry-run'
17+
type: choice
18+
options:
19+
- dry-run
20+
- npm
21+
npm_tag:
22+
description: 'npm dist-tag (e.g., latest, beta, next)'
23+
required: false
24+
default: 'latest'
25+
type: string
26+
27+
push:
28+
tags:
29+
- 'v*'
30+
31+
env:
32+
CARGO_TERM_COLOR: always
33+
WASM_PACK_VERSION: "0.13.1"
34+
SCOPE: "cooljapan"
35+
NPM_PACKAGE: "@cooljapan/oxiphysics"
36+
37+
jobs:
38+
build:
39+
name: Build WASM packages
40+
runs-on: ubuntu-latest
41+
steps:
42+
- name: Checkout repository
43+
uses: actions/checkout@v4
44+
45+
- name: Install Rust toolchain
46+
uses: dtolnay/rust-toolchain@stable
47+
with:
48+
targets: wasm32-unknown-unknown
49+
50+
- name: Cache cargo registry & build
51+
uses: actions/cache@v4
52+
with:
53+
path: |
54+
~/.cargo/registry
55+
~/.cargo/git
56+
target
57+
key: wasm-build-${{ hashFiles('**/Cargo.lock') }}
58+
restore-keys: wasm-build-
59+
60+
- name: Install wasm-pack
61+
run: cargo install wasm-pack --version ${{ env.WASM_PACK_VERSION }} --locked || true
62+
63+
- name: Build for bundler target
64+
working-directory: crates/oxiphysics-wasm
65+
run: wasm-pack build --scope ${{ env.SCOPE }} --target bundler --out-dir pkg-bundler --release
66+
67+
- name: Build for web target
68+
working-directory: crates/oxiphysics-wasm
69+
run: wasm-pack build --scope ${{ env.SCOPE }} --target web --out-dir pkg-web --release
70+
71+
- name: Build for Node.js target
72+
working-directory: crates/oxiphysics-wasm
73+
run: wasm-pack build --scope ${{ env.SCOPE }} --target nodejs --out-dir pkg-node --release
74+
75+
- name: Rename packages
76+
working-directory: crates/oxiphysics-wasm
77+
run: |
78+
for dir in pkg-bundler pkg-web pkg-node; do
79+
if [ -f "${dir}/package.json" ]; then
80+
sed -i "s|\"@${SCOPE}/oxiphysics-wasm\"|\"${NPM_PACKAGE}\"|g" "${dir}/package.json"
81+
echo "Updated ${dir}/package.json → ${NPM_PACKAGE}"
82+
fi
83+
done
84+
85+
- name: Show package info
86+
working-directory: crates/oxiphysics-wasm
87+
run: |
88+
echo "=== bundler ===" && cat pkg-bundler/package.json && echo ""
89+
echo "=== web ===" && cat pkg-web/package.json && echo ""
90+
echo "=== node ===" && cat pkg-node/package.json && echo ""
91+
echo "=== WASM size ===" && ls -lh pkg-bundler/*.wasm
92+
93+
- name: Upload bundler package
94+
uses: actions/upload-artifact@v4
95+
with:
96+
name: npm-pkg-bundler
97+
path: crates/oxiphysics-wasm/pkg-bundler/
98+
99+
- name: Upload web package
100+
uses: actions/upload-artifact@v4
101+
with:
102+
name: npm-pkg-web
103+
path: crates/oxiphysics-wasm/pkg-web/
104+
105+
- name: Upload node package
106+
uses: actions/upload-artifact@v4
107+
with:
108+
name: npm-pkg-node
109+
path: crates/oxiphysics-wasm/pkg-node/
110+
111+
publish:
112+
name: Publish to npm
113+
runs-on: ubuntu-latest
114+
needs: [build]
115+
if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/')
116+
permissions:
117+
contents: read
118+
steps:
119+
- name: Setup Node.js
120+
uses: actions/setup-node@v4
121+
with:
122+
node-version: '22'
123+
registry-url: 'https://registry.npmjs.org'
124+
125+
- name: Download bundler package
126+
uses: actions/download-artifact@v4
127+
with:
128+
name: npm-pkg-bundler
129+
path: pkg-bundler
130+
131+
- name: Show package contents
132+
run: |
133+
echo "=== package.json ===" && cat pkg-bundler/package.json && echo ""
134+
echo "=== Files ===" && ls -la pkg-bundler/
135+
136+
- name: Publish (dry-run)
137+
if: github.event.inputs.publish_target == 'dry-run' || (github.event_name == 'push' && contains(github.ref, 'rc'))
138+
working-directory: pkg-bundler
139+
run: npm publish --access public --dry-run
140+
env:
141+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
142+
143+
- name: Publish to npm
144+
if: github.event.inputs.publish_target == 'npm' || (github.event_name == 'push' && !contains(github.ref, 'rc'))
145+
working-directory: pkg-bundler
146+
run: |
147+
NPM_TAG="${{ github.event.inputs.npm_tag || 'latest' }}"
148+
echo "Publishing ${NPM_PACKAGE} with tag: ${NPM_TAG}"
149+
npm publish --access public --tag "${NPM_TAG}"
150+
env:
151+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
152+
153+
- name: Verify published package
154+
if: github.event.inputs.publish_target == 'npm' || (github.event_name == 'push' && !contains(github.ref, 'rc'))
155+
run: |
156+
sleep 10
157+
npm view ${{ env.NPM_PACKAGE }} version

0 commit comments

Comments
 (0)