# Copyright 2018 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.

source_set("operation_calls") {
  public_deps = [
    ":add_mod_call",
    ":find_modules_call",
    ":get_link_path_for_parameter_name_call",
    ":get_types_from_entity_call",
    ":initialize_chain_call",
  ]
}

source_set("add_mod_call") {
  sources = [
    "add_mod_call.cc",
    "add_mod_call.h",
  ]

  deps = [
    ":find_modules_call",
    ":get_link_path_for_parameter_name_call",
    ":get_types_from_entity_call",
    ":initialize_chain_call",
    "//garnet/public/lib/fsl",
    "//peridot/lib/module_manifest:module_facet_reader",
    "//peridot/public/lib/entity/cpp:json",
    "//sdk/lib/fidl/cpp",
    "//src/lib/fxl",
  ]

  public_deps = [
    "//peridot/bin/sessionmgr/storage:story_storage",
    "//peridot/lib/fidl:clone",
    "//peridot/public/lib/async/cpp:operation",
    "//sdk/fidl/fuchsia.modular",
  ]
}

source_set("find_modules_call") {
  sources = [
    "find_modules_call.cc",
    "find_modules_call.h",
  ]

  deps = [
    ":get_link_path_for_parameter_name_call",
    ":get_types_from_entity_call",
    "//garnet/public/lib/fsl",
    "//peridot/bin/sessionmgr/storage:story_storage",
    "//peridot/lib/fidl:clone",
    "//peridot/public/lib/async/cpp:operation",
    "//peridot/public/lib/entity/cpp:json",
    "//peridot/public/lib/fostr/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.modular",
    "//src/lib/fxl",
  ]
}

source_set("get_link_path_for_parameter_name_call") {
  sources = [
    "get_link_path_for_parameter_name_call.cc",
    "get_link_path_for_parameter_name_call.h",
  ]

  deps = [
    "//peridot/bin/sessionmgr/storage:story_storage",
    "//peridot/lib/fidl:clone",
    "//peridot/public/lib/async/cpp:operation",
    "//sdk/fidl/fuchsia.modular",
  ]
}

source_set("initialize_chain_call") {
  sources = [
    "initialize_chain_call.cc",
    "initialize_chain_call.h",
  ]

  deps = [
    ":set_link_value_call",
    "//peridot/bin/sessionmgr/storage:story_storage",
    "//peridot/public/lib/async/cpp:operation",
    "//sdk/fidl/fuchsia.modular",
  ]
}

source_set("get_types_from_entity_call") {
  sources = [
    "get_types_from_entity_call.cc",
    "get_types_from_entity_call.h",
  ]

  deps = [
    "//garnet/public/lib/fsl",
    "//peridot/public/lib/async/cpp:operation",
    "//sdk/fidl/fuchsia.modular",
    "//src/lib/fxl",
  ]
}

source_set("set_link_value_call") {
  sources = [
    "set_link_value_call.cc",
    "set_link_value_call.h",
  ]

  deps = [
    "//peridot/bin/sessionmgr/storage:story_storage",
    "//peridot/public/lib/async/cpp:operation",
    "//sdk/fidl/fuchsia.modular",
  ]
}
