uv_configuration/
editable.rs1use uv_normalize::PackageName;
2
3#[derive(Debug, Default, Clone, PartialEq, Eq)]
4pub enum EditableMode {
5 #[default]
6 Editable,
7 NonEditable,
8 NonEditablePackages(Vec<PackageName>),
9}
10
11impl From<bool> for EditableMode {
12 fn from(value: bool) -> Self {
13 if value {
14 Self::Editable
15 } else {
16 Self::NonEditable
17 }
18 }
19}
20
21impl EditableMode {
22 pub fn from_args(
24 editable: Option<bool>,
25 no_editable_package: Vec<PackageName>,
26 ) -> Option<Self> {
27 match editable {
28 Some(editable) => Some(Self::from(editable)),
29 None if no_editable_package.is_empty() => None,
30 None => Some(Self::NonEditablePackages(no_editable_package)),
31 }
32 }
33
34 pub fn for_package(&self, package_name: &PackageName) -> Option<bool> {
36 match self {
37 Self::Editable => Some(true),
38 Self::NonEditable => Some(false),
39 Self::NonEditablePackages(packages) if packages.contains(package_name) => Some(false),
40 Self::NonEditablePackages(_) => None,
41 }
42 }
43}