#watcher #notify #run-command #cli

bin+lib fwatcher

文件变更时自动运行命令

7个版本

使用旧Rust 2015

0.4.2 2018年3月26日
0.4.1 2017年7月15日
0.3.2 2017年6月4日
0.2.0 2017年2月20日
0.0.4 2017年2月20日

#1014 in 开发工具

每月 31 次下载

MIT 许可证

15KB
241

Fwatcher

文件变更时自动运行命令。

安装

fwatcher是用rust语言实现的,因此你需要cargo命令

cargo install fwatcher

fwatcher将被安装在你的cargo二进制目录中(~/.cargo/bin/)。

命令行界面

fwarcher可以用作命令

$ fwatcher -h
Usage:
    fwatcher [options] CMD

Options:
    -h, --help          Display this message
    -v, --version       Print version info
    -r, --restart       Auto restart command, default to false
    -d, --directory <dir>
                        Watch directory, default to current directory
    -p, --pattern <pattern>
                        Watch file glob pattern, default to "*"
    -P, --exclude_pattern <exclude_pattern>
                        Watch file glob pattern exclusively, default null
        --delay <second>
                        Delay in seconds for watcher, default to 2
    -i, --interval <second>
                        Interval in seconds to scan filesystem, default to 1

例如,在当前目录中递归查找Python文件,并在文件更新时运行pytest

fwatcher -p "**/*.py" pytest --maxfail=2

你也可以使用多个目录/模式选项

fwatcher -d src -d test -p "**/*.py" -p "**/*.html" pytest --maxfail=2

--restart选项会在文件系统变更时杀死仍在运行的命令。可用于在更新时重新启动本地运行的web服务器,或者杀死长时间运行的测试并在更新时重新启动

fwatcher -d src -p "**/*.py" --restart run_forever_cmd

Rust 库

项目Cargo.toml中的依赖项

[dependencies]
glob = "0.2"
notify = "4.0"
fwatcher = "*"

以下示例显示了简单用法

extern crate glob;
extern crate fwatcher;

use fwatcher::Fwatcher;
use glob::Pattern;
use std::path::PathBuf;
use std::time::Duration;


fn main() {
    let dirs =vec![PathBuf::from("src")];
    let cmd = vec!["pytest".to_string()];

    let mut fwatcher = Fwatcher::new(dirs, cmd);
    fwatcher.pattern(Pattern::new("**/*.py").unwrap())
            .exclude_pattern(Pattern::new("**/.git/**").unwrap())
            .interval(Duration::new(1, 0))
            .restart(false)
            .run();
}

依赖项

~0.8–8MB
~55K SLoC