feat: v0.1.1, improve -I subcommand

This commit is contained in:
2023-10-06 11:38:59 +08:00
parent 1976f5e15c
commit 5831edb9b5
4 changed files with 27 additions and 13 deletions

2
Cargo.lock generated
View File

@@ -2139,7 +2139,7 @@ dependencies = [
[[package]]
name = "tiny-encrypt"
version = "0.1.0"
version = "0.1.1"
dependencies = [
"aes-gcm-stream",
"base64",

View File

@@ -1,6 +1,6 @@
[package]
name = "tiny-encrypt"
version = "0.1.0"
version = "0.1.1"
edition = "2021"
license = "MIT"
description = "A simple and tiny file encrypt tool"

View File

@@ -265,13 +265,12 @@ fn select_envelop(meta: &TinyEncryptMeta) -> XResult<&TinyEncryptEnvelop> {
}
envelops.iter().enumerate().for_each(|(i, envelop)| {
println!("#{} {}{}", i + 1,
let kid = iff!(envelop.kid.is_empty(), "".into(), format!(", Kid: {}", envelop.kid));
let desc = envelop.desc.as_ref().map(|desc| format!(", Desc: {}", desc)).unwrap_or_else(|| "".to_string());
println!("#{} {}{}{}", i + 1,
envelop.r#type.get_upper_name(),
if envelop.kid.is_empty() {
"".into()
} else {
format!(", Kid: {}", envelop.kid)
}
kid,
desc,
);
});

View File

@@ -5,23 +5,38 @@ use std::path::PathBuf;
use std::time::{Duration, SystemTime};
use clap::Args;
use rust_util::{iff, opt_result, success, util_time, XResult};
use rust_util::{iff, opt_result, simple_error, success, util_time, warning, XResult};
use simpledateformat::format_human2;
use crate::{file, util};
use crate::util::TINY_ENC_FILE_EXT;
#[derive(Debug, Args)]
pub struct CmdInfo {
/// File
pub path: PathBuf,
pub paths: Vec<PathBuf>,
/// Show raw meta
#[arg(long, default_value_t = false)]
pub raw_meta: bool,
}
pub fn info(cmd_info: CmdInfo) -> XResult<()> {
let path_display = format!("{}", cmd_info.path.display());
let mut file_in = opt_result!(File::open(&cmd_info.path), "Open file: {} failed: {}", &path_display);
for (i, path) in cmd_info.paths.iter().enumerate() {
if i > 0 { println!("{}", "-".repeat(88)); }
if let Err(e) = info_single(path, &cmd_info) {
warning!("Parse Tiny Encrypt file info failed: {}", e);
}
}
Ok(())
}
pub fn info_single(path: &PathBuf, cmd_info: &CmdInfo) -> XResult<()> {
let path_display = format!("{}", path.display());
if !path_display.ends_with(TINY_ENC_FILE_EXT) {
return simple_error!("Not a Tiny Encrypt file: {}", path_display);
}
let mut file_in = opt_result!(File::open(path), "Open file: {} failed: {}", &path_display);
let meta = opt_result!(
file::read_tiny_encrypt_meta_and_normalize(&mut file_in), "Read file: {}, failed: {}", &path_display
);
@@ -56,7 +71,7 @@ pub fn info(cmd_info: CmdInfo) -> XResult<()> {
meta.envelops.as_ref().map(|envelops|
envelops.iter().enumerate().for_each(|(i, envelop)| {
let kid = iff!(envelop.kid.is_empty(), "".into(), format!(", Kid: {}", envelop.kid));
let desc = iff!(envelop.desc.is_none(), "".into(), format!(", Desc: {}", envelop.desc.as_ref().unwrap()));
let desc = envelop.desc.as_ref().map(|desc| format!(", Desc: {}", desc)).unwrap_or_else(|| "".to_string());
infos.push(format!("{}: {}{}{}",
header(&format!("Envelop #{}", i + 1)),
envelop.r#type.get_upper_name(),