[pbs-devel] [PATCH vma-to-pbs 08/10] add a fallback for the --fingerprint argument
Max Carrara
m.carrara at proxmox.com
Mon Mar 25 13:35:05 CET 2024
On Wed Mar 20, 2024 at 3:15 PM CET, Filip Schauer wrote:
> Fallback to the PBS_FINGERPRINT environment variable if the
> --fingerprint argument is not specified.
>
> Signed-off-by: Filip Schauer <f.schauer at proxmox.com>
> ---
> Cargo.toml | 2 +-
> src/main.rs | 5 +++--
> 2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/Cargo.toml b/Cargo.toml
> index 9711690..f56e351 100644
> --- a/Cargo.toml
> +++ b/Cargo.toml
> @@ -7,7 +7,7 @@ edition = "2021"
> [dependencies]
> anyhow = "1.0"
> bincode = "1.3"
> -clap = { version = "4.0.32", features = ["cargo"] }
> +clap = { version = "4.0.32", features = ["cargo", "env"] }
> md5 = "0.7.0"
> scopeguard = "1.1.0"
> serde = "1.0"
> diff --git a/src/main.rs b/src/main.rs
> index e0e1076..149c1a6 100644
> --- a/src/main.rs
> +++ b/src/main.rs
> @@ -27,7 +27,7 @@ fn main() -> Result<()> {
> .long("fingerprint")
> .value_name("FINGERPRINT")
> .help("Proxmox Backup Server Fingerprint")
> - .required(true),
> + .env("PBS_FINGERPRINT"),
> )
> .arg(
> Arg::new("keyfile")
> @@ -72,9 +72,10 @@ fn main() -> Result<()> {
>
> let pbs_repository = matches.get_one::<String>("repository").unwrap().to_string();
> let vmid = matches.get_one::<String>("vmid").unwrap().to_string();
> +
> let fingerprint = matches
> .get_one::<String>("fingerprint")
> - .unwrap()
> + .expect("Fingerprint not set. Use $PBS_FINGERPRINT or --fingerprint")
> .to_string();
Something I hadn't mentioned in my last review for this patch in
particular (but for other parts in main.rs): Please avoid using
`unwrap()` and `expect()` in cases like these - there's no need to
`panic!` here.
Specifically, if the user forgets to provide the fingerprint, the error
message looks like this:
thread 'main' panicked at 'Fingerprint not set. Use $PBS_FINGERPRINT or --fingerprint', src/main.rs:78:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
... which ought not happen - you should only really `panic!` when an
invariant isn't being upheld.
Instead, use `anyhow::Context` [0] here with a `?`.
[0]: https://docs.rs/anyhow/1.0.79/anyhow/trait.Context.html
>
> let keyfile = matches.get_one::<String>("keyfile");
More information about the pbs-devel
mailing list