From f27467d16c18ca6f91bcc49c174763df9f34f2ac Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 3 Jul 2022 19:38:58 +0900 Subject: [PATCH 01/11] add: check rules and rules-config option path check and use current dir when no exist specified path with options #618 --- src/main.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index ffe09ab7..509c513b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -143,7 +143,7 @@ impl App { .ok(); return; } - // ワーキングディレクトリ以外からの実行の際にrules-configオプションの指定がないとエラーが発生することを防ぐための処理 + // カレントディレクトリ以外からの実行の際にrules-configオプションの指定がないとエラーが発生することを防ぐための処理 if configs::CONFIG .read() .unwrap() @@ -154,10 +154,20 @@ impl App { == "./rules/config" { configs::CONFIG.write().unwrap().args.config = CURRENT_EXE_PATH.join("rules/config"); + // hayabusa.exeが存在するパスにrules/configがない場合はカレントディレクトリのrules/configを確認する + if !configs::CONFIG.read().unwrap().args.config.exists() { + configs::CONFIG.write().unwrap().args.config = + Path::new("./rules/config").to_path_buf(); + } } - // ワーキングディレクトリ以外からの実行の際にrules-configオプションの指定がないとエラーが発生することを防ぐための処理 + + // カレントディレクトリ以外からの実行の際にrulesオプションの指定がないとエラーが発生することを防ぐための処理 if configs::CONFIG.read().unwrap().args.rules.to_str().unwrap() == "./rules" { configs::CONFIG.write().unwrap().args.rules = CURRENT_EXE_PATH.join("rules"); + // hayabusa.exeが存在するパスにrulesがない場合はカレントディレクトリのrulesを確認する + if !configs::CONFIG.read().unwrap().args.rules.exists() { + configs::CONFIG.write().unwrap().args.rules = Path::new("./rules").to_path_buf(); + } } if let Some(csv_path) = &configs::CONFIG.read().unwrap().args.output { From 867d51d9c53d5ae11d33a76f06eaddad224fa7ff Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 3 Jul 2022 20:49:22 +0900 Subject: [PATCH 02/11] add: check path func #618 --- src/detections/utils.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/detections/utils.rs b/src/detections/utils.rs index 18754e3d..c78b6f36 100644 --- a/src/detections/utils.rs +++ b/src/detections/utils.rs @@ -4,6 +4,8 @@ extern crate regex; use crate::detections::configs; use crate::detections::configs::CURRENT_EXE_PATH; +use std::path::Path; +use std::path::PathBuf; use termcolor::Color; @@ -376,9 +378,20 @@ pub fn make_ascii_titlecase(s: &mut str) -> String { } } +/// base_path/path が存在するかを確認し、存在しなければカレントディレクトリを参照するpathを返す関数 +pub fn check_setting_path(base_path: &Path, path: &str) -> PathBuf { + if base_path.join(path).exists() { + base_path.join(path) + } else { + Path::new(path).to_path_buf() + } +} + #[cfg(test)] mod tests { - use crate::detections::utils::{self, make_ascii_titlecase}; + use std::path::Path; + + use crate::detections::utils::{self, check_setting_path, make_ascii_titlecase}; use regex::Regex; use serde_json::Value; From 60a12cb1ffc51ada25bd2e8333f9ebe6c256ef79 Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 3 Jul 2022 20:50:20 +0900 Subject: [PATCH 03/11] add: test #618 --- src/detections/utils.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/detections/utils.rs b/src/detections/utils.rs index c78b6f36..df2e3677 100644 --- a/src/detections/utils.rs +++ b/src/detections/utils.rs @@ -553,4 +553,31 @@ mod tests { ); assert_eq!(make_ascii_titlecase("β".to_string().as_mut()), "β"); } + + #[test] + /// 与えられたパスからファイルの存在確認ができているかのテスト + fn test_check_setting_path() { + let exist_path = Path::new("./test_files").to_path_buf(); + let not_exist_path = Path::new("not_exist_path").to_path_buf(); + assert_eq!( + check_setting_path(¬_exist_path, "rules") + .to_str() + .unwrap(), + "rules" + ); + assert_eq!( + check_setting_path(¬_exist_path, "fake") + .to_str() + .unwrap(), + "fake" + ); + assert_eq!( + check_setting_path(&exist_path, "rules").to_str().unwrap(), + exist_path.join("rules").to_str().unwrap() + ); + assert_eq!( + check_setting_path(&exist_path, "fake").to_str().unwrap(), + "fake" + ); + } } From f43b39af156ee638a0df3c9f3932e7b760dd54e0 Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 3 Jul 2022 20:51:00 +0900 Subject: [PATCH 04/11] add: used check path func base on execution path #618 --- src/detections/configs.rs | 20 ++++++++++++-------- src/detections/print.rs | 13 +++++++------ src/detections/utils.rs | 3 +-- src/main.rs | 27 ++++++--------------------- 4 files changed, 26 insertions(+), 37 deletions(-) diff --git a/src/detections/configs.rs b/src/detections/configs.rs index 8603300e..31dd83ee 100644 --- a/src/detections/configs.rs +++ b/src/detections/configs.rs @@ -241,16 +241,20 @@ impl ConfigReader<'_> { args: parse, headless_help: String::default(), event_timeline_config: load_eventcode_info( - CURRENT_EXE_PATH - .join("rules/config/statistics_event_info.txt") - .to_str() - .unwrap(), + utils::check_setting_path( + &CURRENT_EXE_PATH.to_path_buf(), + "rules/config/statistics_event_info.txt", + ) + .to_str() + .unwrap(), ), target_eventids: load_target_ids( - CURRENT_EXE_PATH - .join("rules/config/target_event_IDs.txt") - .to_str() - .unwrap(), + utils::check_setting_path( + &CURRENT_EXE_PATH.to_path_buf(), + "rules/config/target_event_IDs.txt", + ) + .to_str() + .unwrap(), ), } } diff --git a/src/detections/print.rs b/src/detections/print.rs index 4d0daf2d..96014349 100644 --- a/src/detections/print.rs +++ b/src/detections/print.rs @@ -54,18 +54,19 @@ lazy_static! { pub static ref STATISTICS_FLAG: bool = configs::CONFIG.read().unwrap().args.statistics; pub static ref LOGONSUMMARY_FLAG: bool = configs::CONFIG.read().unwrap().args.logon_summary; pub static ref TAGS_CONFIG: HashMap = Message::create_output_filter_config( - CURRENT_EXE_PATH - .join("config/output_tag.txt") + utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), "config/output_tag.txt") .to_str() .unwrap(), true, configs::CONFIG.read().unwrap().args.all_tags ); pub static ref CH_CONFIG: HashMap = Message::create_output_filter_config( - CURRENT_EXE_PATH - .join("rules/config/channel_abbreviations.txt") - .to_str() - .unwrap(), + utils::check_setting_path( + &CURRENT_EXE_PATH.to_path_buf(), + "rules/config/channel_abbreviations.txt" + ) + .to_str() + .unwrap(), false, configs::CONFIG.read().unwrap().args.all_tags ); diff --git a/src/detections/utils.rs b/src/detections/utils.rs index df2e3677..1dec5959 100644 --- a/src/detections/utils.rs +++ b/src/detections/utils.rs @@ -71,8 +71,7 @@ pub fn value_to_string(value: &Value) -> Option { pub fn read_txt(filename: &str) -> Result, String> { let filepath = if filename.starts_with("./") { - CURRENT_EXE_PATH - .join(filename) + check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), filename) .to_str() .unwrap() .to_string() diff --git a/src/main.rs b/src/main.rs index 509c513b..949baee8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -144,30 +144,15 @@ impl App { return; } // カレントディレクトリ以外からの実行の際にrules-configオプションの指定がないとエラーが発生することを防ぐための処理 - if configs::CONFIG - .read() - .unwrap() - .args - .config - .to_str() - .unwrap() - == "./rules/config" - { - configs::CONFIG.write().unwrap().args.config = CURRENT_EXE_PATH.join("rules/config"); - // hayabusa.exeが存在するパスにrules/configがない場合はカレントディレクトリのrules/configを確認する - if !configs::CONFIG.read().unwrap().args.config.exists() { - configs::CONFIG.write().unwrap().args.config = - Path::new("./rules/config").to_path_buf(); - } + if configs::CONFIG.read().unwrap().args.config == Path::new("./rules/config") { + configs::CONFIG.write().unwrap().args.config = + utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), "./rules/config"); } // カレントディレクトリ以外からの実行の際にrulesオプションの指定がないとエラーが発生することを防ぐための処理 - if configs::CONFIG.read().unwrap().args.rules.to_str().unwrap() == "./rules" { - configs::CONFIG.write().unwrap().args.rules = CURRENT_EXE_PATH.join("rules"); - // hayabusa.exeが存在するパスにrulesがない場合はカレントディレクトリのrulesを確認する - if !configs::CONFIG.read().unwrap().args.rules.exists() { - configs::CONFIG.write().unwrap().args.rules = Path::new("./rules").to_path_buf(); - } + if configs::CONFIG.read().unwrap().args.rules == Path::new("./rules") { + configs::CONFIG.write().unwrap().args.rules = + utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), "./rules"); } if let Some(csv_path) = &configs::CONFIG.read().unwrap().args.output { From 51079810cbb6ff77208c4ae108887578144f26c7 Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 3 Jul 2022 20:51:57 +0900 Subject: [PATCH 05/11] change: fixed config folder check alert condition --- src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 949baee8..ee171f4b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -136,7 +136,7 @@ impl App { return; } // 実行時のexeファイルのパスをベースに変更する必要があるためデフォルトの値であった場合はそのexeファイルと同一階層を探すようにする - if !CURRENT_EXE_PATH.join("config").exists() { + if !CURRENT_EXE_PATH.join("config").exists() && !Path::new("./config").exists() { AlertMessage::alert( "Hayabusa could not find the config directory.\nPlease make sure that it is in the same directory as the hayabusa executable." ) From 604444236e9a9a427cbcf1f39f6c48606ecf1ddf Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 3 Jul 2022 20:52:26 +0900 Subject: [PATCH 06/11] updated hayabusa version num --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 9a44a3db..72706daf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -673,7 +673,7 @@ dependencies = [ [[package]] name = "hayabusa" -version = "1.4.1" +version = "1.4.2-dev" dependencies = [ "base64", "bytesize", From d4943753a859d9dc722d8c64e91d88ea9358a17a Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 3 Jul 2022 20:58:58 +0900 Subject: [PATCH 07/11] updated changelog #618 --- CHANGELOG-Japanese.md | 2 +- CHANGELOG.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG-Japanese.md b/CHANGELOG-Japanese.md index 561bffbd..d11f8558 100644 --- a/CHANGELOG-Japanese.md +++ b/CHANGELOG-Japanese.md @@ -12,7 +12,7 @@ **バグ修正:** -- XXX +- configフォルダの読み込みで実行ファイルが配置されている箇所のみを確認したことによるコンフィグフォルダの読み込みエラーを修正した。 (#618) (@hitenkoku) ## v1.4.1 [2022/06/30] diff --git a/CHANGELOG.md b/CHANGELOG.md index ea9409cd..4dbdf956 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ **Bug Fixes:** -- XXX +- Fixed error due to the files in the config folder cannot be read. (#618) (@hitenkoku) ## v1.4.1 [2022/06/30] From 159d7ee1372a295b49eb078f090d53b4328136c5 Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 3 Jul 2022 22:55:31 +0900 Subject: [PATCH 08/11] updated chagelog jp #618 --- CHANGELOG-Japanese.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG-Japanese.md b/CHANGELOG-Japanese.md index d11f8558..885963a0 100644 --- a/CHANGELOG-Japanese.md +++ b/CHANGELOG-Japanese.md @@ -12,7 +12,7 @@ **バグ修正:** -- configフォルダの読み込みで実行ファイルが配置されている箇所のみを確認したことによるコンフィグフォルダの読み込みエラーを修正した。 (#618) (@hitenkoku) +- cargo runコマンドでhayabusaを実行した場合、configフォルダの読み込みエラーが発生する問題を修正した。 (#618) (@hitenkoku) ## v1.4.1 [2022/06/30] From c299edd62d1436cf110ecbaccfa388dec9df69fb Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 3 Jul 2022 22:56:56 +0900 Subject: [PATCH 09/11] fix: used check path func based on current exection path #618 --- src/afterfact.rs | 4 ++-- src/main.rs | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/afterfact.rs b/src/afterfact.rs index b2cf7f25..f93823cf 100644 --- a/src/afterfact.rs +++ b/src/afterfact.rs @@ -65,8 +65,8 @@ lazy_static! { /// level_color.txtファイルを読み込み対応する文字色のマッピングを返却する関数 pub fn set_output_color() -> HashMap { let read_result = utils::read_csv( - CURRENT_EXE_PATH - .join("config/level_color.txt") + utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), +"config/level_color.txt") .to_str() .unwrap(), ); diff --git a/src/main.rs b/src/main.rs index ee171f4b..7bd2cab2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -79,8 +79,8 @@ impl App { fn exec(&mut self) { if *PIVOT_KEYWORD_LIST_FLAG { load_pivot_keywords( - CURRENT_EXE_PATH - .join("config/pivot_keywords.txt") + utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), +"config/pivot_keywords.txt") .to_str() .unwrap(), ); @@ -253,8 +253,8 @@ impl App { .unwrap(); let level_tuning_config_path = match level_tuning_val { Some(path) => path.to_owned(), - _ => CURRENT_EXE_PATH - .join("./rules/config/level_tuning.txt") + _ => utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), + "./rules/config/level_tuning.txt") .display() .to_string(), }; @@ -458,7 +458,7 @@ impl App { } fn print_contributors(&self) { - match fs::read_to_string(CURRENT_EXE_PATH.join("contributors.txt")) { + match fs::read_to_string(utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), "contributors.txt")) { Ok(contents) => { write_color_buffer( &BufferWriter::stdout(ColorChoice::Always), @@ -707,7 +707,7 @@ impl App { /// output logo fn output_logo(&self) { - let fp = CURRENT_EXE_PATH.join("art/logo.txt"); + let fp = utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), "art/logo.txt"); let content = fs::read_to_string(fp).unwrap_or_default(); let output_color = if configs::CONFIG.read().unwrap().args.no_color { None @@ -734,7 +734,7 @@ impl App { match eggs.get(exec_datestr) { None => {} Some(path) => { - let egg_path = CURRENT_EXE_PATH.join(path); + let egg_path =utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(),path); let content = fs::read_to_string(egg_path).unwrap_or_default(); write_color_buffer( &BufferWriter::stdout(ColorChoice::Always), From d172831e94345533b2861de490fd29bd6a055828 Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Sun, 3 Jul 2022 22:59:21 +0900 Subject: [PATCH 10/11] cargo fmt --- src/afterfact.rs | 3 +-- src/main.rs | 27 +++++++++++++++++---------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/afterfact.rs b/src/afterfact.rs index f93823cf..152fe67f 100644 --- a/src/afterfact.rs +++ b/src/afterfact.rs @@ -65,8 +65,7 @@ lazy_static! { /// level_color.txtファイルを読み込み対応する文字色のマッピングを返却する関数 pub fn set_output_color() -> HashMap { let read_result = utils::read_csv( - utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), -"config/level_color.txt") + utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), "config/level_color.txt") .to_str() .unwrap(), ); diff --git a/src/main.rs b/src/main.rs index 7bd2cab2..ad182426 100644 --- a/src/main.rs +++ b/src/main.rs @@ -79,10 +79,12 @@ impl App { fn exec(&mut self) { if *PIVOT_KEYWORD_LIST_FLAG { load_pivot_keywords( - utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), -"config/pivot_keywords.txt") - .to_str() - .unwrap(), + utils::check_setting_path( + &CURRENT_EXE_PATH.to_path_buf(), + "config/pivot_keywords.txt", + ) + .to_str() + .unwrap(), ); } @@ -253,10 +255,12 @@ impl App { .unwrap(); let level_tuning_config_path = match level_tuning_val { Some(path) => path.to_owned(), - _ => utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), - "./rules/config/level_tuning.txt") - .display() - .to_string(), + _ => utils::check_setting_path( + &CURRENT_EXE_PATH.to_path_buf(), + "./rules/config/level_tuning.txt", + ) + .display() + .to_string(), }; if Path::new(&level_tuning_config_path).exists() { @@ -458,7 +462,10 @@ impl App { } fn print_contributors(&self) { - match fs::read_to_string(utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), "contributors.txt")) { + match fs::read_to_string(utils::check_setting_path( + &CURRENT_EXE_PATH.to_path_buf(), + "contributors.txt", + )) { Ok(contents) => { write_color_buffer( &BufferWriter::stdout(ColorChoice::Always), @@ -734,7 +741,7 @@ impl App { match eggs.get(exec_datestr) { None => {} Some(path) => { - let egg_path =utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(),path); + let egg_path = utils::check_setting_path(&CURRENT_EXE_PATH.to_path_buf(), path); let content = fs::read_to_string(egg_path).unwrap_or_default(); write_color_buffer( &BufferWriter::stdout(ColorChoice::Always), From 6a29b166fdb6971d4ae31c52413dce189b3c1ecc Mon Sep 17 00:00:00 2001 From: hach1yon Date: Sun, 3 Jul 2022 23:46:30 +0900 Subject: [PATCH 11/11] fix change log --- CHANGELOG-Japanese.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG-Japanese.md b/CHANGELOG-Japanese.md index 885963a0..5b8fbc00 100644 --- a/CHANGELOG-Japanese.md +++ b/CHANGELOG-Japanese.md @@ -12,7 +12,7 @@ **バグ修正:** -- cargo runコマンドでhayabusaを実行した場合、configフォルダの読み込みエラーが発生する問題を修正した。 (#618) (@hitenkoku) +- cargo runコマンドでhayabusaを実行するとconfigフォルダの読み込みエラーが発生する問題を修正した。 (#618) (@hitenkoku) ## v1.4.1 [2022/06/30]