Android-cuttlefish cvd tool
android_build_string.h
Go to the documentation of this file.
1//
2// Copyright (C) 2023 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
18#include <optional>
19#include <string>
20#include <variant>
21#include <vector>
22
25
26namespace cuttlefish {
27
29 std::string branch_or_id;
30 std::optional<std::string> target;
31 std::optional<std::string> filepath;
32};
33
34std::ostream& operator<<(std::ostream& out,
35 const DeviceBuildString& build_string);
36bool operator==(const DeviceBuildString& lhs, const DeviceBuildString& rhs);
37bool operator!=(const DeviceBuildString& lhs, const DeviceBuildString& rhs);
38
40 std::vector<std::string> paths;
41 std::string target;
42 std::optional<std::string> filepath;
43};
44
45std::ostream& operator<<(std::ostream& out,
46 const DirectoryBuildString& build_string);
47bool operator==(const DirectoryBuildString& lhs,
48 const DirectoryBuildString& rhs);
49bool operator!=(const DirectoryBuildString& lhs,
50 const DirectoryBuildString& rhs);
51
52using BuildString = std::variant<DeviceBuildString, DirectoryBuildString>;
53
54std::ostream& operator<<(std::ostream& out, const BuildString& build_string);
55
56std::ostream& operator<<(std::ostream& out,
57 const std::optional<BuildString>& build_string);
58
59std::optional<std::string> GetFilepath(const BuildString& build_string);
60
61void SetFilepath(BuildString& build_string, const std::string& value);
62
63Result<BuildString> ParseBuildString(const std::string& build_string);
64
65Flag GflagsCompatFlag(const std::string& name,
66 std::optional<BuildString>& value);
67Flag GflagsCompatFlag(const std::string& name,
68 std::vector<std::optional<BuildString>>& value);
69
70BuildString WithFallbackTarget(BuildString build_string, std::string fallback);
71
72} // namespace cuttlefish
Definition: expected.h:86
Definition: flag_parser.h:73
Definition: alloc_utils.cpp:23
Result< BuildString > ParseBuildString(const std::string &build_string)
Definition: android_build_string.cpp:161
Flag GflagsCompatFlag(const std::string &name)
Definition: flag_parser.cpp:583
bool operator!=(const DeviceBuildString &lhs, const DeviceBuildString &rhs)
Definition: android_build_string.cpp:115
std::ostream & operator<<(std::ostream &out, Arch arch)
Definition: architecture.cpp:67
bool operator==(const DeviceBuildString &lhs, const DeviceBuildString &rhs)
Definition: android_build_string.cpp:110
BuildString WithFallbackTarget(BuildString build_string, std::string fallback)
Definition: android_build_string.cpp:230
std::optional< std::string > GetFilepath(const Build &build)
Definition: android_build_api.cpp:433
void SetFilepath(BuildString &build_string, const std::string &value)
Definition: android_build_string.cpp:157
std::variant< DeviceBuildString, DirectoryBuildString > BuildString
Definition: android_build_string.h:52
Definition: android_build_string.h:28
std::optional< std::string > target
Definition: android_build_string.h:30
std::optional< std::string > filepath
Definition: android_build_string.h:31
std::string branch_or_id
Definition: android_build_string.h:29
Definition: android_build_string.h:39
std::vector< std::string > paths
Definition: android_build_string.h:40
std::string target
Definition: android_build_string.h:41
std::optional< std::string > filepath
Definition: android_build_string.h:42