#key-value #key-value-store #gpg #git #storage #command-line #cli

app kv-cli

存储和检索键值对的命令行工具

1 个不稳定版本

0.1.0 2022年11月28日

#27#gpg

自定义许可协议

37KB
980

kv

kv(发音为 [keɪ ve:])是一个加密和版本化的命令行键值存储。它与 passrpassgopass 以及它的所有表亲和兄弟类似。实际上,它与它们兼容,但有一个主要区别:kv 是一个键值存储,而不是密码存储。它不包含密码管理器的所有功能和装饰,只提供存储和检索键值对的最基本功能。因此,kv 比其他工具更简单、更易于使用,并且也更容易集成到您的日常工作中。运行它的唯一要求是 gitgpg。如果您有这些(如果您正在寻找命令行键值存储解决方案,我敢打赌您有),您可以直接使用 kv

功能

  • 默认加密一切
    • 永远不会以纯文本形式存储您的机密信息
    • 使用 gpg 进行加密
  • 版本控制
    • 永远不会丢失您的机密信息
    • 使用 git 进行版本控制
  • 简单
    • 没有复杂的命令行选项
    • 没有配置文件
    • 没有设置向导
    • 没有数据库
    • 没有网页界面
    • 没有守护进程
    • 没有云服务
    • 没有无用的东西

安装

从源代码安装

git clone [email protected]:trusch/kv.git
cd kv

make release
sudo make install

# optionally install shell completion for zsh...
cp completions/kv.zsh ~/.oh-my-zsh/completions/_kv
# ...or bash
sudo cp completions/kv.bash /etc/bash_completion.d/kv

用法

Usage: kv [OPTIONS] <COMMAND>

Commands:
  set     set a key value pair
  get     get a value
  list    list keys
  delete  delete a key
  push    Push changes to remote origin
  pull    Pull changes from remote origin
  help    Print this message or the help of the given subcommand(s)

Options:
      --root <VALUE>  [env: KV_ROOT=.] [default: ~/.kv]
      --gpg <VALUE>   [env: KV_GPG_ID=]
  -h, --help          Print help information
  -V, --version       Print version information

自动补全

支持 zsh 和 bash 壳的自动补全。这些补全是用 clap 生成的,但后来手动调整以支持键的动态补全。要为 zsh 启用自动补全,请将 completions/kv.zsh 文件复制到您的 zsh 自动补全目录(对于 oh-my-zsh 用户,这将是 ~/.oh-my-zsh/completions)。Bash 用户可以将 completions/kv.bash 文件复制到 /etc/bash_completion.d/。原始补全(未经手动调整)是用隐藏子命令 kv generate-shell-completion <SHELL> 生成的,其中 SHELL 是 bash、elvish、fish、powershell 或 zsh 之一。

用法示例

存储和检索一些数据

kv set data "This is the data"
kv get data
# prints "This is the data"

使用管道

echo "This is the data" | kv set data
kv get data | tr '[:lower:]' '[:upper:]'
# prints "THIS IS THE DATA"

使用环境变量

export KV_ROOT="/mnt/secure"
export KV_GPG_ID="[email protected]"
kv set data "This is the data"
# data is stored in /mnt/secure/data.gpg with the specified key

搜索密钥

kv set one/complicated/path/foo "This is the right data"
kv set second/complicated/path/bar "This is the wrong data"
key=$(kv list | grep foo)
kv get $key
# prints "This is the right data"

设置远程源

cd ~/.kv
git remote add origin [email protected]:my-user/kv-store.git
git push --set-upstream origin main
kv set data "This is the data"
kv push

依赖项

~5–14MB
~172K SLoC