#include <root.hh>
Classes | |
struct | DeferredCompletion |
Public Member Functions | |
void | parseCmdline (const Strings &cmdline, bool allowShebang=false) |
Path | getCommandBaseDir () const override |
Get the base directory for the command. | |
![]() | |
virtual std::string | description () |
virtual bool | forceImpureByDefault () |
virtual std::string | doc () |
void | addFlag (Flag &&flag) |
void | removeFlag (const std::string &longName) |
void | expectArgs (ExpectedArg &&arg) |
void | expectArg (const std::string &label, std::string *dest, bool optional=false) |
void | expectArg (const std::string &label, std::filesystem::path *dest, bool optional=false) |
void | expectArgs (const std::string &label, std::vector< std::string > *dest) |
virtual nlohmann::json | toJSON () |
RootArgs & | getRoot () |
Public Attributes | |
std::shared_ptr< Completions > | completions |
![]() | |
MultiCommand * | parent = nullptr |
Protected Attributes | |
Path | commandBaseDir = "." |
The command's "working directory", but only set when top level. | |
std::vector< DeferredCompletion > | deferredCompletions |
std::set< ExperimentalFeature > | flagExperimentalFeatures |
![]() | |
std::map< std::string, Flag::ptr > | longFlags |
std::map< char, Flag::ptr > | shortFlags |
std::list< ExpectedArg > | expectedArgs |
std::list< ExpectedArg > | processedArgs |
std::set< std::string > | hiddenCategories |
Friends | |
class | Args |
Additional Inherited Members | |
![]() | |
static CompleterFun | completePath |
static CompleterFun | completeDir |
![]() | |
using | CompleterFun = void(AddCompletions &, size_t, std::string_view) |
using | CompleterClosure = std::function<CompleterFun> |
![]() | |
virtual bool | processFlag (Strings::iterator &pos, Strings::iterator end) |
virtual bool | processArgs (const Strings &args, bool finish) |
virtual Strings::iterator | rewriteArgs (Strings &args, Strings::iterator pos) |
virtual void | initialFlagsProcessed () |
![]() | |
static const size_t | ArityAny = std::numeric_limits<size_t>::max() |
The outermost Args object. This is the one we will actually parse a command line with, whereas the inner ones (if they exists) are subcommands (and this is also a MultiCommand or something like it).
This Args contains completions state shared between it and all of its descendent Args.
|
overridevirtual |
Get the base directory for the command.
This only returns the correct value after parseCmdline() has run.
Reimplemented from nix::Args.
void nix::RootArgs::parseCmdline | ( | const Strings & | cmdline, |
bool | allowShebang = false ) |
Parse the command line, throwing a UsageError if something goes wrong.
|
protected |
The command's "working directory", but only set when top level.
Use getCommandBaseDir() to get the directory regardless of whether this is a top-level command or subcommand.
|
protected |
Completions are run after all args and flags are parsed, so completions of earlier arguments can benefit from later arguments.
|
protected |
Experimental features needed when parsing args. These are checked after flag parsing is completed in order to support enabling experimental features coming after the flag that needs the experimental feature.