18#include <nlohmann/json_fwd.hpp>
20#include <nix/eval-cache.hh>
21#include <nix/fetchers.hh>
22#include <nix/flake/flake.hh>
23#include <nix/names.hh>
66 [[nodiscard]]
virtual std::string
75 [[nodiscard]]
virtual std::string
86 [[nodiscard]]
virtual std::optional<std::string>
91 [[nodiscard]]
virtual std::optional<std::string>
95 [[nodiscard]]
virtual std::vector<std::string>
103 [[nodiscard]]
virtual std::vector<std::string>
107 [[nodiscard]]
virtual std::optional<bool>
111 [[nodiscard]]
virtual std::optional<bool>
118 [[nodiscard]]
virtual std::optional<std::string>
125 [[nodiscard]]
virtual Subtree
135 [[nodiscard]]
virtual nix::DrvName
146 [[nodiscard]]
virtual std::optional<std::string>
149 std::optional<std::string> version = this->
getVersion();
150 if ( ! version.has_value() ) {
return std::nullopt; }
161 [[nodiscard]]
virtual std::string
171 [[nodiscard]]
virtual nlohmann::json
172 getInfo(
bool withDescription =
false )
const;
Abstract representation of a "package", analogous to a Nix ‘derivation’.
Definition: package.hh:44
virtual nlohmann::json getInfo(bool withDescription=false) const
Serialize notable package metadata as a JSON object.
Definition: package.cc:39
virtual std::optional< std::string > getSemver() const
Definition: package.hh:147
virtual nix::DrvName getParsedDrvName() const
Definition: package.hh:136
virtual std::string getFullName() const =0
virtual std::optional< bool > isBroken() const =0
virtual AttrPath getPathStrs() const =0
virtual std::optional< std::string > getLicense() const =0
virtual std::vector< std::string > getOutputsToInstall() const =0
virtual std::optional< std::string > getVersion() const =0
virtual std::vector< std::string > getOutputs() const =0
virtual Subtree getSubtreeType() const
Definition: package.hh:126
virtual std::optional< bool > isUnfree() const =0
virtual std::optional< std::string > getDescription() const =0
virtual std::string getPname() const =0
virtual std::string toURIString(const nix::FlakeRef &ref) const
Create an installable URI string associated with this package using ref as its input part.
Definition: package.cc:22
Definitions of various std::exception children used for throwing errors with nice messages and typed ...
Interfaces for use by flox.
Definition: command.cc:29
std::vector< std::string > AttrPath
A list of key names addressing a location in a nested JSON-like object.
Definition: types.hh:33
std::optional< std::string > coerceSemver(std::string_view version)
Attempt to coerce strings such as "v1.0.2" or 1.0 to valid semantic version strings.
Definition: versions.cc:92
Miscellaneous typedefs and aliases.
Interfaces used to perform version number analysis, especially Semantic Version processing.