[tasks.wasm_build]
script_runner = "bash"
script = [
  """
  #!/usr/bin/env bash
  BASE_DIR=$(pwd)
  crates=("lib-dispatch" "lib-infra" "flowy-notification" "flowy-date" "flowy-error" "collab-integrate" "flowy-document")

  # Iterate over each crate and build it
  for crate in "${crates[@]}"; do
    echo "🔥🔥🔥  Building $crate with wasm-pack..."
    cd "$BASE_DIR/rust-lib/$crate" || { echo "Failed to enter directory $crate"; exit 1; }

    wasm-pack build || { echo "Build failed for $crate"; exit 1; }
  done
  """
]


[tasks.web_clean]
description = "Remove all the building artifacts"
run_task = { name = [
  "rust_lib_clean",
  "rm_macro_build_cache",
  "rm_rust_generated_files",
  "rm_web_generated_protobuf_files",
  "rm_web_generated_event_files",
  "rm_pkg",
] }

[tasks.rm_web_generated_protobuf_files]
private = true
script = ["""
  protobuf_file_paths = glob_array ${WEB_BACKEND_SERVICE_PATH}/models
  if not array_is_empty ${protobuf_file_paths}
    echo Remove generated protobuf files:
    for path in ${protobuf_file_paths}
        echo remove ${path}
        rm -rf ${path}
    end
  end
  """]
script_runner = "@duckscript"



[tasks.rm_web_generated_event_files]
private = true
script = ["""
  event_file_paths = glob_array ${WEB_BACKEND_SERVICE_PATH}/events
  if not array_is_empty ${event_file_paths}
    echo Remove generated protobuf files:
    for path in ${event_file_paths}
        echo remove ${path}
        rm -rf ${path}
    end
  end
  """]
script_runner = "@duckscript"
