Android-cuttlefish cvd tool
command_request.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2022 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
17#pragma once
18
19#include <sys/socket.h>
20#include <sys/types.h>
21
22#include <initializer_list>
23#include <string>
24#include <string_view>
25#include <vector>
26
30
31namespace cuttlefish {
32
34 public:
35 const cvd_common::Envs& Env() const { return env_; }
36
38
39 const std::string& Subcommand() const { return subcommand_; }
40 const std::vector<std::string>& SubcommandArguments() const {
42 }
43
44 private:
48
52
53 std::string subcommand_;
54 std::vector<std::string> subcommand_arguments_;
55};
56
58 public:
60
61 template <typename T>
63 for (auto&& arg : args) {
64 args_.emplace_back(arg);
65 }
66 return *this;
67 }
68
69 template <typename T>
71 for (auto&& arg : args) {
72 args_.emplace_back(arg);
73 }
74 return *this;
75 }
76
78 std::initializer_list<std::string_view>) &;
80 std::initializer_list<std::string_view>) &&;
81
82 template <typename T>
84 for (auto&& arg : args) {
85 selector_args_.emplace_back(arg);
86 }
87 return *this;
88 }
89
90 template <typename T>
92 for (auto&& arg : args) {
93 selector_args_.emplace_back(arg);
94 }
95 return *this;
96 }
97
99 std::initializer_list<std::string_view>) &;
101 std::initializer_list<std::string_view>) &&;
102
105
106 CommandRequestBuilder& AddEnvVar(std::string key, std::string val) &;
107 CommandRequestBuilder AddEnvVar(std::string key, std::string val) &&;
108
110
111 private:
115};
116
117} // namespace cuttlefish
Definition: expected.h:86
Definition: command_request.h:57
cvd_common::Envs env_
Definition: command_request.h:113
cvd_common::Args selector_args_
Definition: command_request.h:114
CommandRequestBuilder & AddEnvVar(std::string key, std::string val) &
Definition: command_request.cpp:89
CommandRequestBuilder & AddSelectorArguments(T &&args) &
Definition: command_request.h:83
CommandRequestBuilder & AddArguments(T &&args) &
Definition: command_request.h:62
CommandRequestBuilder & SetEnv(cvd_common::Envs) &
Definition: command_request.cpp:79
CommandRequestBuilder AddArguments(T &&args) &&
Definition: command_request.h:70
Result< CommandRequest > Build() &&
Definition: command_request.cpp:101
cvd_common::Args args_
Definition: command_request.h:112
CommandRequestBuilder AddSelectorArguments(T &&args) &&
Definition: command_request.h:91
Definition: command_request.h:33
const cvd_common::Envs & Env() const
Definition: command_request.h:35
cvd_common::Envs env_
Definition: command_request.h:50
selector::SelectorOptions selectors_
Definition: command_request.h:51
std::vector< std::string > subcommand_arguments_
Definition: command_request.h:54
const std::string & Subcommand() const
Definition: command_request.h:39
const std::vector< std::string > & SubcommandArguments() const
Definition: command_request.h:40
const selector::SelectorOptions & Selectors() const
Definition: command_request.h:37
std::string subcommand_
Definition: command_request.h:53
CommandRequest(cvd_common::Args args, cvd_common::Envs env, selector::SelectorOptions selectors)
Definition: command_request.cpp:33
cvd_common::Args args_
Definition: command_request.h:49
std::vector< std::string > Args
Definition: types.h:25
std::unordered_map< std::string, std::string > Envs
Definition: types.h:26
Definition: alloc_utils.cpp:23
Definition: selector_common_parser.h:29