Dduan Pathos Save

File management and path analysis for Swift

Project README

Banner

Pathos offers cross-platform virtual file system APIs for Swift.

Pathos is implement from ground-up with on each OS's native API. It has zero dependencies.

Windows support is currently considered experimental.

Continuous Integration
Amazon Linux 2
macOS 11.15
Ubuntu Bionic
Ubuntu Focal
Windows 2019 (Experimental)

For a taste of Pathos, let's generate a static site from Markdown!

import Pathos

// Set the CWD and execute a closure
try Path("markdown-source-dir").asWorkingDirectory {
    // Build the site in a unique, temporary directory
    let temporaryRoot = try Path.makeTemporaryDirectory()
    
    // Joining path components that works across OSes.
    // E.g. `articles/**/*.md` on POSIX systems.
    let pattern = Path("articles") + "**" + "*.md"
    
    // Use glob to find files that matches the pattern
    for markdown in try pattern.glob() {
        // path/to/file.md => path/to/file
        let url = markdown.base
        
        // path that contains index.html
        let htmlDirectory = temporaryRoot + url
        
        // make a directory, including multiple levels
        try htmlDirectory.makeDirectory(withParents: true)
        
        // read content of a file
        let source = try markdown.readUTF8String()
        
        // write out the html, imagine `markdown2html` exists
        try (htmlDirectory + "index.html").write(utf8: markdown2html(source))
    }

    // all done! move the built site to output directory
    try temporaryRoot.move(to: "output")
}
// CWD is restored after the closure is done

As you can see, Pathos offers a whole suite of APIs for inspecting and manipulating the file system. Programs built with Pathos compile and work on all supported OS without the need to use #if OS() in the source.

There are more Examples for the curious.

Installation

With SwiftPM

.package(url: "http://github.com/dduan/Pathos", from: "0.4.2")

Documentation

  1. User Guide - A tour of Pathos for introduction purposes.
  2. API Refererence - Complete reference to Pathos public APIs.
  3. Design - Answers for why an API is designed as such.
  4. Change Log - Change logs for all Pathos versions.

You may also checkout the Example apps.

License

Pathos is released under the MIT license. See LICENSE.md

Open Source Agenda is not affiliated with "Dduan Pathos" Project. README Source: dduan/Pathos
Stars
114
Open Issues
0
Last Commit
1 year ago
Repository
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating