diff --git a/justfile b/justfile index 00c83af..1aad062 100644 --- a/justfile +++ b/justfile @@ -1,3 +1,20 @@ +# Allow experimental features like [group(...)] +set unstable := true + +set shell := ["sh", "-c"] + +set windows-shell := ["powershell.exe", "-Command"] + +windows_generate_bindings := "cd native; if (-not $?) { exit 1 }; cargo build --profile dev; if (-not $?) { exit 1 }; cargo run --profile dev --bin uniffi-bindgen -- generate --library target/debug/bdk_dart_ffi.dll --language dart --config uniffi.toml --out-dir ../lib/" + +unix_generate_bindings := "bash ./scripts/generate_bindings.sh" + +windows_clean := "'.dart_tool', 'build', 'native/target', 'coverage', 'bdk_demo/.dart_tool', 'bdk_demo/build', 'example/.dart_tool', 'example/build' | Where-Object { Test-Path $_ } | ForEach-Object { Remove-Item -Recurse -Force $_ }" + +unix_clean := "rm -rf .dart_tool/ build/ native/target/ coverage/ bdk_demo/.dart_tool/ bdk_demo/build/ example/.dart_tool/ example/build/" + +opener := if os_family() == "windows" { "Start-Process" } else if os() == "macos" { "open" } else { "xdg-open" } + [group("Repo")] [doc("Default command; list all available commands.")] @list: @@ -6,7 +23,7 @@ [group("Repo")] [doc("Open repo on GitHub in your default browser.")] repo: - open https://github.com/bitcoindevkit/bdk-dart + @{{ opener }} "https://github.com/bitcoindevkit/bdk-dart" [group("Dart")] [doc("Format the Dart codebase.")] @@ -31,17 +48,19 @@ test *ARGS: [group("Bindings")] [doc("Build native library and regenerate bindings.")] generate-bindings: - bash ./scripts/generate_bindings.sh + {{ if os() == "windows" { windows_generate_bindings } else { unix_generate_bindings } }} [group("Demo")] [doc("Run Flutter analysis for the demo app.")] +[working-directory: "bdk_demo"] demo-analyze: - cd bdk_demo && flutter analyze + flutter analyze [group("Demo")] [doc("Run Flutter tests for the demo app.")] +[working-directory: "bdk_demo"] demo-test *ARGS: - cd bdk_demo && flutter test {{ if ARGS == "" { "" } else { ARGS } }} + flutter test {{ if ARGS == "" { "" } else { ARGS } }} [group("CI")] [doc("Run the same checks as CI.")] @@ -55,11 +74,4 @@ ci: [group("Dart")] [doc("Remove build and tool artifacts to start fresh.")] clean: - rm -rf .dart_tool/ - rm -rf build/ - rm -rf native/target/ - rm -rf coverage/ - rm -rf bdk_demo/.dart_tool/ - rm -rf bdk_demo/build/ - rm -rf example/.dart_tool/ - rm -rf example/build/ + {{ if os() == "windows" { windows_clean } else { unix_clean } }} \ No newline at end of file