Use rawstr4c for usage and -v

This commit is contained in:
Aoran Zeng 2025-07-22 18:18:04 +08:00
parent 2ea11f3e83
commit 31f1f30c31
No known key found for this signature in database
GPG Key ID: 8F8BA8488E10ED98
3 changed files with 183 additions and 105 deletions

View File

@ -139,92 +139,7 @@
#include "recipe/menu.c"
static const char *
USAGE_CHINESE =
R"(名称:
chsrc - Change Source - (GPLv3+) - Developed by RubyMetric
:
@ver@
使:
chsrc <command> [options] [target] [mirror]
:
help, h -h, --help
issue issue
list, ls, l
list mirror|target : /
list os|lang|ware : //
list <target>
measure, m, cesu <target>
get, g <target> 使
set, s <target>
set <target> first 使
set <target> <mirror> 使 (list <target>)
set <target> <URL> URL
reset <target> 使使
:
-dry Dry Run
-local (ls <target>)
-ipv6 使IPv6测速
-en(glish) 使
-no-color
:
Chef, recipe
: @url@
: https://github.com/RubyMetric/chsrc/issues/130)";
static const char *
USAGE_ENGLISH =
R"(NAME:
chsrc - Change Source - (GPLv3+) - Developed by RubyMetric
VERSION:
@ver@
USAGE:
chsrc <command> [options] [target] [mirror]
COMMANDS:
help, h Print this help, or -h, --help
issue See related issues
list, ls, l List available mirror sites and supported targets
list mirror|target List supported: mirror sites/supported targets
list os|lang|ware List supported: OSes/Programming Languages/Softwares
list <target> View available sources and supporting features for <target>
measure, m, cesu <target> Measure velocity of all sources of <target>
get, g <target> View the current source state for <target>
set, s <target> Change source, select the fastest source by automatic speed measurement
set <target> first Change source, select the fastest source measured by the maintainers team
set <target> <mirror> Change source, specify a mirror site (Via `list <target>`)
set <target> <URL> Change source, using user-defined source URL
reset <target> Reset source to the upstream's default
OPTIONS:
-dry Dry Run. Simulate the source changing process, command only prints, not run
-local Change source only for this project rather than globally (Via `ls <target>`)
-ipv6 Speed measurement using IPv6
-en(glish) Output in English
-no-color Output without color
MAINTAIN:
We invite you to become a Chef to ensure the quality of recipes you are familiar with for users:
Source Code: @url@,
Become a Maintainer: https://github.com/RubyMetric/chsrc/issues/130)";
#include "rawstr4c.h"
@ -425,13 +340,8 @@ cli_print_target_features (Feature_t f, const char *input_target_name)
void
cli_print_version ()
{
say ("chsrc " Chsrc_Version);
say (R"(Copyright (C) 2025 Aoran Zeng, Heng Guo
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Aoran Zeng, Heng Guo and contributors. (See chsrc-main.c))");
char *str = xy_str_gsub (RAWSTR_chsrc_for_v, "@ver@", Chsrc_Version);
print (str);
}
@ -440,27 +350,18 @@ cli_print_help ()
{
char *version_string = purple("v" Chsrc_Version "-" Chsrc_Release_Date);
const char *raw = CHINESE ? USAGE_CHINESE : USAGE_ENGLISH;
const char *raw = CHINESE ? RAWSTR_chsrc_USAGE_CHINESE : RAWSTR_chsrc_USAGE_ENGLISH;
char *str = xy_str_gsub (raw, "@ver@", version_string);
str = xy_str_gsub (str, "@url@", Chsrc_Maintain_URL);
println (str);
print (str);
}
void
cli_print_issues ()
{
say (R"(
We accept issues both sides on Gitee and Github
- https://gitee.com/RubyMetric/chsrc/issues
- https://github.com/RubyMetric/chsrc/issues
Latest Mirror site status wiki:
- https://github.com/RubyMetric/chsrc/wiki
)");
print (RAWSTR_chsrc_for_issue);
/*
if (chsrc_check_program ("gh"))

14
src/rawstr4c.h Normal file

File diff suppressed because one or more lines are too long

163
src/rawstr4c.md Normal file
View File

@ -0,0 +1,163 @@
<!-- -----------------------------------------------------------
! SPDX-License-Identifier: GPL-3.0-or-later
! -------------------------------------------------------------
! Config Type : rawstr4c (Markdown)
! Config Authors: Aoran Zeng <ccmywish@qq.com>
! Contributors : Nil Null <nil@null.org>
! Created On : <2025-07-22>
! Last Modified : <2025-07-22>
! ---------------------------------------------------------- -->
# rawstr4c input for chsrc
`chsrc` 使用的 C标准 (最低要求) 是 `gnu11` (`c11` 的超集),这也就是说,我们项目是可以,而且是 **推荐** 同时混用 `R"()"``rawstr4c`
`LLVM``R"()"` 的支持是在 2024年07月 以后。但是在 GitHub Actions 中,所有出现的 `LLVM` 版本都太低了,
这使得我们被迫把已经写过的 `R"()"` 全部再转换为 `rawstr4c`.
用户端的编译器一般比较新,然而可能也没有新到如此的地步,通过使用 `rawstr4c` 我们也放宽了用户对编译器的要求。
我们预计等2~3年后在项目中重新开始 `R"()"` 的写法
<br>
- prefix = `RAWSTR_chsrc`
- output = `:global-variable-only-header`
- translate = `:oct`
- keep-postfix = `false`
<br>
## 中文帮助
- name = `USAGE_CHINESE`
```
名称:
chsrc - Change Source - (GPLv3+)
版本:
@ver@
使用:
chsrc <command> [options] [target] [mirror]
命令:
help, h 打印此帮助,或 -h, --help
issue 查看相关issue
list, ls, l 列出可用镜像站和可换源目标
list mirror|target 列出支持的: 镜像站/换源目标
list os|lang|ware 列出支持的: 操作系统/编程语言/软件
list <target> 查看该目标可用源与支持功能
measure, m, cesu <target> 对该目标所有源测速
get, g <target> 查看该目标当前源的使用情况
set, s <target> 换源,自动测速后挑选最快源
set <target> first 换源,使用维护团队测速第一的源
set <target> <mirror> 换源,指定使用某镜像站 (通过list <target>查看)
set <target> <URL> 换源用户自定义源URL
reset <target> 重置,使用上游默认使用的源
选项:
-dry Dry Run模拟换源过程命令仅打印并不运行
-local 仅对本项目而非全局换源 (通过ls <target>查看支持情况)
-ipv6 使用IPv6测速
-en(glish) 使用英文输出
-no-color 无颜色输出
维护:
邀请您担任 Chef, 为用户把关您熟悉的 recipe
源代码地址: @url@
成为维护者: https://github.com/RubyMetric/chsrc/issues/130
```
<br>
## 英文帮助
- name = `USAGE_ENGLISH`
```
NAME:
chsrc - Change Source - (GPLv3+)
VERSION:
@ver@
USAGE:
chsrc <command> [options] [target] [mirror]
COMMANDS:
help, h Print this help, or -h, --help
issue See related issues
list, ls, l List available mirror sites and supported targets
list mirror|target List supported: mirror sites/supported targets
list os|lang|ware List supported: OSes/Programming Languages/Softwares
list <target> View available sources and supporting features for <target>
measure, m, cesu <target> Measure velocity of all sources of <target>
get, g <target> View the current source state for <target>
set, s <target> Change source, select the fastest source by automatic speed measurement
set <target> first Change source, select the fastest source measured by the maintainers team
set <target> <mirror> Change source, specify a mirror site (Via `list <target>`)
set <target> <URL> Change source, using user-defined source URL
reset <target> Reset source to the upstream's default
OPTIONS:
-dry Dry Run. Simulate the source changing process, command only prints, not run
-local Change source only for this project rather than globally (Via `ls <target>`)
-ipv6 Speed measurement using IPv6
-en(glish) Output in English
-no-color Output without color
MAINTAIN:
We invite you to become a Chef to ensure the quality of recipes you are familiar with for users:
Source Code: @url@,
Become a Maintainer: https://github.com/RubyMetric/chsrc/issues/130
```
<br>
## for `chsrc -v`
- name = `for__v`
```
chsrc @ver@
Copyright (C) 2025 Aoran Zeng, Heng Guo
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Aoran Zeng, Heng Guo and contributors. (See chsrc-main.c)
```
<br>
## for `chsrc issue`
- name = `for_issue`
```
We accept issues both sides on Gitee and Github
- https://gitee.com/RubyMetric/chsrc/issues
- https://github.com/RubyMetric/chsrc/issues
Latest Mirror site status wiki:
- https://github.com/RubyMetric/chsrc/wiki
```