From a6f791acbf9b70c8ece1fb7b7ec2db9d0c7f5c1f Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 24 Jul 2022 23:12:36 +0900 Subject: [PATCH] fixed set-default-profile do not overwrite default_profile.txt #165 --- src/options/profile.rs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/options/profile.rs b/src/options/profile.rs index 9605c24a..1e65933a 100644 --- a/src/options/profile.rs +++ b/src/options/profile.rs @@ -5,7 +5,7 @@ use crate::yaml; use lazy_static::lazy_static; use linked_hash_map::LinkedHashMap; use std::collections::HashSet; -use std::fs::File; +use std::fs::OpenOptions; use std::io::{BufWriter, Write}; use std::path::Path; use yaml_rust::{Yaml, YamlEmitter, YamlLoader}; @@ -59,9 +59,10 @@ pub fn load_profile( .set_default_profile .is_some() { - match set_default_profile(default_profile_path, profile_path) { - Err(e) => AlertMessage::alert(&e).ok(), - _ => None, + if let Err(e) = set_default_profile(default_profile_path, profile_path) { + AlertMessage::alert(&e).ok(); + } else { + println!("Successed set default profile"); }; } let conf = &configs::CONFIG.read().unwrap().args; @@ -135,7 +136,7 @@ pub fn set_default_profile(default_profile_path: &str, profile_path: &str) -> Re // デフォルトプロファイルを設定する処理 if let Some(profile_name) = &configs::CONFIG.read().unwrap().args.set_default_profile { - if let Ok(mut buf_wtr) = File::open(default_profile_path).map(BufWriter::new) { + if let Ok(mut buf_wtr) = OpenOptions::new().write(true).truncate(true).open(default_profile_path).map(BufWriter::new) { let prof_all_data = &profile_data[0]; let overwrite_default_data = &prof_all_data[profile_name.as_str()]; if !overwrite_default_data.is_null() { @@ -143,12 +144,15 @@ pub fn set_default_profile(default_profile_path: &str, profile_path: &str) -> Re let mut yml_writer = YamlEmitter::new(&mut out_str); let dump_result = yml_writer.dump(overwrite_default_data); match dump_result { - Ok(_) => match write!(buf_wtr, "{}", out_str) { + Ok(_) => match buf_wtr.write_all(out_str.as_bytes()) { Err(e) => Err(format!( "Failed set profile to default profile file({}). {}", profile_path, e )), - _ => Ok(()), + _ => { + buf_wtr.flush().ok(); + Ok(()) + }, }, Err(e) => Err(format!( "Failed set profile to default profile file({}). {}",