Skip to content

Commit 19ececa

Browse files
author
wangnov
committed
feat(update): 更新后检查提示词版本与差异
1 parent 743e061 commit 19ececa

File tree

3 files changed

+343
-5
lines changed

3 files changed

+343
-5
lines changed

src/i18n.rs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ impl I18n {
4848
self.lang
4949
}
5050

51+
pub fn lang_tag(&self) -> &'static str {
52+
match self.lang {
53+
Lang::En => "en",
54+
Lang::Zh => "zh",
55+
}
56+
}
57+
5158
// CLI messages
5259
pub fn err_missing_what_why(&self, cmd: &str) -> String {
5360
match self.lang {
@@ -847,6 +854,76 @@ impl I18n {
847854
}
848855
}
849856

857+
pub fn update_rules_checking(&self) -> &'static str {
858+
match self.lang {
859+
Lang::En => "Checking existing shnote rules...",
860+
Lang::Zh => "正在检查已有的 shnote 提示词...",
861+
}
862+
}
863+
864+
pub fn update_rules_outdated(&self, path: &str) -> String {
865+
match self.lang {
866+
Lang::En => format!("Outdated shnote rules detected: {}", path),
867+
Lang::Zh => format!("检测到提示词版本落后:{}", path),
868+
}
869+
}
870+
871+
pub fn update_rules_modified(&self, path: &str) -> String {
872+
match self.lang {
873+
Lang::En => format!("Modified shnote rules detected: {}", path),
874+
Lang::Zh => format!("检测到提示词包含修改:{}", path),
875+
}
876+
}
877+
878+
pub fn update_rules_diff_header(&self, path: &str) -> String {
879+
match self.lang {
880+
Lang::En => format!("Rules diff (bundled vs current): {}", path),
881+
Lang::Zh => format!("提示词差异(内置规则 vs 当前文件):{}", path),
882+
}
883+
}
884+
885+
pub fn update_rules_diff_base(&self) -> &'static str {
886+
match self.lang {
887+
Lang::En => "bundled",
888+
Lang::Zh => "内置规则",
889+
}
890+
}
891+
892+
pub fn update_rules_diff_current(&self) -> &'static str {
893+
match self.lang {
894+
Lang::En => "current",
895+
Lang::Zh => "当前文件",
896+
}
897+
}
898+
899+
pub fn update_rules_confirm_update(&self) -> &'static str {
900+
match self.lang {
901+
Lang::En => "Update shnote rules now?",
902+
Lang::Zh => "是否更新提示词?",
903+
}
904+
}
905+
906+
pub fn update_rules_confirm_overwrite(&self) -> &'static str {
907+
match self.lang {
908+
Lang::En => "Overwrite with latest shnote rules?",
909+
Lang::Zh => "是否覆盖为最新提示词?",
910+
}
911+
}
912+
913+
pub fn update_rules_skipped(&self) -> &'static str {
914+
match self.lang {
915+
Lang::En => "Skipped updating rules.",
916+
Lang::Zh => "已跳过提示词更新。",
917+
}
918+
}
919+
920+
pub fn update_rules_err_init(&self) -> &'static str {
921+
match self.lang {
922+
Lang::En => "failed to update shnote rules",
923+
Lang::Zh => "更新提示词失败",
924+
}
925+
}
926+
850927
pub fn update_err_install_path(&self) -> &'static str {
851928
match self.lang {
852929
Lang::En => "failed to determine install path",

src/init.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -739,8 +739,8 @@ const SHNOTE_RULES_GEMINI_EXTRA_EN: &str = r#"## Gemini Extra Rules
739739
"#;
740740

741741
/// Marker to identify shnote rules section in append mode
742-
const SHNOTE_MARKER_START: &str = "\n<!-- shnote rules start -->\n";
743-
const SHNOTE_MARKER_END: &str = "\n<!-- shnote rules end -->\n";
742+
pub(crate) const SHNOTE_MARKER_START: &str = "\n<!-- shnote rules start -->\n";
743+
pub(crate) const SHNOTE_MARKER_END: &str = "\n<!-- shnote rules end -->\n";
744744

745745
fn non_shnote_tools_for_target(lang: Lang, target: InitTarget) -> &'static str {
746746
match (lang, target) {
@@ -771,7 +771,11 @@ fn extra_rules_for_target(lang: Lang, target: InitTarget) -> Option<&'static str
771771
}
772772
}
773773

774-
fn rules_for_target(i18n: &I18n, target: InitTarget) -> String {
774+
pub(crate) fn rules_for_target_with_pueue(
775+
i18n: &I18n,
776+
target: InitTarget,
777+
include_pueue: bool,
778+
) -> String {
775779
let template = match i18n.lang() {
776780
Lang::Zh => SHNOTE_RULES_BASE,
777781
Lang::En => SHNOTE_RULES_BASE_EN,
@@ -780,7 +784,7 @@ fn rules_for_target(i18n: &I18n, target: InitTarget) -> String {
780784
"{{NON_SHNOTE_TOOLS}}",
781785
non_shnote_tools_for_target(i18n.lang(), target),
782786
);
783-
let pueue_section = if pueue_available() {
787+
let pueue_section = if include_pueue {
784788
pueue_section_for_lang(i18n.lang())
785789
} else {
786790
""
@@ -793,6 +797,10 @@ fn rules_for_target(i18n: &I18n, target: InitTarget) -> String {
793797
rules
794798
}
795799

800+
fn rules_for_target(i18n: &I18n, target: InitTarget) -> String {
801+
rules_for_target_with_pueue(i18n, target, pueue_available())
802+
}
803+
796804
pub fn run_init(i18n: &I18n, target: InitTarget, scope: Scope) -> Result<()> {
797805
match target {
798806
InitTarget::Claude => init_claude(i18n, scope),

0 commit comments

Comments
 (0)