Nix 2.26.3
Nix, the purely functional package manager; unstable internal interfaces
 
Loading...
Searching...
No Matches
nix::RootArgs Class Reference

#include <root.hh>

Inheritance diagram for nix::RootArgs:
nix::Args nix::LegacyArgs nix::NixArgs

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.
 
- Public Member Functions inherited from nix::Args
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 ()
 
RootArgsgetRoot ()
 

Public Attributes

std::shared_ptr< Completionscompletions
 
- Public Attributes inherited from nix::Args
MultiCommandparent = nullptr
 

Protected Attributes

Path commandBaseDir = "."
 The command's "working directory", but only set when top level.
 
std::vector< DeferredCompletiondeferredCompletions
 
std::set< ExperimentalFeatureflagExperimentalFeatures
 
- Protected Attributes inherited from nix::Args
std::map< std::string, Flag::ptr > longFlags
 
std::map< char, Flag::ptr > shortFlags
 
std::list< ExpectedArgexpectedArgs
 
std::list< ExpectedArgprocessedArgs
 
std::set< std::string > hiddenCategories
 

Friends

class Args
 

Additional Inherited Members

- Static Public Attributes inherited from nix::Args
static CompleterFun completePath
 
static CompleterFun completeDir
 
- Protected Types inherited from nix::Args
using CompleterFun = void(AddCompletions &, size_t, std::string_view)
 
using CompleterClosure = std::function<CompleterFun>
 
- Protected Member Functions inherited from nix::Args
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 Protected Attributes inherited from nix::Args
static const size_t ArityAny = std::numeric_limits<size_t>::max()
 

Detailed Description

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.

Member Function Documentation

◆ getCommandBaseDir()

Path nix::RootArgs::getCommandBaseDir ( ) const
overridevirtual

Get the base directory for the command.

Returns
Generally the working directory, but in case of a shebang interpreter, returns the directory of the script.

This only returns the correct value after parseCmdline() has run.

Reimplemented from nix::Args.

◆ parseCmdline()

void nix::RootArgs::parseCmdline ( const Strings & cmdline,
bool allowShebang = false )

Parse the command line, throwing a UsageError if something goes wrong.

Member Data Documentation

◆ commandBaseDir

Path nix::RootArgs::commandBaseDir = "."
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.

See also
getCommandBaseDir()

◆ deferredCompletions

std::vector<DeferredCompletion> nix::RootArgs::deferredCompletions
protected

Completions are run after all args and flags are parsed, so completions of earlier arguments can benefit from later arguments.

◆ flagExperimentalFeatures

std::set<ExperimentalFeature> nix::RootArgs::flagExperimentalFeatures
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.


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