// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chromecast/crash/build_info.h"

#include <string>

#include "chromecast/base/version.h"

namespace chromecast {
namespace {

constexpr char kEngVariant[] = "eng";
constexpr char kUserVariant[] = "user";

}  // namespace

const std::string VersionToCrashString(const std::string& cast_build_revision) {
  // Incremental number for eng+user builds is too long for Crash server
  // so cap it to "eng" or "user".
  for (std::string infix : {kEngVariant, kUserVariant}) {
    size_t index = cast_build_revision.find(infix);
    if (index != std::string::npos) {
      return cast_build_revision.substr(
          0, index + infix.size());  // Truncate after ".eng" / ".user".
    }
  }
  return cast_build_revision;
}

const std::string GetVersionString() {
  return VersionToCrashString(CAST_BUILD_REVISION);
}

const std::string VersionToVariant(const std::string& cast_build_revision) {
  for (std::string variant : {kEngVariant, kUserVariant}) {
    if (cast_build_revision.find(variant) != std::string::npos) {
      return variant;
    }
  }
  return CAST_IS_DEBUG_BUILD() ? kEngVariant : kUserVariant;
}

const std::string GetBuildVariant() {
  return VersionToVariant(CAST_BUILD_REVISION);
}

}  // namespace chromecast
