gof: 一个用 Go 语言来写 extension 进行自由定制的文件/文件夹处理器

2021-12-01 09:15:37 +08:00
 SuperMild

在日常使用电脑的过程中,总有一些关于文件 /文件夹的操作是有规律、有重复性的,比如:

一般可能会用 shell 、Python, 或者用专门的 GUI 程序来处理这些问题。但 GUI 程序的可定制性通常不高,每次使用都需要多次点击,或者每个 GUI 程序都有局限性,不如脚本一个命令解决问题那么清爽、那么灵活。而 shell 、Python 又有要么每次重新写,要么需要管理一堆散乱的脚本文件、要对每个命令起名等一些繁琐的地方。

并且脚本代码如果越写越长的时候,可维护性就会显著变差,因此,我做了一个用 Go 语言来写 extension 进行自由定制的文件 /文件夹处理器: gof

gof 本身的功能

gof 本身并不包含任何解决实际问题的代码,比如对文件进行改名、复制、移动等操作都不包含,这些都由插件 /扩展(在 gof 里称为 recipe )来实现,需要什么功能,就自己写一个 recipe 。

gof 本身的作用是:

  1. 对插件 /扩展( recipe )进行统一管理。 比如 recipe 文件都集中在一个文件夹,拥有统一的 CLI 格式,显得井井有条。
  2. 利用 YAML 来写任务计划。 因此作为开发者写插件的时候不需要处理 GUI 问题,作为使用者可非常直观地编辑 YAML 文件。
  3. 一个 YAML 文件里可包含多个任务。 每个任务可以采用不同的 recipe, 不同的参数、处理相同或不同的文件, gof 会按顺序依次执行。插件编写者只需要专心写一个插件即可,不需要操心任务是如何组合排列的。
  4. 提供了 -dump 功能。 用来预览即将执行的任务计划,而不实际执行,特别是刚开始对命令不太熟悉的时候,该功能非常实用,可以通过预览任务计划提早发现问题,确认没问题后再去掉 -dump 实际执行。

其中 CLI 与 YAML 的配合效果很不错,YAML 很直观,容易编辑,比纯 CLI 更直观,又比 GUI 更容易开发。

当然,如果你不喜欢或不熟悉 Go 语言,完全可以用其他语言来重写一个类似的程序,因为 gof 本身的功能不多,代码量很少,我全新写的用了两天(有效时间大概 8 个小时),在有参考的情况下用另一种语言改写,半天绝对足够了。

源码仓库

https://github.com/ahui2016/gof

(国内镜像 https://gitee.com/ipelago/gof

1632 次点击
所在节点    分享创造
1 条回复
rekulas
2021-12-01 16:20:04 +08:00
想法很好,但灵活性感觉不够,如果某个插件例如 swap 逻辑要调整,那不但要改插件也要改 yaml
所以我还是选 shell 😁

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/819199

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX