Add new subcommand list
Also add it to the readme and manpage.
This commit is contained in:
parent
12b117db7e
commit
4020f062ef
5 changed files with 90 additions and 6 deletions
|
@ -7,6 +7,7 @@ mod posix;
|
|||
enum Command {
|
||||
Create(posix::Create),
|
||||
Info(posix::Info),
|
||||
List(posix::List),
|
||||
Unlink(posix::Unlink),
|
||||
Send(posix::Send),
|
||||
Recv(posix::Recv),
|
||||
|
@ -47,6 +48,7 @@ fn main() -> Result<()> {
|
|||
Command::Unlink(u) => u.run()?,
|
||||
Command::Send(s) => s.run()?,
|
||||
Command::Recv(r) => r.run()?,
|
||||
Command::List(l) => l.run()?,
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
mod create;
|
||||
mod info;
|
||||
mod list;
|
||||
mod recv;
|
||||
mod send;
|
||||
mod unlink;
|
||||
|
||||
pub use create::Create;
|
||||
pub use info::Info;
|
||||
pub use list::List;
|
||||
pub use recv::Recv;
|
||||
pub use send::Send;
|
||||
pub use unlink::Unlink;
|
||||
|
|
58
src/posix/list.rs
Normal file
58
src/posix/list.rs
Normal file
|
@ -0,0 +1,58 @@
|
|||
use anyhow::{anyhow, Result};
|
||||
use chrono::{DateTime, Local};
|
||||
use clap::Clap;
|
||||
use log::warn;
|
||||
use std::{fs, os::unix::fs::PermissionsExt};
|
||||
|
||||
/// Print information about an existing message queue
|
||||
#[derive(Clap, Debug)]
|
||||
pub struct List {
|
||||
/// Show all parameters
|
||||
#[clap(short, long)]
|
||||
all: bool,
|
||||
}
|
||||
|
||||
impl List {
|
||||
pub fn run(&self) -> Result<()> {
|
||||
match self.all {
|
||||
false => println!("Name"),
|
||||
true => println!(
|
||||
"{0: <10} {1: <10} {2: <12} {3: <26} {4: <26}",
|
||||
"Name", "Size", "Permissions", "Modified", "Accessed",
|
||||
),
|
||||
}
|
||||
|
||||
for mq in fs::read_dir("/dev/mqueue")? {
|
||||
match mq {
|
||||
Ok(mq) => {
|
||||
print!(
|
||||
"/{0: <10}",
|
||||
mq.file_name().into_string().map_err(|e| anyhow!(
|
||||
"Could not convert queue name to string: {:?}",
|
||||
e
|
||||
))?
|
||||
);
|
||||
|
||||
if self.all {
|
||||
let metadata = mq.metadata()?;
|
||||
let modified: DateTime<Local> = metadata.modified()?.into();
|
||||
let accessed: DateTime<Local> = metadata.accessed()?.into();
|
||||
|
||||
print!(
|
||||
"{0: <10} {1: <12o} {2: <26} {3: <26}",
|
||||
metadata.len(),
|
||||
metadata.permissions().mode(),
|
||||
modified,
|
||||
accessed,
|
||||
);
|
||||
}
|
||||
|
||||
println!();
|
||||
}
|
||||
Err(e) => warn!("Could not read file: {:?}", e),
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue