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)]
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    #[builder(default)]
20    pub(crate) build_behaviour: BuildBehaviour,
21    #[builder(default)]
22    pub(crate) pin: PinnedState,
23    #[builder(default)]
24    pub(crate) opt: OptState,
25    pub(crate) source: Option<RockSourceSpec>,
26    /// Optional constraint, carried over from a previous install,
27    /// e.g. defined in a lockfile.
28    pub(crate) constraint: Option<LockConstraint>,
29}