Compare commits

...

8 Commits

Author SHA1 Message Date
03ef5721e0 bump version
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2020-09-03 14:56:36 +02:00
008e644024 auto detect current version 2020-09-03 14:56:22 +02:00
e1f762ddc9 add subcommand to generate bash completions
All checks were successful
continuous-integration/drone/push Build is passing
2020-09-03 14:45:52 +02:00
Saravanan Palanisamy
2266754a95 create PKGBUILD file for archlinux package (#17)
Some checks reported errors
continuous-integration/drone/push Build encountered an error
* create PKGBUILD file

* use build & install method

* add package dependencies
2020-09-02 14:14:40 +02:00
8811cff6d1 0.2.12
All checks were successful
continuous-integration/drone/tag Build is passing
2020-08-31 00:04:24 +02:00
99787b614c Merge branch 'pin_source' into master
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2020-08-31 00:00:42 +02:00
ee28f87148 always print the full error message
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-30 17:09:57 +02:00
196356fe3b structopt does not allow for flags to be linked to env atm 2020-08-25 21:47:25 +02:00
5 changed files with 50 additions and 6 deletions

2
Cargo.lock generated
View File

@@ -377,7 +377,7 @@ dependencies = [
[[package]] [[package]]
name = "fido2luks" name = "fido2luks"
version = "0.2.11" version = "0.2.13"
dependencies = [ dependencies = [
"ctap_hmac", "ctap_hmac",
"failure", "failure",

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "fido2luks" name = "fido2luks"
version = "0.2.11" version = "0.2.13"
authors = ["shimunn <shimun@shimun.net>"] authors = ["shimunn <shimun@shimun.net>"]
edition = "2018" edition = "2018"

26
PKGBUILD Normal file
View File

@@ -0,0 +1,26 @@
# Maintainer: shimunn <shimun@shimun.net>
pkgname=fido2luks
pkgver=0.2.12
pkgrel=1
makedepends=('rust' 'cargo' 'cryptsetup' 'clang')
depends=('cryptsetup')
arch=('i686' 'x86_64' 'armv6h' 'armv7h')
pkgdesc="Decrypt your LUKS partition using a FIDO2 compatible authenticator"
url="https://github.com/shimunn/fido2luks"
license=('MPL-2.0')
pkgver() {
# Use tag version if possible otherwise concat project version and git ref
git describe --exact-match --tags HEAD 2> /dev/null || \
echo "$(cargo pkgid | cut -d'#' -f2).$(git describe --always)"
}
build() {
cargo build --release --locked --all-features --target-dir=target
./target/release/fido2luks completions bash target
}
package() {
install -Dm 755 target/release/${pkgname} -t "${pkgdir}/usr/bin"
install -Dm 644 target/fido2luks.bash "${pkgdir}/usr/share/bash-completion/completions/fido2luks"
}

View File

@@ -1,6 +1,7 @@
use crate::error::*; use crate::error::*;
use crate::*; use crate::*;
use structopt::clap::{AppSettings, Shell};
use structopt::StructOpt; use structopt::StructOpt;
use ctap::{FidoCredential, FidoErrorKind}; use ctap::{FidoCredential, FidoErrorKind};
@@ -75,7 +76,7 @@ pub struct Credentials {
#[derive(Debug, StructOpt)] #[derive(Debug, StructOpt)]
pub struct AuthenticatorParameters { pub struct AuthenticatorParameters {
/// Request a PIN to unlock the authenticator /// Request a PIN to unlock the authenticator
#[structopt(short = "P", long = "pin", env = "FIDO2LUKS_PIN")] #[structopt(short = "P", long = "pin")]
pub pin: bool, pub pin: bool,
/// Location to read PIN from /// Location to read PIN from
@@ -303,6 +304,14 @@ pub enum Command {
#[structopt(name = "connected")] #[structopt(name = "connected")]
Connected, Connected,
Token(TokenCommand), Token(TokenCommand),
/// Generate bash completion scripts
#[structopt(name = "completions", setting = AppSettings::Hidden)]
GenerateCompletions {
/// Shell to generate completions for: bash, fish
#[structopt(possible_values = &["bash", "fish"])]
shell: String,
out_dir: PathBuf,
},
} }
///LUKS2 token related operations ///LUKS2 token related operations
@@ -725,5 +734,17 @@ pub fn run_cli() -> Fido2LuksResult<()> {
Ok(()) Ok(())
} }
}, },
Command::GenerateCompletions { shell, out_dir } => {
Args::clap().gen_completions(
env!("CARGO_PKG_NAME"),
match shell.as_ref() {
"bash" => Shell::Bash,
"fish" => Shell::Fish,
_ => unreachable!("structopt shouldn't allow us to reach this point"),
},
&out_dir,
);
Ok(())
}
} }
} }

View File

@@ -21,10 +21,7 @@ mod util;
fn main() -> Fido2LuksResult<()> { fn main() -> Fido2LuksResult<()> {
match run_cli() { match run_cli() {
Err(e) => { Err(e) => {
#[cfg(debug_assertions)]
eprintln!("{:?}", e); eprintln!("{:?}", e);
#[cfg(not(debug_assertions))]
eprintln!("{}", e);
exit(e.exit_code()) exit(e.exit_code())
} }
_ => exit(0), _ => exit(0),