2个稳定版本
新 1.0.2 | 2024年8月18日 |
---|---|
1.0.1 | 2024年8月17日 |
在 文件系统 中排名 #79
每月下载量 292 次
8.5MB
3K SLoC
包含 (DOS可执行文件, 8.5MB) example/bin/spyrun.exe
spyrun - 文件监视器和命令执行器
spyrun 是一个监视文件并在特定事件发生时执行命令的工具。它可以监视文件的修改、添加等。
安装
cargo install spyrun
使用方法
spyrun 使用配置文件进行操作。
> spyrun --help
Usage: spyrun.exe [OPTIONS]
Options:
-c, --config <FILE> Sets a custom config file [default: spyrun.toml]
-d, --debug... Turn debugging information on
-h, --help Print help
-V, --version Print version
配置文件
spyrun 的配置文件是 TOML 格式。默认文件名是 spyrun.toml
,位于可执行文件所在的同一目录中。配置文件指定要监视的文件、要执行的命令以及各种其他选项。
- 示例
[vars]
base = '{{ cwd }}/example'
hostname = '{{ env(arg="COMPUTERNAME") }}'
version = '20240407_125639'
fn_toast = '''
function Show-Toast {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)][String]$title,
[Parameter(Mandatory=$true)][String]$message,
[Parameter(Mandatory=$true)][String]$detail
)
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
[Windows.UI.Notifications.ToastNotification, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null
$app_id = '{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\WindowsPowerShell\v1.0\powershell.exe'
$content = @"
<?xml version="1.0" encoding="utf-8"?>
<toast>
<visual>
<binding template="ToastGeneric">
<text>$($title)</text>
<text>$($message)</text>
<text>$($detail)</text>
</binding>
</visual>
</toast>
"@
$xml = New-Object Windows.Data.Xml.Dom.XmlDocument
$xml.LoadXml($content)
$toast = New-Object Windows.UI.Notifications.ToastNotification $xml
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($app_id).Show($toast)
}
'''
[cfg]
stop_flg = '{{ base }}/stop.flg'
stop_force_flg = '{{ base }}/stop.force.flg'
max_threads = 8
[log]
path = '{{ base }}/log/{{ cmd_stem }}.log'
level = 'info'
[init]
cmd = 'powershell'
arg = ['-NoProfile', '-Command', '''& {
{{ fn_toast }}
Show-Toast -title "spyrun {{ version }} on {{ hostname }}" -message "spyrun is running" -detail "spyrun path is {{ cmd_path }}. config path is {{ cfg_path }}."
}''']
# watch files and notifiy.
[[spys]]
name = 'toast'
input = '{{ base }}/watch_dir'
output = '{{ base }}/log'
[[spys.patterns]]
pattern = '\.txt$'
cmd = 'powershell'
arg = ['-NoProfile', '-Command', '''& {
{{ fn_toast }}
Show-Toast -title "{{ event_name }}" -message "{{ event_path }} is {{ event_kind }}" -detail "name: {{ event_name }}. dir: {{ event_dir }}"
}''']
[vars]
变量可以自由设置。变量按字母顺序定义。因此,需要注意顺序。
- OK
[vars]
a = "a"
b = "b and {{ a }}"
- NG
[vars]
a = "a and {{ b }}"
b = "b"
[cfg]
stop_flg
停止 spyrun 的文件路径。当它检测到该路径已被创建或修改时,它将完成所有正在运行的操作并退出。
stop_force_flg
强制停止 spyrun 的文件路径。当它检测到该路径已被创建或修改时,它将立即强制 spyrun 停止。
max_threads
spyrun 中使用的最大线程数。默认值基于 CPU核心数。
[log]
path
日志文件的路径。
level
日志级别。默认值是 info
。可以指定以下值。
- off
- error
- warn
- info
- debug
- trace
[init]
当 spyrun 启动时执行初始化。
cmd
要执行的命令。
arg
传递给命令的参数。
[[spys]]
间谍列表。
name
间谍的名称。
events
事件列表。默认值是 ['Create', 'Modify']。可以指定以下值。
- 访问
- Create
- Modify
- Remove
input
要监视的路径。
output
输出路径。标准输出和标准错误写入此路径。
recursive
如果您想递归地监视输入路径,请将此设置为true。默认值是false。
防抖
如果您想防抖执行,请设置此设置。默认值是50毫秒。
节流
如果您想节流执行,请设置此设置。默认值是0毫秒。
延迟
在执行命令之前的延迟时间。默认值是0毫秒。
- 一个参数
在5000毫秒后执行。
delay = [5000]
- 两个参数
在执行前等待5000毫秒到10000毫秒之间的随机时间。
delay = [5000, 10000]
[spys.patterns]
模式列表。
模式
要监视的模式。这是一个正则表达式。
cmd
要执行的命令。
arg
传递给命令的参数。
spys.poll
如果您想以轮询模式监视输入路径,请设置此设置。
间隔
监视输入路径的间隔。
spys.walk
如果您想遍历输入路径,请设置此设置。如果设置了此设置,当spyrun启动时也会遍历输入路径。
min_depth
遍历输入路径的最小深度。
max_depth
遍历输入路径的最大深度。
follow_symlinks
如果您想跟随符号链接,请设置此设置。
模式
匹配输入路径的模式。这是一个正则表达式。
延迟
在遍历输入路径之前的延迟时间。
- 一个参数
在5000毫秒后遍历。
delay = [5000]
- 两个参数
在5000毫秒到10000毫秒之间随机等待。
delay = [5000, 10000]
许可协议
spyrun遵循MIT许可协议分发。
依赖项
~16–27MB
~400K SLoC