check-not-broken:
bun i
make generate-error-code-rs
make check-lint
make check-build
make build-wasm-web
make build-wasm-node
make build-wasm-bundler
make modify-package-name-web
make modify-package-name-node
make modify-package-name-bundler
make prepare-test
make test-rust
make test-resources
make test-e2e
make test-generator
check-local:
make check-lint
make check-build
make test-rust
make test-resources
install:
rustup target add wasm32-unknown-unknown
rustup component add rustfmt clippy
cargo install typeshare-cli
cargo install cargo-insta
bun i
bun lefthook install
run:
cargo run
build:
cargo build
clean:
cargo clean
build-wasm-web:
wasm-pack build \
--release \
--scope lainnao \
--out-dir ./pkg/pkg-web \
--target web
make generate-ts-declare-file-for-pkg-web
modify-package-name-web:
cd pkg/pkg-web && npx change-package-name @lainnao\/chord-progression-parser-web && bun i
build-wasm-node:
wasm-pack build \
--release \
--scope lainnao \
--out-dir ./pkg/pkg-node \
--target nodejs
make generate-ts-declare-file-for-pkg-node
modify-package-name-node:
cd pkg/pkg-node && npx change-package-name @lainnao\/chord-progression-parser-node && bun i
build-wasm-bundler:
wasm-pack build \
--release \
--scope lainnao \
--out-dir ./pkg/pkg-bundler \
--target bundler
make generate-ts-declare-file-for-pkg-bundler
make add-package-json-type-module-for-pkg-bundler
modify-package-name-bundler:
cd pkg/pkg-bundler && npx change-package-name @lainnao\/chord-progression-parser-bundler && bun i
generate-error-code-rs:
bun resources/error_code_message_map.util.ts
generate-ts-declare-file-for-pkg-web:
make generate-ts-types
sed -i.bak 's/any/ParsedResult/g' pkg/pkg-web/chord_progression_parser.d.ts && rm pkg/pkg-web/chord_progression_parser.d.ts.bak
npx tsc resources/error_code_message_map.ts --declaration --allowJs --module CommonJS --outDir pkg/pkg-web
npx tsc resources/generatedTypes.ts --declaration --allowJs --module CommonJS --outDir pkg/pkg-web
sed -i.bak 's/"files": \[/"files": \[\
"error_code_message_map.js", "error_code_message_map.d.ts",/g' pkg/pkg-web/package.json && rm pkg/pkg-web/package.json.bak
sed -i.bak 's/"files": \[/"files": \[\
"generatedTypes.js", "generatedTypes.ts", "generatedTypes.d.ts",/g' pkg/pkg-web/package.json && rm pkg/pkg-web/package.json.bak
cat resources/additionalType.ts.txt pkg/pkg-web/chord_progression_parser.d.ts > pkg/pkg-web/chord_progression_parser.d.ts.tmp && mv pkg/pkg-web/chord_progression_parser.d.ts.tmp pkg/pkg-web/chord_progression_parser.d.ts
generate-ts-declare-file-for-pkg-node:
make generate-ts-types
sed -i.bak 's/any/ParsedResult/g' pkg/pkg-node/chord_progression_parser.d.ts && rm pkg/pkg-node/chord_progression_parser.d.ts.bak
npx tsc resources/error_code_message_map.ts --declaration --allowJs --module CommonJS --outDir pkg/pkg-node
npx tsc resources/generatedTypes.ts --declaration --allowJs --module CommonJS --outDir pkg/pkg-node
sed -i.bak 's/"files": \[/"files": \[\
"error_code_message_map.js", "error_code_message_map.d.ts",/g' pkg/pkg-node/package.json && rm pkg/pkg-node/package.json.bak
sed -i.bak 's/"files": \[/"files": \[\
"generatedTypes.js", "generatedTypes.ts", "generatedTypes.d.ts",/g' pkg/pkg-node/package.json && rm pkg/pkg-node/package.json.bak
cat resources/additionalType.ts.txt pkg/pkg-node/chord_progression_parser.d.ts > pkg/pkg-node/chord_progression_parser.d.ts.tmp && mv pkg/pkg-node/chord_progression_parser.d.ts.tmp pkg/pkg-node/chord_progression_parser.d.ts
generate-ts-declare-file-for-pkg-bundler:
make generate-ts-types
sed -i.bak 's/any/ParsedResult/g' pkg/pkg-bundler/chord_progression_parser.d.ts && rm pkg/pkg-bundler/chord_progression_parser.d.ts.bak
npx tsc resources/error_code_message_map.ts --declaration --allowJs --module NodeNext --moduleResolution nodenext --outDir pkg/pkg-bundler
npx tsc resources/generatedTypes.ts --declaration --allowJs --module NodeNext --moduleResolution nodenext --outDir pkg/pkg-bundler
sed -i.bak 's/"files": \[/"files": \[\
"error_code_message_map.js", "error_code_message_map.d.ts", /g' pkg/pkg-bundler/package.json && rm pkg/pkg-bundler/package.json.bak
sed -i.bak 's/"files": \[/"files": \[\
"generatedTypes.js", "generatedTypes.ts", "generatedTypes.d.ts",/g' pkg/pkg-bundler/package.json && rm pkg/pkg-bundler/package.json.bak
cat resources/additionalType.ts.txt pkg/pkg-bundler/chord_progression_parser.d.ts > pkg/pkg-bundler/chord_progression_parser.d.ts.tmp && mv pkg/pkg-bundler/chord_progression_parser.d.ts.tmp pkg/pkg-bundler/chord_progression_parser.d.ts
add-package-json-type-module-for-pkg-bundler:
sed -i.bak 's/"name": "\(.*\)"/"name": "\1",\n "type": "module"/' pkg/pkg-bundler/package.json && rm pkg/pkg-bundler/package.json.bak
generate-ts-types:
typeshare ./src \
--lang=typescript \
--output-file=resources/generatedTypes.ts
bun resources/fix_generated_types.ts
fmt:
cargo fmt
fix:
cargo fix
prepare-test:
cd e2e-test/node && sed -i.bak '/chord-progression-parser/d' package.json && rm package.json.bak
cd e2e-test/bundler && sed -i.bak '/chord-progression-parser/d' package.json && rm package.json.bak
cd e2e-test/web && sed -i.bak '/chord-progression-parser/d' package.json && rm package.json.bak
cd e2e-test/node && bun add ../../pkg/pkg-node
cd e2e-test/bundler && bun add ../../pkg/pkg-bundler
cd e2e-test/web && bun add ../../pkg/pkg-web
review-snapshot:
cargo insta review
check-lint:
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --all -- --check
check-build:
cargo check
test-rust:
cargo test --all-targets --all-features
test-e2e:
cd e2e-test/node && bun run test
cd e2e-test/bundler && npx playwright install --with-deps && bun run test
make run-web-e2e
test-generator:
cd _tools/chord-progression-generator && bun i && bun run test
run-web-e2e:
rm -rf ./e2e-test/web/generated-src && cp -r ./pkg/pkg-web ./e2e-test/web/generated-src
cp ./e2e-test/web/original.index.html ./e2e-test/web/generated-src/index.html
cd ./e2e-test/web && npx playwright install --with-deps && bun run test
test-resources:
cd resources && bun test
doc:
cargo doc --open
see-coverage:
cargo llvm-cov --show-missing-lines --open
find-multibyte:
./_tools/find_files_include_multibyte_characters.sh