diff options
| -rw-r--r-- | src/bin/jv.rs | 18 | ||||
| -rw-r--r-- | src/data.rs | 2 | ||||
| -rw-r--r-- | src/data/ipaddress_history.rs | 34 |
3 files changed, 48 insertions, 6 deletions
diff --git a/src/bin/jv.rs b/src/bin/jv.rs index f793341..14ba9ef 100644 --- a/src/bin/jv.rs +++ b/src/bin/jv.rs @@ -28,10 +28,11 @@ use just_enough_vcs::{ current::{current_doc_dir, current_local_path}, data::{ local::{ - LocalWorkspace, config::LocalConfig, file_status::AnalyzeResult, - latest_info::LatestInfo, local_files::get_relative_paths, member_held::MemberHeld, + LocalWorkspace, cached_sheet::CachedSheet, config::LocalConfig, + file_status::AnalyzeResult, latest_info::LatestInfo, + local_files::get_relative_paths, member_held::MemberHeld, }, - member::Member, + member::{Member, MemberId}, user::UserDirectory, }, docs::{ASCII_YIZI, document, documents}, @@ -50,7 +51,10 @@ use just_enough_vcs::{ vcs::{actions::local_actions::proc_set_upstream_vault_action, registry::client_registry}, }; use just_enough_vcs_cli::{ - data::compile_info::CompileInfo, + data::{ + compile_info::CompileInfo, + ipaddress_history::{get_recent_ip_address, insert_recent_ip_address}, + }, utils::{ display::{SimpleTable, md, size_str}, env::current_locales, @@ -1944,13 +1948,15 @@ async fn jv_direct(args: DirectArgs) { "jv.result.direct.directed_and_stained", upstream = upstream )) - ) + ); + insert_recent_ip_address(upstream.to_string().trim()).await; } SetUpstreamVaultActionResult::Redirected => { println!( "{}", md(t!("jv.result.direct.redirected", upstream = upstream)) - ) + ); + insert_recent_ip_address(upstream.to_string().trim()).await; } SetUpstreamVaultActionResult::AlreadyStained => { eprintln!( diff --git a/src/data.rs b/src/data.rs index 036fd98..d1c5d53 100644 --- a/src/data.rs +++ b/src/data.rs @@ -1,2 +1,4 @@ #[allow(dead_code)] pub mod compile_info; + +pub mod ipaddress_history; diff --git a/src/data/ipaddress_history.rs b/src/data/ipaddress_history.rs new file mode 100644 index 0000000..3d2bb5b --- /dev/null +++ b/src/data/ipaddress_history.rs @@ -0,0 +1,34 @@ +use just_enough_vcs::vcs::current::current_doc_dir; + +const IP_HISTORY_NAME: &str = "ip_history.txt"; + +pub struct IpAddressHistory { + pub recent_ip_address: Vec<String>, +} + +pub async fn get_recent_ip_address() -> Vec<String> { + if let Some(local) = current_doc_dir() { + let path = local.join(IP_HISTORY_NAME); + match tokio::fs::read_to_string(path).await { + Ok(content) => content.lines().map(String::from).collect(), + Err(_) => Vec::new(), + } + } else { + Vec::new() + } +} + +pub async fn insert_recent_ip_address(ip: impl Into<String>) { + let ip = ip.into(); + if let Some(local) = current_doc_dir() { + let path = local.join(IP_HISTORY_NAME); + let mut recent_ips = get_recent_ip_address().await; + recent_ips.retain(|existing_ip| existing_ip != &ip); + recent_ips.insert(0, ip); + if recent_ips.len() > 8 { + recent_ips.truncate(8); + } + let content = recent_ips.join("\n"); + let _ = tokio::fs::write(path, content).await; + } +} |
