Skip to main content

lux_lib/operations/install/
spec.rs

1use bon::Builder;
2
3use crate::{
4    build::BuildBehaviour,
5    lockfile::{LockConstraint, OptState, PinnedState},
6    lua_rockspec::RockSourceSpec,
7    package::PackageReq,
8    tree,
9};
10
11/// Specifies how to install a package
12#[derive(Debug, Builder, PartialEq, Eq, Hash, Clone)]
13#[builder(start_fn = new, finish_fn(name = build, vis = "pub"))]
14pub struct PackageInstallSpec {
15    #[builder(start_fn)]
16    pub(crate) package: PackageReq,
17    #[builder(start_fn)]
18    pub(crate) entry_type: tree::EntryType,
19    pub(crate) build_behaviour: BuildBehaviour,
20    #[builder(default)]
21    pub(crate) pin: PinnedState,
22    #[builder(default)]
23    pub(crate) opt: OptState,
24    pub(crate) source: Option<RockSourceSpec>,
25    /// Optional constraint, carried over from a previous install,
26    /// e.g. defined in a lockfile.
27    pub(crate) constraint: Option<LockConstraint>,
28}