From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <m.carrara@proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by lists.proxmox.com (Postfix) with ESMTPS id 02C1BBB753
 for <pbs-devel@lists.proxmox.com>; Mon, 25 Mar 2024 13:35:37 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
 by firstgate.proxmox.com (Proxmox) with ESMTP id D07F13D3F
 for <pbs-devel@lists.proxmox.com>; Mon, 25 Mar 2024 13:35:06 +0100 (CET)
Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com
 [94.136.29.106])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by firstgate.proxmox.com (Proxmox) with ESMTPS
 for <pbs-devel@lists.proxmox.com>; Mon, 25 Mar 2024 13:35:06 +0100 (CET)
Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1])
 by proxmox-new.maurer-it.com (Proxmox) with ESMTP id EADE141F64
 for <pbs-devel@lists.proxmox.com>; Mon, 25 Mar 2024 13:35:05 +0100 (CET)
Content-Type: text/plain; charset=UTF-8
Date: Mon, 25 Mar 2024 13:35:05 +0100
Message-Id: <D02U2KRN8I5T.HQOZ2U7OQ25M@proxmox.com>
From: "Max Carrara" <m.carrara@proxmox.com>
To: "Proxmox Backup Server development discussion"
 <pbs-devel@lists.proxmox.com>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-Mailer: aerc 0.17.0-72-g6a84f1331f1c
References: <20240320141516.213930-1-f.schauer@proxmox.com>
 <20240320141516.213930-9-f.schauer@proxmox.com>
In-Reply-To: <20240320141516.213930-9-f.schauer@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.021 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
Subject: Re: [pbs-devel] [PATCH vma-to-pbs 08/10] add a fallback for the
 --fingerprint argument
X-BeenThere: pbs-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Backup Server development discussion
 <pbs-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/>
List-Post: <mailto:pbs-devel@lists.proxmox.com>
List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe>
X-List-Received-Date: Mon, 25 Mar 2024 12:35:37 -0000

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@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 =3D "2021"
>  [dependencies]
>  anyhow =3D "1.0"
>  bincode =3D "1.3"
> -clap =3D { version =3D "4.0.32", features =3D ["cargo"] }
> +clap =3D { version =3D "4.0.32", features =3D ["cargo", "env"] }
>  md5 =3D "0.7.0"
>  scopeguard =3D "1.1.0"
>  serde =3D "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<()> {
> =20
>      let pbs_repository =3D matches.get_one::<String>("repository").unwra=
p().to_string();
>      let vmid =3D matches.get_one::<String>("vmid").unwrap().to_string();
> +
>      let fingerprint =3D matches
>          .get_one::<String>("fingerprint")
> -        .unwrap()
> +        .expect("Fingerprint not set. Use $PBS_FINGERPRINT or --fingerpr=
int")
>          .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 --f=
ingerprint', src/main.rs:78:10
note: run with `RUST_BACKTRACE=3D1` environment variable to display a backt=
race

... 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

> =20
>      let keyfile =3D matches.get_one::<String>("keyfile");