nuts_tool/cli/container/
change.rs

1// MIT License
2//
3// Copyright (c) 2024 Robin Doer
4//
5// Permission is hereby granted, free of charge, to any person obtaining a copy
6// of this software and associated documentation files (the "Software"), to
7// deal in the Software without restriction, including without limitation the
8// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
9// sell copies of the Software, and to permit persons to whom the Software is
10// furnished to do so, subject to the following conditions:
11//
12// The above copyright notice and this permission notice shall be included in
13// all copies or substantial portions of the Software.
14//
15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21// IN THE SOFTWARE.
22
23pub mod kdf;
24pub mod password;
25
26use anyhow::Result;
27use clap::{Args, Subcommand};
28
29use crate::cli::container::change::kdf::ContainerChangeKdfArgs;
30use crate::cli::container::change::password::ContainerChangePasswordArgs;
31
32#[derive(Args, Debug)]
33pub struct ContainerChangeArgs {
34    #[clap(subcommand)]
35    command: ContainerChangeCommand,
36}
37
38impl ContainerChangeArgs {
39    pub fn run(&self) -> Result<()> {
40        self.command.run()
41    }
42}
43
44#[derive(Debug, Subcommand)]
45pub enum ContainerChangeCommand {
46    /// Changes the key derivation function of the container
47    Kdf(ContainerChangeKdfArgs),
48
49    /// Changes the password of the container
50    Password(ContainerChangePasswordArgs),
51}
52
53impl ContainerChangeCommand {
54    pub fn run(&self) -> Result<()> {
55        match self {
56            Self::Kdf(args) => args.run(),
57            Self::Password(args) => args.run(),
58        }
59    }
60}