FilesHook

什么是 FilesHook?

FilesHook其实就是一串由你自定义的命令行,在当前目录设置窗内可见。
当设定 FilesHook 的命令之后,再点击同步的命令按钮之后,MarkEditor 会调用预设的命令,它的基本的工作原理很简单: 在文件夹完成一次同步之后,检测到文件的变动,触发相应的脚本命令。
注意: 在设定过FilesHook的文件夹内,即使没有绑定第三方云,也是可以执行同步操作来触发 FilesHook。

FilesHook 是 MarkEditor 的一个底层调用接口,基本上可以认为是面向程序员的一个功能。它是 MarkEditor 对外开放的最通用的接口,你可以通过 FilesHook 很简单往 Jekyll 等静态博客系统里发布内容;当有有更进一步的自定义需求时,也可以通过自写程序脚本来实现。

在 FilesHook 中,如果有$root$这个字符,那么它最终会被替换为当前目录的路径。
在文件目录($root$)下,还有个sync_changes.log: 这个文件存储了JSON 格式的信息,里面表示当前同步的时候,新增、删除的文件、文件夹。如果进一步运行脚本来对应 FilesHook,可以从这个文件内获取相应的信息再行处理。

注意:

  1. 如果文件夹没有关联某个具体的云端,但是设置了 FilesHook,那么同步命令仍然是可以运行,并最终触发 FilesHook。
  2. 如果文件夹已经关联了某个云端,并且设置了 FilesHook,则同步命令,最终在同步完成后,也会触发 FilesHook。
  3. 不论 FilesHook 内的脚本命令是否运行成功,点击立即同步后,即使脚本失败,也会认定同步是成功的。如果在调试 FilesHook 脚本阶段出错的时候,需要手工重置同步,重新来过。
  4. Windows版本中,由于(非Unix)系统原因,对于FilesHook的支持并不友好,并不保证脚本的调用能正常运行。一般建议不要使用&符进行连续调用,而是自行增加一个运行的脚本(比如某个bat文件)来处理,或者直接触发其它脚本对sync_changes.log进行处理;但另外请注意,即使如此,也不能保证ME内的命令调用能正常运行,以实际情况为准。
  5. 某些情况,命令可以在Term、终端内运行,被FilesHook调用时却出现错误,可能是由于环境变量限制、缺失产生的,尝试输入命令对应的实际路径或许能解决问题。但另外请注意,即使如此,也不能保证ME内的命令调用能正常运行,以实际情况为准。