install-toolchain:
    rustup install

update:
    cargo update

check:
    cargo check

build:
    cargo build --release

build-wasm:
    rustup target add wasm32-unknown-unknown
    cargo build --release --target wasm32-unknown-unknown

test:
    cargo test --all-features

lint-rust-clippy:
    cargo clippy

lint-rust-clippy-fix:
    cargo clippy --fix --allow-dirty --allow-staged

lint-rust-rustfmt:
    cargo fmt --all -- --check

lint-rust-rustfmt-fix:
    cargo fmt --all

run: run-rust run-python run-swift run-javascript

run-rust: build
    cargo run --release

run-python: build
    python3 python/calculator.py

run-swift: build
    swiftc -I include target/release/libcalculator.a swift/Calculator.swift -o target/swift-main
    ./target/swift-main

run-javascript: build-wasm
    node javascript/calculator.mjs
