mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 12:19:15 +00:00
## What This PR does Adds a new `oxc-security/api-key` rule that scans for hard-coded API keys. It is broken up into "secret rules", where each one is responsible for finding a different kind of key. It is architecturally identical to how lint rules themselves. This PR also includes the first of these rules, for AWS access key IDs. Logic and rules are based on [keyhunter](https://github.com/Donisaac/keyhunter). I've licensed that repo under GNU GPLv3, but it's my code and I can do what I want with it 😈 (read: I'm fine with it being MIT for oxc). This PR is a complete feature in its own right, but does not represent the end of this work. See https://github.com/oxc-project/backlog/issues/116 to track overall progress.
189 lines
5 KiB
Makefile
Executable file
189 lines
5 KiB
Makefile
Executable file
#!/usr/bin/env -S just --justfile
|
|
|
|
set windows-shell := ["powershell"]
|
|
set shell := ["bash", "-cu"]
|
|
|
|
_default:
|
|
@just --list -u
|
|
|
|
alias r := ready
|
|
alias c := conformance
|
|
alias f := fix
|
|
alias new-typescript-rule := new-ts-rule
|
|
|
|
# Make sure you have cargo-binstall installed.
|
|
# You can download the pre-compiled binary from <https://github.com/cargo-bins/cargo-binstall#installation>
|
|
# or install via `cargo install cargo-binstall`
|
|
# Initialize the project by installing all the necessary tools.
|
|
init:
|
|
cargo binstall cargo-watch cargo-insta typos-cli cargo-shear dprint -y
|
|
|
|
# When ready, run the same CI commands
|
|
ready:
|
|
git diff --exit-code --quiet
|
|
typos
|
|
just fmt
|
|
just check
|
|
just test
|
|
just lint
|
|
just doc
|
|
just ast
|
|
git status
|
|
|
|
# Clone or update submodules
|
|
submodules:
|
|
just clone-submodule tasks/coverage/test262 git@github.com:tc39/test262.git d62fa93c8f9ce5e687c0bbaa5d2b59670ab2ff60
|
|
just clone-submodule tasks/coverage/babel git@github.com:babel/babel.git 3bcfee232506a4cebe410f02042fb0f0adeeb0b1
|
|
just clone-submodule tasks/coverage/typescript git@github.com:microsoft/TypeScript.git a709f9899c2a544b6de65a0f2623ecbbe1394eab
|
|
just clone-submodule tasks/prettier_conformance/prettier git@github.com:prettier/prettier.git 52829385bcc4d785e58ae2602c0b098a643523c9
|
|
|
|
# Install git pre-commit to format files
|
|
install-hook:
|
|
echo -e "#!/bin/sh\njust fmt" > .git/hooks/pre-commit
|
|
chmod +x .git/hooks/pre-commit
|
|
|
|
# --no-vcs-ignores: cargo-watch has a bug loading all .gitignores, including the ones listed in .gitignore
|
|
# use .ignore file getting the ignore list
|
|
# Run `cargo watch`
|
|
watch command:
|
|
cargo watch --no-vcs-ignores -i '*snap*' -x '{{command}}'
|
|
|
|
# Run the example in `parser`, `formatter`, `linter`
|
|
example tool *args='':
|
|
just watch 'run -p oxc_{{tool}} --example {{tool}} -- {{args}}'
|
|
|
|
# Generate AST related boilerplate code.
|
|
# Run this when AST definition is changed.
|
|
ast:
|
|
cargo run -p oxc_ast_tools
|
|
just check
|
|
|
|
# Format all files
|
|
fmt:
|
|
cargo shear --fix # remove all unused dependencies
|
|
cargo fmt --all
|
|
dprint fmt
|
|
|
|
# Run cargo check
|
|
check:
|
|
cargo ck
|
|
|
|
# Run all the tests
|
|
test:
|
|
cargo test
|
|
|
|
# Lint the whole project
|
|
lint:
|
|
cargo lint -- --deny warnings
|
|
|
|
doc:
|
|
RUSTDOCFLAGS='-D warnings' cargo doc --no-deps --document-private-items
|
|
|
|
# Fix all auto-fixable format and lint issues. Make sure your working tree is clean first.
|
|
fix:
|
|
cargo clippy --fix --allow-staged --no-deps
|
|
just fmt
|
|
typos -w
|
|
git status
|
|
|
|
# Run all the conformance tests. See `tasks/coverage`, `tasks/transform_conformance`, `tasks/minsize`
|
|
coverage:
|
|
cargo coverage
|
|
cargo run -p oxc_transform_conformance -- --exec
|
|
cargo run -p oxc_prettier_conformance
|
|
cargo minsize
|
|
|
|
conformance *args='':
|
|
cargo coverage -- {{args}}
|
|
|
|
# Watch oxlint
|
|
watch-oxlint *args='':
|
|
just watch 'run -p oxlint -- {{args}}'
|
|
|
|
# Build oxlint in release build
|
|
oxlint:
|
|
cargo oxlint
|
|
|
|
# Get code coverage
|
|
codecov:
|
|
cargo codecov --html
|
|
|
|
# Run the benchmarks. See `tasks/benchmark`
|
|
benchmark:
|
|
cargo benchmark
|
|
|
|
# Automatically DRY up Cargo.toml manifests in a workspace.
|
|
autoinherit:
|
|
cargo binstall cargo-autoinherit
|
|
cargo autoinherit
|
|
|
|
# Test Transform
|
|
test-transform *args='':
|
|
cargo run -p oxc_transform_conformance -- {{args}}
|
|
cargo run -p oxc_transform_conformance -- --exec {{args}}
|
|
|
|
# Install wasm-pack
|
|
install-wasm:
|
|
cargo binstall wasm-pack
|
|
|
|
watch-wasm:
|
|
cargo watch --no-vcs-ignores -i 'npm/oxc-wasm/**' -- just build-wasm dev
|
|
|
|
build-wasm mode="release":
|
|
wasm-pack build --out-dir ../../npm/oxc-wasm --target web --{{mode}} --scope oxc crates/oxc_wasm
|
|
|
|
# Generate the JavaScript global variables. See `tasks/javascript_globals`
|
|
javascript-globals:
|
|
cargo run -p javascript_globals
|
|
|
|
# Create a new lint rule by providing the ESLint name. See `tasks/rulegen`
|
|
new-rule name:
|
|
cargo run -p rulegen {{name}}
|
|
|
|
new-jest-rule name:
|
|
cargo run -p rulegen {{name}} jest
|
|
|
|
new-ts-rule name:
|
|
cargo run -p rulegen {{name}} typescript
|
|
|
|
new-unicorn-rule name:
|
|
cargo run -p rulegen {{name}} unicorn
|
|
|
|
new-react-rule name:
|
|
cargo run -p rulegen {{name}} react
|
|
|
|
new-jsx-a11y-rule name:
|
|
cargo run -p rulegen {{name}} jsx-a11y
|
|
|
|
new-oxc-rule name:
|
|
cargo run -p rulegen {{name}} oxc
|
|
|
|
new-nextjs-rule name:
|
|
cargo run -p rulegen {{name}} nextjs
|
|
|
|
new-jsdoc-rule name:
|
|
cargo run -p rulegen {{name}} jsdoc
|
|
|
|
new-react-perf-rule name:
|
|
cargo run -p rulegen {{name}} react-perf
|
|
|
|
new-n-rule name:
|
|
cargo run -p rulegen {{name}} n
|
|
|
|
new-promise-rule name:
|
|
cargo run -p rulegen {{name}} promise
|
|
|
|
new-vitest-rule name:
|
|
cargo run -p rulegen {{name}} vitest
|
|
|
|
new-security-rule name:
|
|
cargo run -p rulegen {{name}} security
|
|
|
|
clone-submodule dir url sha:
|
|
git clone --depth=1 {{url}} {{dir}} || true
|
|
cd {{dir}} && git fetch origin {{sha}} && git reset --hard {{sha}}
|
|
|
|
website path:
|
|
cargo run -p website -- linter-rules --table {{path}}/src/docs/guide/usage/linter/generated-rules.md --rule-docs {{path}}/src/docs/guide/usage/linter/rules
|
|
cargo run -p website -- linter-cli > {{path}}/src/docs/guide/usage/linter/generated-cli.md
|
|
cargo run -p website -- linter-schema-markdown > {{path}}/src/docs/guide/usage/linter/generated-config.md
|