| // Copyright 2020 The Chromium Authors |
| // 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 "base/containers/contains.h" |
| #include "base/strings/string_util.h" |
| #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 GetVersionString(const std::string& cast_release_number, |
| const std::string& cast_incremental_number) { |
| if (cast_release_number.empty() || cast_incremental_number.empty()) { |
| return VersionToCrashString(CAST_BUILD_REVISION); |
| } |
| return VersionToCrashString( |
| base::JoinString({cast_release_number, cast_incremental_number}, ".")); |
| } |
| |
| const std::string VersionToVariant(const std::string& cast_build_revision) { |
| for (const std::string& variant : {kEngVariant, kUserVariant}) { |
| if (base::Contains(cast_build_revision, variant)) { |
| return variant; |
| } |
| } |
| return CAST_IS_DEBUG_BUILD() ? kEngVariant : kUserVariant; |
| } |
| |
| const std::string GetBuildVariant() { |
| return VersionToVariant(CAST_BUILD_REVISION); |
| } |
| |
| } // namespace chromecast |