Swiftpack.co - Package - dduan/Pathos

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.

dduan/Pathos

File management and path analysis for Swift

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.

Swift 5.3 & 5.3.1
Amazon Linux 2
CentOS 8
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.0")

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: 91
Last commit: 2 weeks ago

Releases

0.4.0 - 2020-12-18T02:59:20

BREAKING CHANGES

While the functionality of this library remain compatible with previous release, its public API has gone through a major re-design, making this release significantly source-breaking.

The goals for the redesign are

  1. Be more conventional in the Swift ecosystem by eliminating the "free functions".
  2. Make the selection of APIs cross-platform, including macOS, Linux, Windows 10, and future platforms Swift runs on.
  3. Use un-decoded, aka binary representation for the path value internally for efficiency and correctness reasons.

Experimental Windows 10 Support

This release includes implementation of all APIs for Windows 10. As Swift on Windows 10 is still at early stage, Pathos consider its current Windows support experimental. All unit tests pass on Windows. Pathos includes CMake builds as well as SwiftPM builds (as of this release, SwiftPM support is tested with WSL).

New

Documentation rewritten in Markdown format replaces the previously generated documentation.