5个版本
0.3.2 | 2022年12月17日 |
---|---|
0.3.1 | 2022年12月17日 |
0.3.0 | 2022年7月23日 |
0.2.1 | 2022年7月10日 |
0.2.0 | 2022年7月10日 |
#2 in #organizer
44KB
1K SLoC
文件系统图书管理员
Librarian会针对一组符合一系列过滤条件的文件运行预配置的命令。这些文件组被称为库。Librarian可以搜索库中的文件,或者监视库中的文件何时被创建或更新。
要运行一次Librarian,在搜索完配置的库列表后退出,请运行
fs-librarian single-shot path/to/config.toml
要使Librarian持续监视配置库中的文件何时被创建或更新,请运行
fs-librarian watch path/to/config.toml
安装
您可以使用发布页面上的预构建二进制文件(发布页面)。它们作为独立二进制文件运行,不需要在您的机器上安装任何先决软件。
在macOS上,您可以使用Homebrew来安装和更新Librarian
brew tap jasonrogena/librarian
brew install fs-librarian
构建
要构建Librarian,请确保您的机器上已安装rustup(安装说明见此处),然后运行
make clean build
将生成二进制文件 target/release/fs-librarian
。
配置
示例配置文件可以在此处找到。
库
在Librarian配置文件中,定义一个或多个文件“库”。库是匹配定义的搜索过滤器的文件集。支持的搜索过滤器包括
- 文件可以包含的必需父目录列表
- 可选的正则表达式列表,文件MIME类型应匹配
对于定义的每个库,提供一个Tera模板(其语法基于Jinja2),在找到文件时应运行该命令。以下变量可用于模板
{{ file_path }}
:找到的文件的路径{{ mime_type }}
:找到的文件的MIME类型。运行fs-librarian test mime <path to a file>
命令以显示您不确定的文件的MIME类型。
以下配置片段定义了一个音乐库,该库监视下载和/tmp目录中具有与audio/.+
正则表达式(例如audio/flac
和audio/ogg
)匹配的MIME类型的文件。当找到音频文件时,它将被移动到音乐目录
[libraries.music]
command = """
mv "{{ file_path }}" /home/jrogena/Music/
"""
[libraries.music.filter]
directories = [ "/home/jrogena/Downloads", "/tmp" ]
mime_type_regexes = [ "audio/.+" ]
文件系统监视
以下与文件系统监视相关的配置可用
min_command_exec_freq
:可选。在运行配置命令针对文件之间(以秒为单位)的最小频率。在文件频繁更新但您不希望Librarian像更新那样频繁运行文件的情况下很有用。
以下是一个示例文件系统监视配置
[fs_watch]
min_command_exec_freq = 60
注意事项
在使用Librarian时考虑以下内容
- Librarian不会限制自己在配置的过滤器目录的根目录中的文件。它还会考虑子目录中的文件。
- 预配置的命令将并发运行在您的库上。在单次模式下,将为每个配置的库使用一个单独的线程。监视模式将为每个文件更新通知使用一个单独的线程。如果相同的文件匹配多个库的过滤器或您提供的预配置命令对同一文件运行多次并发不安全,则可能会发生竞争条件。
- Librarian依赖于特定于操作系统的MIME类型数据库。因此,同一文件在不同操作系统上可能看起来具有不同的MIME类型。
- 在监视模式下,当文件创建或更新时,预配置的命令可能被调用多次(每次由操作系统发出的文件更新通知发出一次)。某些操作系统在文件更改时发出多个通知(例如,Linux上的
IN_CREATE
和IN_CLOSE_WRITE
)。您可以使用min_command_exec_freq
选项避免预配置的命令在每次文件更新时运行多次。 - 在配置文件中使用绝对路径。如果您使用相对路径,Librarian可能不会按预期运行。
许可证
依赖关系
~12–22MB
~298K SLoC