#pragma once

#include <cstdint>
#include <expected>
#include <filesystem>
#include <string_view>

enum class cli_args_parse_err : std::uint8_t {
    not_enough_args,
    invalid_argument,
};

class cli {
  public:
    static std::expected<cli, cli_args_parse_err> try_construct(int argc, char** argv);

    static void             print_usage();
    static std::string_view cli_args_parse_err_str(cli_args_parse_err err);

  public:
    std::filesystem::path root_path {};
    bool                  prefer_x11 = false;
};
