#include "args.hpp"

namespace monitarr {
auto get_arg(std::string_view arg, int argc, char **argv)
    -> std::optional<std::string> {
  auto cmd_line = std::span(argv, static_cast<std::size_t>(argc)) |
                  std::views::transform(
                      [](char const *val) { return std::string_view(val); });
  auto iter =
      std::ranges::find_if(std::next(cmd_line.begin()), cmd_line.end(),
                           [&arg](auto &&item) -> bool { return arg == item; });
  if (iter == cmd_line.end()) {
    return std::nullopt;
  }

  iter = std::next(iter);
  if (iter == cmd_line.end()) {
    return std::nullopt;
  }

  return std::string{*iter};
}

auto has_arg(std::string_view arg, int argc, char **argv) -> bool {
  auto cmd_line = std::span(argv, static_cast<std::size_t>(argc)) |
                  std::views::transform(
                      [](char const *val) { return std::string_view(val); });
  return std::ranges::find_if(std::next(cmd_line.begin()), cmd_line.end(),
                              [&arg](auto &&item) -> bool {
                                return arg == item;
                              }) != cmd_line.end();
}
} // namespace monitarr
