From 5aeb706796fa3de07589f51dba596118a12bf0af Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Tue, 5 Aug 2025 20:00:30 +0800 Subject: [PATCH 1/2] feat: support maven-daemon resolve RubyMetric/chsrc#183 --- src/recipe/lang/Java.c | 52 ++++++++++++++++++++++++++++++++++-------- src/recipe/menu.c | 4 ++-- 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index e25a83a..5240d7b 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -29,14 +29,15 @@ def_sources_n(pl_java); void -pl_java_check_cmd (bool *maven_exist, bool *gradle_exist) +pl_java_check_cmd (bool *maven_exist, bool *gradle_exist, bool *maven_daemon_exist) { *maven_exist = chsrc_check_program ("mvn"); *gradle_exist = chsrc_check_program ("gradle"); + *gradle_exist = chsrc_check_program ("mvnd"); - if (! *maven_exist && ! *gradle_exist) + if (! *maven_exist && ! *gradle_exist && ! *maven_daemon_exist) { - chsrc_error ("maven 与 gradle 命令均未找到,请检查是否存在其一"); + chsrc_error ("maven(maven-daemon) 与 gradle 命令均未找到,请检查是否存在其一"); exit (Exit_UserCause); } } @@ -54,13 +55,33 @@ pl_java_find_maven_config () } +char * +pl_java_find_maven_daemon_config () +{ + char *buf = xy_run ("mvnd -v", 2); + char *maven_home = xy_str_delete_prefix (buf, "Maven daemon home: "); + maven_home = xy_str_strip (maven_home); + + char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); + return maven_config; +} + + void pl_java_getsrc (char *option) { - bool maven_exist, gradle_exist; - pl_java_check_cmd (&maven_exist, &gradle_exist); - char *maven_config = pl_java_find_maven_config (); - chsrc_note2 (xy_2strjoin ("请查看 ", maven_config)); + bool maven_exist, gradle_exist, maven_daemon_exist; + pl_java_check_cmd (&maven_exist, &gradle_exist, &maven_daemon_exist); + if (maven_exist) + { + char *maven_config = pl_java_find_maven_config (); + chsrc_note2 (xy_2strjoin ("请查看 ", maven_config)); + } + if(maven_daemon_exist) + { + char *maven_config = pl_java_find_maven_daemon_config (); + chsrc_note2 (xy_2strjoin ("请查看 ", maven_config)); + } } @@ -70,8 +91,8 @@ pl_java_getsrc (char *option) void pl_java_setsrc (char *option) { - bool maven_exist, gradle_exist; - pl_java_check_cmd (&maven_exist, &gradle_exist); + bool maven_exist, gradle_exist, maven_daemon_exist; + pl_java_check_cmd (&maven_exist, &gradle_exist, &maven_daemon_exist); chsrc_yield_source_and_confirm (pl_java); @@ -85,6 +106,16 @@ pl_java_setsrc (char *option) println (file); } + if (maven_daemon_exist) + { + char *file = xy_str_gsub (RAWSTR_pl_java_maven_config, "@1@", source.mirror->code); + file = xy_str_gsub (file, "@name@", source.mirror->name); + file = xy_str_gsub (file, "@url@", source.url); + char *maven_config = pl_java_find_maven_daemon_config (); + chsrc_note2 (xy_strjoin (3, "请在 maven 配置文件 ", maven_config, " 中添加:")); + println (file); + } + if (gradle_exist) { if (maven_exist) br(); @@ -93,6 +124,7 @@ pl_java_setsrc (char *option) println (file); } + chsrc_determine_chgtype (ChgType_Manual); chsrc_conclude (&source); } @@ -122,4 +154,4 @@ pl_java_feat (char *option) return f; } -def_target_gsrf(pl_java); +def_target_gsrf(pl_java); \ No newline at end of file diff --git a/src/recipe/menu.c b/src/recipe/menu.c index 1501d7f..da94e67 100644 --- a/src/recipe/menu.c +++ b/src/recipe/menu.c @@ -36,7 +36,7 @@ static const char *pl_rust_cargo[] = {"rust", "cargo", "crate", "crates", NULL, t(&pl_rust_cargo_target)}, *pl_rust_rustup[]= {"rustup", NULL, t(&pl_rust_rustup_target)}, -*pl_java [] = {"java", "maven", "mvn", "gradle", NULL, t(&pl_java_target)}, +*pl_java [] = {"java", "maven", "mvn", "mvnd", "maven-daemon", "maven-mvnd", "gradle", NULL, t(&pl_java_target)}, *pl_clojure[]= {"clojure","clojars","cloj", "lein", NULL, t(&pl_clojure_target)}, *pl_dart [] = {"dart", "pub", NULL, t(&pl_dart_target)}, @@ -181,4 +181,4 @@ available_mirrors[] = { }; -/* End Target Matrix */ +/* End Target Matrix */ \ No newline at end of file From 71e7312002e5f3185a9145eb840a0a0fb5ac1b0f Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Sun, 10 Aug 2025 23:06:31 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9maven=5Fhome?= =?UTF-8?q?=E7=9A=84=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F=20todo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolve RubyMetric/chsrc#238 --- src/recipe/lang/Java.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index 5240d7b..e003fc7 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -42,12 +42,25 @@ pl_java_check_cmd (bool *maven_exist, bool *gradle_exist, bool *maven_daemon_exi } } +bool +chef_is_home (const char *str) +{ + return (xy_str_start_with (str, "Maven home:")); +} + +char* +pl_java_find_maven_home (const char *source) +{ + if(chef_is_home(source)) + { + char *maven_home = xy_str_delete_prefix (source, "Maven home: "); + } +} char * pl_java_find_maven_config () { - char *buf = xy_run ("mvn -v", 2); - char *maven_home = xy_str_delete_prefix (buf, "Maven home: "); + char *maven_home = xy_run_iter ("mvn -v", 0, pl_java_find_maven_home); maven_home = xy_str_strip (maven_home); char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); @@ -58,7 +71,7 @@ pl_java_find_maven_config () char * pl_java_find_maven_daemon_config () { - char *buf = xy_run ("mvnd -v", 2); + char *buf = xy_run_iter ("mvnd -v", 0, pl_java_find_maven_home); char *maven_home = xy_str_delete_prefix (buf, "Maven daemon home: "); maven_home = xy_str_strip (maven_home);