From c01bbbf186cd88f9e1b3c3eda0459635bed209b4 Mon Sep 17 00:00:00 2001 From: Daniel Mueller Date: Mon, 27 May 2019 08:16:27 -0700 Subject: Require trailing comma in Enum macro's input The input to the Enum macro is supposed to resemble the definition of an enum in Rust code. When manually defining an enum (or a struct for that matter), we typically terminate all branches with a comma, and don't just omit that on the last line. To mirror this behavior, this change adjusts the Enum macro to accept (and in fact, require) a comma-terminated last line as well, as opposed to not accepting it as had been the case so far. --- nitrocli/src/arg_util.rs | 8 ++++---- nitrocli/src/args.rs | 22 +++++++++++----------- nitrocli/src/pinentry.rs | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/nitrocli/src/arg_util.rs b/nitrocli/src/arg_util.rs index 2996060..e2e7b1d 100644 --- a/nitrocli/src/arg_util.rs +++ b/nitrocli/src/arg_util.rs @@ -29,9 +29,9 @@ macro_rules! count { // TODO: Right now we hard code the derives we create. We may want to // make this set configurable. macro_rules! Enum { - ( $name:ident, [ $( $var:ident => ($str:expr, $exec:expr) ), *] ) => { + ( $name:ident, [ $( $var:ident => ($str:expr, $exec:expr), ) *] ) => { Enum! {$name, [ - $( $var => $str ),* + $( $var => $str, )* ]} #[allow(unused_qualifications)] @@ -49,7 +49,7 @@ macro_rules! Enum { } } }; - ( $name:ident, [ $( $var:ident => $str:expr ), *] ) => { + ( $name:ident, [ $( $var:ident => $str:expr, ) *] ) => { #[derive(Clone, Copy, Debug, PartialEq)] pub enum $name { $( @@ -138,7 +138,7 @@ mod tests { Enum! {Command, [ Var1 => "var1", Var2 => "2", - Var3 => "crazy" + Var3 => "crazy", ]} #[test] diff --git a/nitrocli/src/args.rs b/nitrocli/src/args.rs index 7e4f839..82e9c2a 100644 --- a/nitrocli/src/args.rs +++ b/nitrocli/src/args.rs @@ -104,7 +104,7 @@ impl<'io> Stdio for ExecCtx<'io> { #[allow(unused_doc_comments)] Enum! {DeviceModel, [ Pro => "pro", - Storage => "storage" + Storage => "storage", ]} impl From for nitrokey::Model { @@ -126,12 +126,12 @@ Enum! {Command, [ Pws => ("pws", pws), Reset => ("reset", reset), Status => ("status", status), - Storage => ("storage", storage) + Storage => ("storage", storage), ]} Enum! {ConfigCommand, [ Get => ("get", config_get), - Set => ("set", config_set) + Set => ("set", config_set), ]} #[derive(Clone, Copy, Debug)] @@ -173,17 +173,17 @@ Enum! {OtpCommand, [ Clear => ("clear", otp_clear), Get => ("get", otp_get), Set => ("set", otp_set), - Status => ("status", otp_status) + Status => ("status", otp_status), ]} Enum! {OtpAlgorithm, [ Hotp => "hotp", - Totp => "totp" + Totp => "totp", ]} Enum! {OtpMode, [ SixDigits => "6", - EightDigits => "8" + EightDigits => "8", ]} impl From for nitrokey::OtpMode { @@ -198,20 +198,20 @@ impl From for nitrokey::OtpMode { Enum! {OtpSecretFormat, [ Ascii => "ascii", Base32 => "base32", - Hex => "hex" + Hex => "hex", ]} Enum! {PinCommand, [ Clear => ("clear", pin_clear), Set => ("set", pin_set), - Unblock => ("unblock", pin_unblock) + Unblock => ("unblock", pin_unblock), ]} Enum! {PwsCommand, [ Clear => ("clear", pws_clear), Get => ("get", pws_get), Set => ("set", pws_set), - Status => ("status", pws_status) + Status => ("status", pws_status), ]} fn parse( @@ -249,7 +249,7 @@ Enum! {StorageCommand, [ Close => ("close", storage_close), Hidden => ("hidden", storage_hidden), Open => ("open", storage_open), - Status => ("status", storage_status) + Status => ("status", storage_status), ]} /// Execute a storage subcommand. @@ -306,7 +306,7 @@ fn storage_status(ctx: &mut ExecCtx<'_>, args: Vec) -> Result<()> { Enum! {HiddenCommand, [ Close => ("close", storage_hidden_close), Create => ("create", storage_hidden_create), - Open => ("open", storage_hidden_open) + Open => ("open", storage_hidden_open), ]} /// Execute a storage hidden subcommand. diff --git a/nitrocli/src/pinentry.rs b/nitrocli/src/pinentry.rs index 8bab65e..7bba6b9 100644 --- a/nitrocli/src/pinentry.rs +++ b/nitrocli/src/pinentry.rs @@ -33,7 +33,7 @@ type CowStr = borrow::Cow<'static, str>; #[allow(unused_doc_comments)] Enum! {PinType, [ Admin => "admin", - User => "user" + User => "user", ]} /// A trait representing a secret to be entered by the user. -- cgit v1.2.1