Skip to content

Commit

Permalink
feat(efiboot/list): allow to show a single namespace (#44)
Browse files Browse the repository at this point in the history
  • Loading branch information
iTrooz authored Jul 15, 2023
1 parent 377e908 commit 9741953
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 6 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions efiboot/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ efivar = { version = "1.0.14", path = "../efivar", features = ["store"] }
itertools = "0.10.5"
paw = "1.0.0"
structopt = { version = "0.3.26", features = ["paw"] }
uuid = { version = "1.3.4" }

[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }_{ target }{ archive-suffix }"
Expand Down
30 changes: 27 additions & 3 deletions efiboot/src/cli/list.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,34 @@
use efivar::VarManager;
use efivar::{efi::VariableVendor, VarManager};

pub fn run(enumerator: Box<dyn VarManager>) {
fn list_all(enumerator: Box<dyn VarManager>) {
println!("{: >36} Variable", "Namespace");
for var in enumerator
.get_var_names()
.expect("Failed to list variable names")
{
println!("{}", var.short_name());
println!("{} {}", var.vendor(), var.variable());
}
}

fn list_namespace(enumerator: Box<dyn VarManager>, vendor: VariableVendor) {
println!("Variables in namespace {} :", vendor);
for var in enumerator
.get_var_names()
.expect("Failed to list variable names")
{
if var.vendor() == &vendor {
println!("{}", var.variable());
}
}
}

pub fn run(enumerator: Box<dyn VarManager>, namespace: Option<uuid::Uuid>, all: bool) {
if all {
list_all(enumerator);
} else {
list_namespace(
enumerator,
namespace.map_or(VariableVendor::Efi, VariableVendor::Custom),
);
}
}
13 changes: 10 additions & 3 deletions efiboot/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,14 @@ enum Command {
string: bool,
},
/// List known EFI variables
List,
List {
/// GUID of the namespace. Default: EFI standard namespace
#[structopt(value_name = "GUID")]
namespace: Option<uuid::Uuid>,
/// ignore --namespace and show all namespaces
#[structopt(short, long)]
all: bool,
},
}

#[derive(StructOpt)]
Expand Down Expand Up @@ -48,8 +55,8 @@ fn main(opts: Opt) {
Command::Read { name, string } => {
cli::read(manager, &name, string);
}
Command::List => {
cli::list(manager);
Command::List { namespace, all } => {
cli::list(manager, namespace, all);
}
}
}

0 comments on commit 9741953

Please sign in to comment.