17#include <nlohmann/json.hpp>
26namespace flox::resolver {
62 std::optional<std::string>
name;
75 using Path = std::variant<std::string, flox::AttrPath>;
88 using AbsPath = std::variant<std::string, AttrPathGlob>;
93 std::optional<std::vector<System>>
systems;
104 std::optional<std::variant<std::string, nix::fetchers::Attrs>>
125 check(
const std::string iid =
"*" )
const;
164 "error parsing manifest descriptor" )
175std::optional<std::
string>
192std::vector<std::
string>
194 const std::vector<std::
string> & strings );
226 std::optional<std::string>
name;
229 bool optional =
false;
247 std::optional<flox::AttrPath>
path;
259 unsigned priority = 5;
273 if ( ! this->name.has_value() ) { this->name = installID; }
297 pkgdb::PkgQueryArgs &
298 fillPkgQueryArgs( pkgdb::PkgQueryArgs & pqa )
const;
324 "invalid manifest descriptor" )
An exception thrown when parsing flox::resolver::ManifestDescriptorRaw from JSON.
An exception thrown when a package descriptor in a manifest is invalid.
std::string GroupName
A named group which a descriptor/package can be a member of.
Definition: descriptor.hh:31
#define FLOX_DEFINE_EXCEPTION(NAME, ERROR_CODE, CATEGORY_MSG)
Generate a class definition with an error code and category message.
Definition: exceptions.hh:206
@ EC_PARSE_MANIFEST_DESCRIPTOR_RAW
Definition: exceptions.hh:57
@ EC_INVALID_MANIFEST_DESCRIPTOR
Definition: exceptions.hh:39
std::vector< std::optional< std::string > > AttrPathGlob
An attribute path which may contain null members to represent globs.
Definition: types.hh:41
void from_json(const nlohmann::json &jfrom, RawPackage &pkg)
Convert a JSON object to a flox::RawPackage.
Definition: raw-package.cc:27
void to_json(nlohmann::json &jto, const FloxException &err)
Convert a flox::FloxException to a JSON object.
Definition: exceptions.cc:27
Interfaces for constructing complex ‘Packages’ queries.
A set of user inputs used to set input preferences during search and resolution.
A set of user defined requirements describing a package/dependency.
Definition: descriptor.hh:43
std::optional< std::vector< System > > systems
Definition: descriptor.hh:93
std::optional< std::variant< std::string, nix::fetchers::Attrs > > packageRepository
Definition: descriptor.hh:105
std::optional< std::string > version
Definition: descriptor.hh:72
void clear()
Reset to default/empty state.
Definition: descriptor.cc:46
std::variant< std::string, AttrPathGlob > AbsPath
A dot separated attribut path, or list representation. May contain null members to represent globs.
Definition: descriptor.hh:88
void check(const std::string iid="*") const
Ensure that a raw descriptor's fields are valid or throws an exception if the descriptor is invalid.
Definition: descriptor.cc:63
std::optional< GroupName > packageGroup
Definition: descriptor.hh:100
std::variant< std::string, flox::AttrPath > Path
A dot separated attribut path, or list representation.
Definition: descriptor.hh:75
std::optional< AbsPath > absPath
Definition: descriptor.hh:90
std::optional< bool > optional
Definition: descriptor.hh:96
std::optional< unsigned > priority
Definition: descriptor.hh:115
static const auto exactVersionSigil
Definition: descriptor.hh:56
static const auto versionSigil
Definition: descriptor.hh:51
std::optional< Path > path
Definition: descriptor.hh:77
std::optional< std::string > name
Definition: descriptor.hh:62
static const auto inputSigil
Definition: descriptor.hh:48
A set of user defined requirements describing a package/dependency.
Definition: descriptor.hh:221
std::optional< Subtree > subtree
Definition: descriptor.hh:241
std::optional< GroupName > group
Definition: descriptor.hh:232
std::optional< std::vector< System > > systems
Definition: descriptor.hh:244
std::optional< std::string > version
Definition: descriptor.hh:235
std::optional< std::string > name
Definition: descriptor.hh:226
std::optional< nix::FlakeRef > input
Definition: descriptor.hh:250
std::optional< flox::AttrPath > path
Definition: descriptor.hh:247
void check() const
Ensure that a descriptor has at least name, path, or absPath fields. Throws an exception if the descr...
std::optional< std::string > semver
Definition: descriptor.hh:238
Miscellaneous typedefs and aliases.