#include <fstream>
#include <iostream>
#include <string>

#include "rules_cc/cc/runfiles/runfiles.h"

using rules_cc::cc::runfiles::Runfiles;

inline constexpr std::string_view someFile = "examples/runfile.txt";

int main(int argc, char** argv) {
  std::string error;
  const auto runfiles =
      Runfiles::Create(argv[0], BAZEL_CURRENT_REPOSITORY, &error);
  if (runfiles == nullptr) {
    std::cerr << "Failed to create Runfiles object" << error << "\n";
    return 1;
  }

  std::string root = BAZEL_CURRENT_REPOSITORY;
  if (root == "") {
    root = "_main";
  }
  const std::string realPathToSomeFile =
      runfiles->Rlocation(root + "/" + std::string{someFile});

  std::cout << "The content of the runfile is:" << std::endl
            << std::ifstream(realPathToSomeFile).rdbuf();

  return 0;
}
