1use derive_more::{Constructor, Deref, From};
4use runix_derive::ToArgs;
5
6use crate::command_line::flag::{Flag, FlagType};
7use crate::command_line::ToArgs;
8use crate::installable::FlakeRef;
9
10#[derive(Clone, Default, Debug, ToArgs)]
14pub struct FlakeArgs {
15 pub override_inputs: Vec<OverrideInput>,
16 pub no_write_lock_file: NoWriteLockFile,
17}
18
19#[derive(Clone, Debug, From, Constructor)]
21pub struct OverrideInput {
22 pub from: FlakeRef,
23 pub to: FlakeRef,
24}
25impl Flag for OverrideInput {
26 const FLAG: &'static str = "--override-input";
27 const FLAG_TYPE: FlagType<Self> = FlagType::Args(Self::args);
28}
29impl OverrideInput {
30 fn args(&self) -> Vec<String> {
31 vec![self.from.clone(), self.to.clone()]
32 }
33}
34
35#[derive(Clone, From, Debug, Deref, Default)]
37pub struct NoWriteLockFile(bool);
38impl Flag for NoWriteLockFile {
39 const FLAG: &'static str = "--no-write-lock-file";
40 const FLAG_TYPE: FlagType<Self> = FlagType::bool();
43}