[tasks.flowy_clean]
run_task = { name = ["cargo_clean","rm_macro_build_cache", "rm_rust_generated_files", "rm_dart_generated_files"] }

[tasks.cargo_clean]
script = [
  """
    cd rust-lib
    cargo clean -q

    cd ../../shared-lib
    cargo clean -q
  """,
]
script_runner = "@shell"


[tasks.rm_macro_build_cache]
script = [
  """
    path = canonicalize ../shared-lib/lib-infra/.cache
    if is_path_exists ${path}
      rm -rf ${path}
    end
  """,
]
script_runner = "@duckscript"

#Rust Clean
[tasks.rm_rust_generated_files]
run_task = { name = ["rm_rust_lib_generated_protobuf_files", "rm_shared_lib_generated_protobuf_files"] }

[tasks.rm_rust_lib_generated_protobuf_files]
private = true
env = { "rm_proto_path" = "./rust-lib/**/resources/proto", "rm_protobuf_path" = "./rust-lib/**/protobuf" }
run_task = { name = "remove_files_with_pattern" }

[tasks.rm_shared_lib_generated_protobuf_files]
private = true
env = { "rm_proto_path" = "../shared-lib/**/resources/proto", "rm_protobuf_path" = "../shared-lib/**/protobuf" }
run_task = { name = "remove_files_with_pattern" }


#Dart Clean
[tasks.rm_dart_generated_files]
env = { "dart_flowy_sdk_path" = "./app_flowy/packages/flowy_sdk/" }
run_task = { name = ["rm_dart_generated_protobuf_files"] }

[tasks.rm_dart_generated_protobuf_files]
private = true
script = [
  """
  protobuf_file_paths = glob_array ${dart_flowy_sdk_path}/lib/protobuf

  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.remove_files_with_pattern]
private = true
script = [
  """
  proto_file_paths = glob_array ${rm_proto_path}
  is_proto_file_paths_empty = array_is_empty ${proto_file_paths}
  if not ${is_proto_file_paths_empty}
    echo Remove generated proto files:
    for path in ${proto_file_paths}
      echo remove ${path}
      rm -rf ${path}
    end
  end

  protobuf_file_paths = glob_array ${rm_protobuf_path}
  is_protobuf_file_paths_empty = array_is_empty ${protobuf_file_paths}
  if not ${is_protobuf_file_paths_empty}
    echo Remove generated protobuf files:
    for path in ${protobuf_file_paths}
      echo remove ${path}
      rm -rf ${path}
    end
  end

  """,
]
script_runner = "@duckscript"