From da3e102baa0c727edf6e1dcb08f97e6bab94d53b Mon Sep 17 00:00:00 2001 From: lifegpc Date: Sat, 14 Mar 2026 10:19:16 +0800 Subject: [PATCH] Allow to specify bom type for patched kirikiri ks script --- src/args.rs | 4 ++++ src/main.rs | 2 ++ src/scripts/kirikiri/ks.rs | 2 +- src/types.rs | 3 +++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/args.rs b/src/args.rs index ff3cb8e..02742fc 100644 --- a/src/args.rs +++ b/src/args.rs @@ -679,6 +679,10 @@ pub struct Arg { #[arg(long, global = true, value_delimiter = ',', default_value = "macCmd")] /// Kirikiri message tags, used to extract more message from ks script. pub kirikiri_message_tags: Vec, + #[cfg(feature = "kirikiri")] + #[arg(long, global = true)] + /// Specifiy BOM type when creating new Kirikiri ks script. If not specified, detect from original script. + pub kirikiri_ks_bom: Option, #[command(subcommand)] /// Command pub command: Command, diff --git a/src/main.rs b/src/main.rs index bde8590..8d19b8c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3383,6 +3383,8 @@ fn main() { kirikiri_message_tags: std::sync::Arc::new(std::collections::HashSet::from_iter( arg.kirikiri_message_tags.iter().cloned(), )), + #[cfg(feature = "kirikiri")] + kirikiri_ks_bom: arg.kirikiri_ks_bom, }); match &arg.command { args::Command::Export { input, output } => { diff --git a/src/scripts/kirikiri/ks.rs b/src/scripts/kirikiri/ks.rs index 788975c..2bbba8b 100644 --- a/src/scripts/kirikiri/ks.rs +++ b/src/scripts/kirikiri/ks.rs @@ -786,7 +786,7 @@ impl KsScript { talk_count == hitret_count && talk_count > 3 }; Ok(Self { - bom, + bom: config.kirikiri_ks_bom.unwrap_or(bom), tree, name_commands: config.kirikiri_name_commands.clone(), message_commands: config.kirikiri_message_commands.clone(), diff --git a/src/types.rs b/src/types.rs index c2f49fe..7845725 100644 --- a/src/types.rs +++ b/src/types.rs @@ -625,6 +625,9 @@ pub struct ExtraConfig { #[cfg(feature = "kirikiri")] /// Kirikiri message tags, used to extract more message from ks script. pub kirikiri_message_tags: std::sync::Arc>, + #[cfg(feature = "kirikiri")] + /// Specifiy BOM type when creating new Kirikiri ks script. If not specified, detect from original script. + pub kirikiri_ks_bom: Option, } #[derive(Clone, Copy, Debug, ValueEnum, PartialEq, Eq, PartialOrd, Ord)]