diff --git a/CHANGELOG.md b/CHANGELOG.md index 9eeb9f3b..8da31f5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ Unreleased ---------- +- Added the `list` command that lists all attached Nitrokey devices - Reworked argument handling: - Added `structopt` dependency in version `0.3.7` - Replaced `argparse` with `structopt` diff --git a/README.md b/README.md index f76216f8..66729142 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Storage][nitrokey-storage] devices. The following commands are currently supported: +- list: List all attached Nitrokey devices. - status: Report status information about the Nitrokey. - lock: Lock the Nitrokey. - config: Access the Nitrokey's configuration diff --git a/src/args.rs b/src/args.rs index aeedfe6b..91bddc5d 100644 --- a/src/args.rs +++ b/src/args.rs @@ -117,6 +117,8 @@ Command! {Command, [ Encrypted(EncryptedArgs) => |ctx, args: EncryptedArgs| args.subcmd.execute(ctx), /// Interacts with the device's hidden volume Hidden(HiddenArgs) => |ctx, args: HiddenArgs| args.subcmd.execute(ctx), + /// Lists the attached Nitrokey devices + List(ListArgs) => |ctx, args: ListArgs| commands::list(ctx, args.no_connect), /// Locks the connected Nitrokey device Lock => commands::lock, /// Accesses one-time passwords @@ -263,6 +265,13 @@ struct HiddenCreateArgs { end: u8, } +#[derive(Debug, PartialEq, structopt::StructOpt)] +struct ListArgs { + /// Only print the information that is available without connecting to a device + #[structopt(short, long)] + no_connect: bool, +} + #[derive(Debug, PartialEq, structopt::StructOpt)] struct OtpArgs { #[structopt(subcommand)] diff --git a/src/commands.rs b/src/commands.rs index cc577862..3bc73003 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -376,6 +376,11 @@ pub fn status(ctx: &mut args::ExecCtx<'_>) -> Result<()> { }) } +/// List the attached Nitrokey devices. +pub fn list(_ctx: &mut args::ExecCtx<'_>, _no_connect: bool) -> Result<()> { + unimplemented!(); +} + /// Perform a factory reset. pub fn reset(ctx: &mut args::ExecCtx<'_>) -> Result<()> { with_device(ctx, |ctx, mut device| {