Ocha

swift4.2 Platform License

Ocha

Ocha 可以监听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件。

Ocha 在日语中是茶🍵的意思。

用法

要使用 Ocha,首先创建一个 Watcher 实例,并指定要监视的文件路径。

let watcher = Watcher(paths: [pathString])

然后,您可以调用 Watcher.start(_:) 方法开始监视文件事件。 当文件被删除时,您将收到带有已删除文件路径信息的回调。

watcher.start { (events) in ... }

示例

以下示例执行 git add << REMOVED_FILE_PATH >>git commit -m << REMOVED_FILE_PATH >> 来监视文件路径,当它被删除时。

import Foundation
import Ocha
import SwiftShell
import PathKit

let path = Path(
    #file.components(separatedBy: "/")
        .dropLast() // main.swift
        .dropLast() // GitCommitExample
        .dropLast() // Sources
        .joined(separator: "/")
)
let pathString = path.absolute().string
main.currentdirectory = pathString

let watcher = Watcher(paths: [pathString])
watcher.start { (events) in
    let removedEventPaths = events
        .filter { $0.flag.contains(.removedFile) }
        .map { $0.path }
    removedEventPaths.forEach { path in
        main.run(bash: "git add \(path)")
        main.run(bash: "git commit -m \"Delete file \(path)\"")
    }
}

RunLoop.current.run()

如果您执行这段 swift 代码,您可以确认已删除文件的 git 日志。 $ git log -1

轻松尝试

您可以通过编辑 Playground 目标轻松尝试 Ocha。

  1. 使用 git 克隆此仓库或下载源代码。
  2. 打开 ./Sources/Playground/main.swift 文件。
  3. 添加受监控的路径和进程。
  4. 在终端上运行 swift run Playground

许可证

Ocha 在 MIT 许可证下发布。 有关详细信息,请参见 LICENSE

头部logo根据 CC BY-NC 4.0 许可证发布。 原始设计者:noainoue