# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//packages/package.gni")

declare_args() {
  # Additional SSH authorized_keys file to include in the build.
  # For example:
  #   extra_authorized_keys_file=\"$HOME/.ssh/id_rsa.pub\"
  extra_authorized_keys_file = ""
}

package("developer-keys") {
  system_image = true

  deps = [
    ":all",
  ]

  resources = [
    {
      path = rebase_path("$root_out_dir/ssh-keys/authorized_keys")
      dest = "ssh/authorized_keys"
    },

    {
      path = rebase_path("$root_out_dir/ssh-keys/ssh_host_ed25519_key")
      dest = "ssh/ssh_host_ed25519_key"
    },

    {
      path = rebase_path("$root_out_dir/ssh-keys/ssh_host_ed25519_key.pub")
      dest = "ssh/ssh_host_ed25519_key.pub"
    },
  ]
}

group("all") {
  public_deps = [
    ":authorized_keys",
    ":host_key",
    ":id_key",
    ":ssh_config",
  ]
}

keys_dir = "${root_build_dir}/ssh-keys"

action("host_key") {
  key_file = "${keys_dir}/ssh_host_ed25519_key"
  script = "ssh-keygen-wrapper"
  args = [
    "ed25519",
    rebase_path(key_file),
  ]
  outputs = [
    key_file,
    key_file + ".pub",
  ]
}

action("id_key") {
  key_file = "${keys_dir}/id_ed25519"
  script = "ssh-keygen-wrapper"
  args = [
    "ed25519",
    rebase_path(key_file),
  ]
  outputs = [
    key_file,
    key_file + ".pub",
  ]
}

action("authorized_keys") {
  inputs = [
    "${keys_dir}/id_ed25519.pub",
  ]
  if (extra_authorized_keys_file != "") {
    inputs += [ extra_authorized_keys_file ]
  }
  outputs = [
    "${keys_dir}/authorized_keys",
  ]
  deps = [
    ":id_key",
  ]

  script = "concat_authorized_keys.sh"
  args = rebase_path(outputs + inputs)
}

action("ssh_config") {
  config_file = "${keys_dir}/ssh_config"
  script = "generate_ssh_config.sh"
  args = [
    rebase_path("${keys_dir}/id_ed25519"),
    rebase_path(config_file),
  ]
  outputs = [
    config_file,
  ]
}
