All Projects → dduan → Pathos

dduan / Pathos

Licence: mit
File management and path analysis for Swift

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Pathos

Notify
🔭 Cross-platform filesystem notification library for Rust.
Stars: ✭ 1,123 (+1120.65%)
Mutual labels:  filesystem
Webdav Fs
Node fs wrapper for WebDAV
Stars: ✭ 72 (-21.74%)
Mutual labels:  filesystem
Rothko
An abstracted library for interacting with the file system, registry, etc.
Stars: ✭ 79 (-14.13%)
Mutual labels:  filesystem
Raspi Overlayroot
Protect your SD card against wear and tear
Stars: ✭ 66 (-28.26%)
Mutual labels:  filesystem
Deltafs
Transient file system service featuring highly paralleled indexing on both file data and file system metadata
Stars: ✭ 70 (-23.91%)
Mutual labels:  filesystem
Glob
Glob for C++17
Stars: ✭ 74 (-19.57%)
Mutual labels:  filesystem
Fsq
A tool for querying the file system with a SQL-like language.
Stars: ✭ 60 (-34.78%)
Mutual labels:  filesystem
Go Fuse
FUSE bindings for Go
Stars: ✭ 1,267 (+1277.17%)
Mutual labels:  filesystem
Python Btrfs
Python Btrfs module
Stars: ✭ 72 (-21.74%)
Mutual labels:  filesystem
Cifsd
cifsd kernel server(SMB/CIFS server)
Stars: ✭ 76 (-17.39%)
Mutual labels:  filesystem
Includedir
Include a whole directory tree at compile time
Stars: ✭ 67 (-27.17%)
Mutual labels:  filesystem
Onedrive Fuse Fs
Script to mount Microsoft OneDrive (formerly known as SkyDrive) folder as a FUSE filesystem
Stars: ✭ 68 (-26.09%)
Mutual labels:  filesystem
Polyfuse
A FUSE (Filesystem in Userspace) library for Rust
Stars: ✭ 76 (-17.39%)
Mutual labels:  filesystem
Simplefs
A simple file system for Linux kernel
Stars: ✭ 65 (-29.35%)
Mutual labels:  filesystem
Pyfilesystem2
Python's Filesystem abstraction layer
Stars: ✭ 1,256 (+1265.22%)
Mutual labels:  filesystem
Linux Apfs
APFS module for linux, with experimental write support. This tree is just for development, please use linux-apfs-oot instead.
Stars: ✭ 63 (-31.52%)
Mutual labels:  filesystem
Zbox
Zero-details, privacy-focused in-app file system.
Stars: ✭ 1,185 (+1188.04%)
Mutual labels:  filesystem
Vfsstream
vfsStream is a stream wrapper for a virtual file system that may be helpful in unit tests to mock the real file system. It can be used with any unit test framework, like PHPUnit or SimpleTest.
Stars: ✭ 1,302 (+1315.22%)
Mutual labels:  filesystem
Dfc
Report file system space usage information with style (mirror repository)
Stars: ✭ 84 (-8.7%)
Mutual labels:  filesystem
Squashfs Tools Ng
A new set of tools and libraries for working with SquashFS images
Stars: ✭ 76 (-17.39%)
Mutual labels:  filesystem

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].