3 个版本 (重大更改)

0.3.0 2023年10月25日
0.2.1 2023年2月6日
0.2.0 2023年2月6日
0.1.0 2022年9月2日

#866 in 编码

GPL-3.0 许可证

64KB
1.5K SLoC

tekton 最新版本 工作流程 Rustc 版本 1.66+


作者:Nicholas O'Kelley

开始日期:2022-08-28

动机

我需要一个工具来加速我在 friendly-snippet 项目上审查代码片段所花费的时间。

此类工具的目标是

  • 快速排序大量文件
  • (理想情况下)快速按字母顺序排序
  • 在 Snipmate 和 friendly-snippets (json) 格式之间快速转换

安装和使用

对于已发布版本

  • cargoinstall tekton

对于源构建

从项目根目录

  • cargoinstall --path ./

使用方法

要转换:

  • tekton convert<INPUT_FILENAME> <OUTPUT_FILENAME>

注意

  • 转换支持 Snipmate (*.snippet) 和 JSON (*.json) 代码片段的双向转换
  • 映射基于输入文件

要排序:

  • 通用格式:tekton sort <INPUT_FILENAME> [INTERACTIVE] [CRAWL]
    • 排序单个文件:tekton sort <INPUT_NAME>
    • 排序目录:tekton sort <INPUT_NAME> no true

注意

  • INTERACTIVE 应该是字符串 yes,如果用户想在排序过程中修复任何错误。

    • 取消勾选此选项将只会在屏幕上显示错误报告。
  • CRAWL 必须存在,以便递归遍历目录以获取代码片段。

    • 任何存在的文本都会导致爬取,尽管 true 看起来更好。

演示

  • 从 Snipmate 转换到 JSON

json-bay-bee

  • 将 JSON 代码片段转换为 Snipmate

Conversion

  • 在不开启交互模式并开启目录爬取的情况下,对 friendly-snippets 进行排序,非常快速。

Sorting


当前限制

  1. 转换不会像排序那样处理大量文件。这是故意的,因为格式之间的转换应该是隔离的,并且范围有限。

    • 这可以通过其他脚本方式(Rust、Go、Python 等)自动化。
  2. prefix 字段中有数组(即使只有一个)的代码片段文件会将文件中的所有代码片段转换,并将它们的代码片段也插入到数组中。

    • 注意:我正在编写一个自定义的 SerializeDeserialize 实现,以处理单个元素的序列化清理,尽管这将与未来的更新相关。
  3. 目前不排序 Snipmate 代码片段。

    • 这超出了范围,但可能是未来考虑的事情。

致谢

  • 我手动完成此事的耐心

依赖项

~4–13MB
~146K SLoC