19 个版本
0.4.2 | 2023年12月19日 |
---|---|
0.4.0 | 2022年10月9日 |
0.3.5 | 2022年2月8日 |
0.3.3 | 2021年11月19日 |
0.2.2 | 2020年11月24日 |
在 文本编辑器 中排名 58
每月下载量 65
28KB
608 行
shell-string
简单的 CLI 用于执行常见的字符串操作
使用方法
shell-string 0.4.2
Cli for common string operations. Takes input from stdin.
USAGE:
string <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
case Transform upper- or lowercase
chars Prints all chars on separate lines
distinct Output the set of input strings without repetitions, in order
foreach Applies a command to each line of input. Lines won't get applied as stdin to the command, instead
the command may contain the token "__var", which will get substituted with the individual lines
help Prints this message or the help of the given subcommand(s)
interleave Interleave input and only print every nth line
length Returns the length the input string
line Pick a single line by linenumber
map Maps each line of input to a given command. The input will be supplied as stdin of the command
replace Replace all matching words
reverse Reverse order of lines
split Split up a string by a separator and print the parts on separate lines
substr Extract a part of a given string
template Useful for templating, replace sections of input with the output of a shell command or script
trim Trim whitespace on lines and ignore empty ones
为什么存在这个工具
我经常编写 CI 流水线,并处理字符串,尤其是模板,这总是非常痛苦。每个同事都有自己的问题解决风格,而当涉及到字符串转换时,任何非自己编写的解决方案都是难以维护的。这主要是因为完成 shell-string
所做任务的方式有数千种,但这个 CLI 使它们变得 非常直观 且易于理解。最重要的是,我讨厌反复寻找文件模板的解决方案。我编写 shell-string
来避免再次思考最佳文件模板方式。总是这样,就这样。
为什么 shell-string
适合文件模板?
因为实际上你没有任何限制。你需要插入一些环境变量?简单,只需将 {{ echo $MY_VAR }}
写入模板中即可。需要复杂逻辑吗?你可以写 {{ console.log(crazyStuff()) }}
,然后使用 --shell=node
执行。你想要在模板文件中使用 haskell
吗?使用 --shell=ghci
!
《字符串模板》命令非常强大,因为它本身不进行繁重的操作,就像很多替代方案那样。相反,它依赖于使用你在终端中可以使用的所有工具。你可以指定命令是如何被解释的,无论是通过 ghci
、python
还是 sh
(默认)。
使用《字符串模板》,你甚至可以为自己设置文件模板的工作流程。这在持续集成(CI)或配置新系统时特别有用。
这看起来是什么样子呢?
kind: Deployment
metadata:
name: {{ echo $GIT_REPO_NAME }}-deployment
labels:
deployed: "{{date}}"
app: {{ echo $GIT_REPO_NAME }}
spec:
replicas: {{jq .replicas < config.json}}
...
image: {{node getImageName.js}}
...
默认情况下,使用 sh
来解释 {
和 }
之间的命令,如果你不喜欢这些分隔符,那也行。你可以选择你喜欢的任何分隔符。你应该这么做。
我如何使用文档作为模板呢?
假设你有一个文档 deployment.template.yaml
,并且你想生成一个名为 deployment.yaml
的文件,这很简单。打开终端并输入
cat deployment.template.yaml | string template > deployment.yaml
这意味着
cat deployment.template.yaml
:打印文件deployment.template.yaml
| string template
:这里的|
表示“不要在终端中打印此内容,将其管道传输到另一个程序”,而这个程序是string
在template
模式下。> deployment.yaml
:将输出写入一个名为deployment.yaml
的文件。如果文件已存在,则先清空。
安装
如果你的机器上已安装 cargo,执行
cargo install shell-string
要验证安装是否成功,请输入 string --version
。如果安装成功,你应该会看到适当的版本号。
如果你想要最新版本,请使用以下命令在本地上检出此存储库
git clone https://github.com/nilsmartel/string
并使用以下命令构建和安装代码
cd string # go into the repository
cargo install --path . --force # use force in case the binary is alread installed
依赖项
~4.5MB
~79K SLoC