#
# Copyright 2017 The Abseil 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.

# This package contains `absl::Status`.
# It will expand later to have utilities around `Status` like `StatusOr`,
# `StatusBuilder` and macros.

load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
load(
    "//absl:copts/configure_copts.bzl",
    "ABSL_DEFAULT_COPTS",
    "ABSL_TEST_COPTS",
)

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

licenses(["notice"])

cc_library(
    name = "status",
    srcs = [
        "internal/status_internal.h",
        "status.cc",
        "status_payload_printer.cc",
    ],
    hdrs = [
        "status.h",
        "status_payload_printer.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    features = ["-no_undefined"],
    deps = [
        "//absl/base:atomic_hook",
        "//absl/base:config",
        "//absl/base:core_headers",
        "//absl/base:raw_logging_internal",
        "//absl/container:inlined_vector",
        "//absl/debugging:stacktrace",
        "//absl/debugging:symbolize",
        "//absl/strings",
        "//absl/strings:cord",
        "//absl/strings:str_format",
        "//absl/types:optional",
    ],
)

cc_test(
    name = "status_test",
    srcs = ["status_test.cc"],
    copts = ABSL_TEST_COPTS,
    deps = [
        ":status",
        "//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_library(
    name = "statusor",
    srcs = [
        "internal/statusor_internal.h",
        "statusor.cc",
    ],
    hdrs = [
        "statusor.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    features = ["-no_undefined"],
    deps = [
        ":status",
        "//absl/base:core_headers",
        "//absl/base:raw_logging_internal",
        "//absl/meta:type_traits",
        "//absl/strings",
        "//absl/types:variant",
        "//absl/utility",
    ],
)

cc_test(
    name = "statusor_test",
    size = "small",
    srcs = ["statusor_test.cc"],
    deps = [
        ":status",
        ":statusor",
        "//absl/base",
        "//absl/memory",
        "//absl/types:any",
        "//absl/utility",
        "@com_google_googletest//:gtest_main",
    ],
)
