# Lists the available actions
default:
	@just --list

# Test coverage
coverage: bun-test deno-coverage

# Typescript checking
check: deno-check bun-check

docs:
	deno doc --html --unstable-ffi --name="Scroll" ./src/scroll.ts ./src/common/mod.ts ./src/deno/mod.ts ./src/bun/mod.ts

# Reformat the code
fmt:
	deno fmt

# Run tests with all the runtimes
test: deno-test bun-test

# Run all code-quality related tasks
quality: check test

# Clean up any generated files
clean:
	rm -rf .deno-cover
	rm -rf coverage
	rm -rf docs
	rm -f scroll.log
	rm -f scroll.err
	rm -f tsconfig.tsbuildinfo

##########################################################################################
# Bun-specific commands
##########################################################################################

# Check code with actual Typescript compiler
bun-check:
	bunx tsc

# Test with bun
bun-test:
	bun test --coverage

# Run with bun
bun-run file="":
	bun run ./src/scroll.ts {{file}}

##########################################################################################
# Deno-specific commands
##########################################################################################

# Lint code and check types
deno-check:
	deno lint
	deno check --unstable-ffi  --all -c deno.jsonc ./src/deno/*.ts ./src/common/*.ts

# Test with deno
deno-test:
	deno test --allow-all --unstable-ffi

# Create test coverage report with deno
deno-coverage:
	./coverage.sh

# Run with deno
deno-run file="":
	deno run --allow-all --allow-ffi --deny-hrtime --unstable-ffi ./src/scroll.ts {{file}}