dduan / Pathos
Licence: mit
File management and path analysis for Swift
Stars: ✭ 92
Programming Languages
swift
15916 projects
Labels
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
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
Fsq
A tool for querying the file system with a SQL-like language.
Stars: ✭ 60 (-34.78%)
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
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
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 |
---|
(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
SwiftPM
With.package(url: "http://github.com/dduan/Pathos", from: "0.4.0")
Documentation
- User Guide - A tour of Pathos for introduction purposes.
- API Refererence - Complete reference to Pathos public APIs.
- Design - Answers for why an API is designed as such.
- 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].