# 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/fidl/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//peridot/lib/module_manifest:module_facet_reader",
    "//peridot/public/lib/entity/cpp:json",
  ]

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

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",
    "//garnet/public/lib/fxl",
    "//peridot/bin/sessionmgr/storage:story_storage",
    "//peridot/lib/fidl:clone",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/async/cpp:operation",
    "//peridot/public/lib/entity/cpp:json",
  ]
}

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/fidl/fuchsia.modular",
    "//peridot/public/lib/async/cpp:operation",
  ]
}

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/fidl/fuchsia.modular",
    "//peridot/public/lib/async/cpp:operation",
  ]
}

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",
    "//garnet/public/lib/fxl",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/async/cpp:operation",
  ]
}

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/fidl/fuchsia.modular",
    "//peridot/public/lib/async/cpp:operation",
  ]
}

