Swiftpack.co - dduan/Pathos as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by dduan.
dduan/Pathos 0.4.2
File management and path analysis for Swift
⭐️ 98
🕓 44 weeks ago
.package(url: "https://github.com/dduan/Pathos.git", from: "0.4.2")

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

GitHub

link
Stars: 98
Last commit: 8 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

0.4.2
44 weeks ago
  • Fixed a problem where the + operator overload resolves in ambiguity when used on a Path and a string literal. This problem is due to Swift 5.4's behaviral change.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics