Skip to content
MyraxionPublic

About

A lightweight, high-performance Windows CLI tool for managing UTF-8 descript.ion file comments.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Dion (descript.ion CLI)

Dion 是一个 Windows 原生命令行工具,用于查看、列出、设置和删除文件与文件夹的备注,与 Total Commander 的带 BOM UTF-8 descript.ion 格式互操作。

Language / 语言: English | 简体中文

核心特性

  • 单文件运行:适用于 Windows 10/11 x64,无需安装 Rust 或额外运行库;当前本地 Release exe 为 605,696 字节(591.5 KiB)。
  • 四个基础命令:查看单条备注、列出目录备注、设置或覆盖备注、显式删除备注。
  • 列表展示:目录优先、名称自然排序,默认双栏对齐,支持 --long(-l)、--recursive(-r)、--tree、通过 Everything 索引加速递归查询及名称自动着色。
  • Unicode 与多行:支持中文、Emoji、含空格的名称和多行正文,保留缩进、首尾空白和空行。
  • 局部修改:保留其他记录的原始字节与顺序;设置相同内容时不写文件。
  • 正文输入:支持正文参数、stdin、UTF-8 文本文件及 set --edit 外部编辑;沿用 JSON 输出和稳定退出码。

当前支持本地 Windows 文件系统和单写者使用;网络共享不作兼容性承诺。descript.ion 必须是带 BOM 的 UTF-8 文件。

名称匹配使用 Windows 原生的不区分大小写比较,不跟随目录的大小写敏感设置;名称等价的重复记录视为冲突。具体规则见行为契约。

快速上手

命令用法

dion help [command]
dion --version|-V
dion [--json|-j] get <path>
dion [--json|-j] set <path> (<comment> | --comment-file|-f <file> | --stdin|-i | --edit|-e)
dion [--json|-j] list [directory] [--long|-l | --tree|-t] [--recursive|-r] [--everything [--everything-instance <name>]] [--all|-a] [--color auto|always|never]
dion [--json|-j] remove <path>

完整命令和别名行为相同,均支持 help <command> 和 <command> -h:

完整命令 别名
get view、cat
list ls
set 无
remove rm、unset、del

选项短写:--json/-j、--help/-h、--version/-V、--long/-l、--recursive/-r、--tree/-t、--all/-a、--stdin/-i、--comment-file/-f、--edit/-e。例如:

dion cat file.txt
dion ls -t
dion set file.txt -f comment.txt
dion set file.txt -e
dion unset file.txt -j

选项分开输入,值放在下一个参数中;不支持 -lr、-ffile 或等号传值。重复同义选项(如 --json -j)仍报参数错误。

命令说明

  • get:查看指定文件或文件夹自身的备注。
  • set:设置或覆盖条目自身的备注。非空正文要求目标存在;首次设置自动创建备注文件。正文来源四选一(互斥):
    • <comment>:直接传入正文文本。
    • --comment-file <file>:从 UTF-8 文本文件读取(推荐用于多行正文)。
    • --stdin:从标准输入读取 UTF-8 正文。
    • --edit:启动外部编辑器编辑(依次检索 VISUAL、EDITOR 或 Windows 记事本;清空内容将删除备注)。
  • list:查询目录内部条目的备注(默认为当前目录)。目录优先并按 Windows 自然排序。
    • 默认双栏对齐展示。
    • --long(-l):单栏详细展示,完整呈现多行正文。
    • --recursive(-r):递归汇总子目录的备注。
    • --everything:通过已运行的 Everything 索引发现递归备注文件,必须与 --recursive 或 --tree 组合。只查询已编入索引的路径,可能遗漏索引排除项;要求 Everything 1.4.1 或更高版本且数据库已加载。
    • --everything-instance <name>:与 --everything 一起指定命名实例;默认优先查询 1.5a,找不到时使用未命名实例。
    • 默认递归跳过 $RECYCLE.BIN、System Volume Information、.git、node_modules、.venv、__pycache__、.pytest_cache、.next、.svn、.mypy_cache、.ruff_cache、.tox、.nox 和 .parcel-cache;按完整目录名称不区分大小写匹配,主动跳过不报错。目录自身备注仍显示。
    • --all(-a):递归时包含上述默认排除目录;单独用于非递归列表时不改变结果。
    • --tree:树状层级展开展示(自动递归;与 --long 互斥)。
    • --color auto|always|never:默认仅在支持颜色的终端为名称着色;可强制开启或关闭,JSON 始终无颜色。
    • 默认跳过坏记录或无法读取的备注文件,继续查询;无法枚举的子目录整体跳过,起始目录无法访问时直接失败。
    • 文本底部汇总跳过的错误;JSON 顶层含 root_directory(查询起始目录的绝对路径)及 entries、errors 数组,无错误时 errors:[]。空列表也包含起始目录,有跳过错误时仍输出有效记录,退出码为 1。起始目录按现有规则词法处理点组件,不解析链接目标,保留路径拼写及扩展路径前缀。
    • 普通及递归 JSON 条目含 type(file、directory、orphan)、parent_directory、name、comment。所属目录相对于查询起始目录,使用反斜杠且无尾部分隔符,起始目录为 "";name 保留原始记录名称,不再拼入路径。
    • --tree --json 输出与文本树相同节点的嵌套树:目录始终含 children,文件和孤立记录不含;辅助目录使用 comment: null,已有空备注使用 comment: "",树节点不含 parent_directory。两种列表均不输出程序扩展字段,Everything 查询沿用相同结构。
  • remove:显式删除条目自身的备注。目标条目本身不受影响;若目录内备注全部清空,自动清理备注文件。

通用选项与特性

  • 获取帮助:支持 dion help [command] 以及各命令的 -h / --help 参数查看用途、用法、参数及关键默认行为。
  • 查询版本:dion --version 或 dion -V 输出 dion <版本号> 加换行并以 0 退出,版本号取自编译时的 Cargo.toml。仅可搭配 --json、--lang,始终输出相同文本;与操作命令、操作选项或帮助混用时报参数错误。
  • 结构化输出:全局支持 --json 输出机器可读的 JSON 格式及稳定退出码,帮助与版本查询仍为文本。
  • 作用对象区分:get、set、remove 操作指定条目自身的备注(记录保存在其父目录中);list 查询指定目录内部条目的备注。

构建与发布

本地安装 Rust stable 和 MSVC 构建工具后,运行统一检查入口:

.\scripts\check.ps1

脚本依次执行格式检查、Clippy、完整测试和 Release 编译,产物为 target/release/dion.exe。默认静态链接 MSVC CRT。

GitHub Actions 在 push 和 pull request 时自动执行上述检查,也支持手动触发。推送 v* 版本标签时,发布流程 会在 Windows x64 上检查并编译,通过后创建 GitHub Release,使用 docs/releases/<标签>.md 中的发布笔记并上传 dion.exe。

发布前更新 Cargo.toml 和 Cargo.lock 中的版本号,准备并确认 docs/releases/<标签>.md 中的发布笔记,将代码与发布笔记提交并推送,再推送对应标签,例如:

git tag v0.3.2
git push origin v0.3.2

用户可在 GitHub Releases 下载 dion.exe。

性能测试

2026-10-08 在 Windows 11 x64、AMD Ryzen 9 7940H、31.2 GB 内存的本地环境中测得以下 Release 基线。每个场景预热后运行 5 次,表中为平均壁钟耗时,包含进程启动和退出;查询与列表使用文本输出。

操作 100 条记录 10,000 条记录
查看备注 get 167.73 ms 148.14 ms
列出备注 list 154.01 ms 207.29 ms
更新备注 set 167.12 ms 167.78 ms
删除备注 remove 208.08 ms 217.87 ms

本次 exe 体积为 354,816 字节(346.5 KiB);温运行场景的生命周期峰值提交量为 9.26–18.17 MiB。结果仅代表本次机器与工作负载,不构成固定时延保证。完整数据、测量口径与复现方法见性能测试报告。

许可证

可选择 MIT 或 Apache 2.0 许可证使用和分发。

About

A lightweight, high-performance Windows CLI tool for managing UTF-8 descript.ion file comments.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages