# Copyright 2023 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

load("@rules_python//python:defs.bzl", "py_binary")

package(default_visibility = ["//visibility:public"])

py_binary(
    name = "flash_device",
    srcs = ["sample_project_tools/flash_device.py"],
)

py_library(
    name = "console_library",
    srcs = ["sample_project_tools/console.py"],
    imports = ["."],
    deps = [
        "//examples/03_rpc:rpc_example_protos_py_pb2",
        "@pigweed//pw_protobuf:common_py_pb2",
        "@pigweed//pw_rpc:echo_py_pb2",
        "@pigweed//pw_system/py:pw_system_lib",
    ],
)

py_binary(
    name = "console",
    srcs = ["sample_project_tools/console.py"],
    deps = [
        ":console_library",
    ],
)

py_binary(
    name = "device_sim",
    srcs = ["sample_project_tools/device_sim.py"],
    deps = [
        ":console_library",
    ],
)
