Skip to content

bannzai/Ocha

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ocha

swift4.2 Platform License

Ocha

Ocha can be listen to the file system change notifications and raises events when a directory, or file in a directory, changes.

Ocha means Tea🍵 in Japan.

Usage

To use Ocha, first create a Watcher instance with file paths you want to watch.

let watcher = Watcher(paths: [pathString])

And you can call for Watcher.start(_:) method when it start to watch file events. When file removed, you get callback with removed file path infomations.

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

Example

The following example execute git add << REMOVED_FILE_PATH >> and git commit -m << REMOVED_FILE_PATH >> to watch the file path, when it removed.

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()

If you execute this swift code, you can confirm removed file git log. $ git log -1

Try it easily

You can easily try Ocha by editing the Playground target.

  1. Clone this repository with git or Download sources.
  2. Open ./Sources/Playground/main.swift .
  3. Add monitored paths and processes.
  4. Run swift run Playground on Terminal.

LICENSE

Ocha is released under the MIT license. See LICENSE for details.

Header logo is released CC BY-NC 4.0 license. Original design by noainoue.

About

Listen to the file system change notifications and raises events when a directory, or file in a directory, changes. 🍵

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages