set dotenv-required set dotenv-path := ".env" # 显示所有指令 default: @just --list # 构建系统服务、系统服务安装器、系统服务卸载器,存放到 src-tauri/sidecar 目录下 build-system-service: for name in paw-system-service paw-install-service paw-uninstall-service; do \ echo "Building $name with manifest {{system_service_manifest}}" \ && cargo build --release --bin $name --manifest-path "{{system_service_manifest}}" \ && cp "{{cargo_target_path}}/$name" "src-tauri/sidecar/${name}-{{target_triple}}{{bin_ext}}"; \ done # 构建 proxy-cli,存放到 src-tauri/sidecar 目录下 build-proxy-cli: echo "Building proxy-cli with version {{proxy_version}}" \ && cd "{{proxy_path}}" \ && go build -trimpath -ldflags "-extldflags -s -w -X proxy-service/internal/services.Version={{proxy_version}}" -o "{{rust_path}}/sidecar/paw-core-{{target_triple}}{{bin_ext}}" cmd/client/main.go \ && echo "Finished building proxy-cli, output to {{rust_path}}/sidecar/paw-core-{{target_triple}}{{bin_ext}}" # 格式化代码,并且使用clippy检查代码错误 lint: cargo fmt --manifest-path "{{system_service_manifest}}" --all cargo clippy --manifest-path "{{system_service_manifest}}" --all-targets --all-features -- -D warnings cargo fmt --manifest-path "{{tauri_manifest}}" --all cargo clippy --manifest-path "{{tauri_manifest}}" --all-targets --all-features -- -D warnings # 安装前端依赖 install-frontend-dep: pnpm i # 构建Paw-GUI,输出到 src-tauri/target/release/bundle 目录下 build: build-system-service install-frontend-dep pnpm tauri build # 启动Paw-GUI开发模式 dev: build-system-service install-frontend-dep pnpm tauri dev # 清理所有生成的文件 clean: cargo clean --manifest-path "{{tauri_manifest}}" # 由于使用了workspace,所以直接清理根项目即可 -rm -r "{{rust_path}}/sidecar" # 运行所有测试 test: build-proxy-cli build-system-service cargo test --manifest-path "{{tauri_manifest}}" --workspace proxy_path := justfile_directory() / "../proxy" proxy_version := `if v="$(git tag --list '*paw' | sort -V | tail -n 1)" && [ -n "$v" ]; then echo "$v"; else echo "v0.0.1-$(git rev-parse --short HEAD)"; fi` rust_path := justfile_directory() / "src-tauri" tauri_manifest := rust_path / "Cargo.toml" system_service_manifest := rust_path / "system-service/Cargo.toml" cargo_target_path := rust_path / "target/release" bin_ext := if os() == "windows" { ".exe" } else { "" } target_triple := ```case "$(uname)-$(uname -m)" in "Darwin-x86_64") echo "x86_64-apple-darwin" ;; "Darwin-arm64") echo "aarch64-apple-darwin" ;; "Linux-x86_64") echo "x86_64-unknown-linux-gnu" ;; "MINGW"*"-x86_64") echo "x86_64-pc-windows-msvc" ;; *) echo "Unsupported platform" && exit 1 ;; esac```