variable "kubeconfig" {
  type      = string
  sensitive = true
}

variable "path" {
  type = string
}

data "local_command" "ensure_kubeconfig_dir" {
  # to avoid "no such file or directory" error when kubeconfig file is created in a non-exist directory
  command   = "mkdir"
  arguments = ["-p", dirname(var.path)]
}

data "local_command" "ensure_kubeconfig" {
  # to avoid "no such file or directory" error in plan stage
  command    = "touch"
  arguments  = [var.path]
  depends_on = [data.local_command.ensure_kubeconfig_dir]
}

data "local_command" "kubeconfig" {
  # local_file resource will cause "noise" in plan so we workaround it use a data block
  command    = "tee"
  arguments  = [var.path]
  stdin      = var.kubeconfig
  depends_on = [data.local_command.ensure_kubeconfig]
}

data "local_command" "kubeconfig_path" {
  # to avoid kubernetes provider init before kubeconfig file ready
  command    = "echo"
  arguments  = ["-n", var.path]
  depends_on = [data.local_command.kubeconfig]
}

output "path" {
  value = data.local_command.kubeconfig_path.stdout
}