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 <compare>
19#include <optional>
20#include <string>
21#include <string_view>
22#include <variant>
23#include <vector>
24
27
28namespace cuttlefish {
29
31 std::string branch_or_id;
32 std::optional<std::string> target;
33 std::optional<std::string> filepath;
34
35 auto operator<=>(const DeviceBuildString&) const = default;
36};
37
38std::ostream& operator<<(std::ostream& out,
39 const DeviceBuildString& build_string);
40
42 std::vector<std::string> paths;
43 std::string target;
44 std::optional<std::string> filepath;
45
46 auto operator<=>(const DirectoryBuildString&) const = default;
47};
48
49std::ostream& operator<<(std::ostream& out,
50 const DirectoryBuildString& build_string);
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(std::string_view 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: flag.h:32
char * name
Definition: libf2fs.c:1403
Definition: alloc_driver.h:20
Flag GflagsCompatFlag(const std::string &name, std::string &value)
Definition: gflags_compat.cpp:280
Result< BuildString > ParseBuildString(std::string_view build_string)
Definition: android_build_string.cpp:143
tl::expected< T, StackTraceError > Result
Definition: result_type.h:30
BuildString WithFallbackTarget(BuildString build_string, std::string fallback)
Definition: android_build_string.cpp:213
std::ostream & operator<<(std::ostream &out, DeviceType device_type)
Definition: device_type.cpp:72
std::optional< std::string > GetFilepath(const Build &build)
Definition: android_build_api.cpp:489
void SetFilepath(BuildString &build_string, const std::string &value)
Definition: android_build_string.cpp:139
std::variant< DeviceBuildString, DirectoryBuildString > BuildString
Definition: android_build_string.h:52
Definition: android_build_string.h:30
std::optional< std::string > target
Definition: android_build_string.h:32
auto operator<=>(const DeviceBuildString &) const =default
std::optional< std::string > filepath
Definition: android_build_string.h:33
std::string branch_or_id
Definition: android_build_string.h:31
Definition: android_build_string.h:41
std::vector< std::string > paths
Definition: android_build_string.h:42
std::string target
Definition: android_build_string.h:43
auto operator<=>(const DirectoryBuildString &) const =default
std::optional< std::string > filepath
Definition: android_build_string.h:44