Android-cuttlefish cvd tool
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
cuttlefish::Command Class Reference

#include <subprocess.h>

Collaboration diagram for cuttlefish::Command:
Collaboration graph
[legend]

Public Member Functions

 Command (std::string executable, SubprocessStopper stopper=KillSubprocess)
 
 Command (Command &&)=default
 
 Command (const Command &)=delete
 
Commandoperator= (const Command &)=delete
 
 ~Command ()
 
const std::string & Executable () const
 
CommandSetExecutable (std::string executable) &
 
Command SetExecutable (std::string executable) &&
 
CommandSetName (std::string name) &
 
Command SetName (std::string name) &&
 
CommandSetExecutableAndName (std::string name) &
 
Command SetExecutableAndName (std::string name) &&
 
CommandSetStopper (SubprocessStopper stopper) &
 
Command SetStopper (SubprocessStopper stopper) &&
 
CommandSetEnvironment (std::vector< std::string > env) &
 
Command SetEnvironment (std::vector< std::string > env) &&
 
CommandAddEnvironmentVariable (const std::string &env_var, const std::string &value) &
 
Command AddEnvironmentVariable (const std::string &env_var, const std::string &value) &&
 
CommandAddEnvironmentVariable (std::string env_var) &
 
Command AddEnvironmentVariable (std::string env_var) &&
 
CommandUnsetFromEnvironment (const std::string &env_var) &
 
Command UnsetFromEnvironment (const std::string &env_var) &&
 
template<typename... Args>
CommandAddParameter (Args... args) &
 
template<typename... Args>
Command AddParameter (Args... args) &&
 
template<typename... Args>
CommandAppendToLastParameter (Args... args) &
 
template<typename... Args>
Command AppendToLastParameter (Args... args) &&
 
CommandRedirectStdIO (Subprocess::StdIOChannel channel, SharedFD shared_fd) &
 
Command RedirectStdIO (Subprocess::StdIOChannel channel, SharedFD shared_fd) &&
 
CommandRedirectStdIO (Subprocess::StdIOChannel subprocess_channel, Subprocess::StdIOChannel parent_channel) &
 
Command RedirectStdIO (Subprocess::StdIOChannel subprocess_channel, Subprocess::StdIOChannel parent_channel) &&
 
CommandSetWorkingDirectory (const std::string &path) &
 
Command SetWorkingDirectory (const std::string &path) &&
 
CommandSetWorkingDirectory (SharedFD dirfd) &
 
Command SetWorkingDirectory (SharedFD dirfd) &&
 
CommandAddPrerequisite (const std::function< Result< void >()> &prerequisite) &
 
Command AddPrerequisite (const std::function< Result< void >()> &prerequisite) &&
 
Subprocess Start (SubprocessOptions options=SubprocessOptions()) const
 
std::string GetShortName () const
 
std::string ToString () const
 
std::string AsBashScript (const std::string &redirected_stdio_path="") const
 

Private Member Functions

template<typename T >
void BuildParameter (std::stringstream *stream, T t)
 
void BuildParameter (std::stringstream *stream, SharedFD shared_fd)
 
template<typename T , typename... Args>
void BuildParameter (std::stringstream *stream, T t, Args... args)
 

Private Attributes

std::optional< std::string > executable_
 
std::vector< std::string > command_
 
std::vector< std::function< Result< void >()> > prerequisites_
 
std::map< SharedFD, int > inherited_fds_ {}
 
std::map< Subprocess::StdIOChannel, int > redirects_ {}
 
std::vector< std::string > env_ {}
 
SubprocessStopper subprocess_stopper_
 
SharedFD working_directory_
 

Friends

std::ostream & operator<< (std::ostream &out, const Command &command)
 

Constructor & Destructor Documentation

◆ Command() [1/3]

cuttlefish::Command::Command ( std::string  executable,
SubprocessStopper  stopper = KillSubprocess 
)

◆ Command() [2/3]

cuttlefish::Command::Command ( Command &&  )
default

◆ Command() [3/3]

cuttlefish::Command::Command ( const Command )
delete

◆ ~Command()

cuttlefish::Command::~Command ( )

Member Function Documentation

◆ AddEnvironmentVariable() [1/4]

Command & cuttlefish::Command::AddEnvironmentVariable ( const std::string &  env_var,
const std::string &  value 
) &
inline

◆ AddEnvironmentVariable() [2/4]

Command cuttlefish::Command::AddEnvironmentVariable ( const std::string &  env_var,
const std::string &  value 
) &&
inline

◆ AddEnvironmentVariable() [3/4]

Command & cuttlefish::Command::AddEnvironmentVariable ( std::string  env_var) &
inline

◆ AddEnvironmentVariable() [4/4]

Command cuttlefish::Command::AddEnvironmentVariable ( std::string  env_var) &&
inline

◆ AddParameter() [1/2]

template<typename... Args>
Command & cuttlefish::Command::AddParameter ( Args...  args) &
inline

◆ AddParameter() [2/2]

template<typename... Args>
Command cuttlefish::Command::AddParameter ( Args...  args) &&
inline

◆ AddPrerequisite() [1/2]

Command & cuttlefish::Command::AddPrerequisite ( const std::function< Result< void >()> &  prerequisite) &

◆ AddPrerequisite() [2/2]

Command cuttlefish::Command::AddPrerequisite ( const std::function< Result< void >()> &  prerequisite) &&

◆ AppendToLastParameter() [1/2]

template<typename... Args>
Command & cuttlefish::Command::AppendToLastParameter ( Args...  args) &
inline

◆ AppendToLastParameter() [2/2]

template<typename... Args>
Command cuttlefish::Command::AppendToLastParameter ( Args...  args) &&
inline

◆ AsBashScript()

std::string cuttlefish::Command::AsBashScript ( const std::string &  redirected_stdio_path = "") const

◆ BuildParameter() [1/3]

void cuttlefish::Command::BuildParameter ( std::stringstream *  stream,
SharedFD  shared_fd 
)
private

◆ BuildParameter() [2/3]

template<typename T >
void cuttlefish::Command::BuildParameter ( std::stringstream *  stream,
t 
)
inlineprivate

◆ BuildParameter() [3/3]

template<typename T , typename... Args>
void cuttlefish::Command::BuildParameter ( std::stringstream *  stream,
t,
Args...  args 
)
inlineprivate

◆ Executable()

const std::string & cuttlefish::Command::Executable ( ) const
inline

◆ GetShortName()

std::string cuttlefish::Command::GetShortName ( ) const
inline

◆ operator=()

Command & cuttlefish::Command::operator= ( const Command )
delete

◆ RedirectStdIO() [1/4]

Command & cuttlefish::Command::RedirectStdIO ( Subprocess::StdIOChannel  channel,
SharedFD  shared_fd 
) &

◆ RedirectStdIO() [2/4]

Command cuttlefish::Command::RedirectStdIO ( Subprocess::StdIOChannel  channel,
SharedFD  shared_fd 
) &&

◆ RedirectStdIO() [3/4]

Command & cuttlefish::Command::RedirectStdIO ( Subprocess::StdIOChannel  subprocess_channel,
Subprocess::StdIOChannel  parent_channel 
) &

◆ RedirectStdIO() [4/4]

Command cuttlefish::Command::RedirectStdIO ( Subprocess::StdIOChannel  subprocess_channel,
Subprocess::StdIOChannel  parent_channel 
) &&

◆ SetEnvironment() [1/2]

Command & cuttlefish::Command::SetEnvironment ( std::vector< std::string >  env) &
inline

◆ SetEnvironment() [2/2]

Command cuttlefish::Command::SetEnvironment ( std::vector< std::string >  env) &&
inline

◆ SetExecutable() [1/2]

Command & cuttlefish::Command::SetExecutable ( std::string  executable) &
inline

◆ SetExecutable() [2/2]

Command cuttlefish::Command::SetExecutable ( std::string  executable) &&
inline

◆ SetExecutableAndName() [1/2]

Command & cuttlefish::Command::SetExecutableAndName ( std::string  name) &
inline

◆ SetExecutableAndName() [2/2]

Command cuttlefish::Command::SetExecutableAndName ( std::string  name) &&
inline

◆ SetName() [1/2]

Command & cuttlefish::Command::SetName ( std::string  name) &
inline

◆ SetName() [2/2]

Command cuttlefish::Command::SetName ( std::string  name) &&
inline

◆ SetStopper() [1/2]

Command & cuttlefish::Command::SetStopper ( SubprocessStopper  stopper) &
inline

◆ SetStopper() [2/2]

Command cuttlefish::Command::SetStopper ( SubprocessStopper  stopper) &&
inline

◆ SetWorkingDirectory() [1/4]

Command & cuttlefish::Command::SetWorkingDirectory ( const std::string &  path) &

◆ SetWorkingDirectory() [2/4]

Command cuttlefish::Command::SetWorkingDirectory ( const std::string &  path) &&

◆ SetWorkingDirectory() [3/4]

Command & cuttlefish::Command::SetWorkingDirectory ( SharedFD  dirfd) &

◆ SetWorkingDirectory() [4/4]

Command cuttlefish::Command::SetWorkingDirectory ( SharedFD  dirfd) &&

◆ Start()

Subprocess cuttlefish::Command::Start ( SubprocessOptions  options = SubprocessOptions()) const

◆ ToString()

std::string cuttlefish::Command::ToString ( ) const

◆ UnsetFromEnvironment() [1/2]

Command & cuttlefish::Command::UnsetFromEnvironment ( const std::string &  env_var) &
inline

◆ UnsetFromEnvironment() [2/2]

Command cuttlefish::Command::UnsetFromEnvironment ( const std::string &  env_var) &&
inline

Friends And Related Function Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  out,
const Command command 
)
friend

Member Data Documentation

◆ command_

std::vector<std::string> cuttlefish::Command::command_
private

◆ env_

std::vector<std::string> cuttlefish::Command::env_ {}
private

◆ executable_

std::optional<std::string> cuttlefish::Command::executable_
private

◆ inherited_fds_

std::map<SharedFD, int> cuttlefish::Command::inherited_fds_ {}
private

◆ prerequisites_

std::vector<std::function<Result<void>()> > cuttlefish::Command::prerequisites_
private

◆ redirects_

std::map<Subprocess::StdIOChannel, int> cuttlefish::Command::redirects_ {}
private

◆ subprocess_stopper_

SubprocessStopper cuttlefish::Command::subprocess_stopper_
private

◆ working_directory_

SharedFD cuttlefish::Command::working_directory_
private

The documentation for this class was generated from the following files: