Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dduan/Pathos
File management and path analysis for Swift
https://github.com/dduan/Pathos
filesystem swift vfs
Last synced: about 1 month ago
JSON representation
File management and path analysis for Swift
- Host: GitHub
- URL: https://github.com/dduan/Pathos
- Owner: dduan
- License: mit
- Created: 2018-05-20T22:54:25.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2022-05-03T04:05:36.000Z (over 2 years ago)
- Last Synced: 2024-10-15T17:47:56.338Z (about 2 months ago)
- Topics: filesystem, swift, vfs
- Language: Swift
- Homepage:
- Size: 8.35 MB
- Stars: 116
- Watchers: 3
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
- fucking-awesome-swift - Pathos - Efficient Unix file management. (Libs / Files)
- awesome-swift - Pathos - Efficient Unix file management. (Libs / Files)
- awesome-swift - Pathos - File management and path analysis for Swift ` 📝 6 months ago ` (Files [🔝](#readme))
- awesome-swift - Pathos - Efficient Unix file management. (Libs / Files)
README
![Banner](Resources/Assets/Banner.png)
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](https://github.com/dduan/Pathos/workflows/Amazon%20Linux%202/badge.svg)](https://github.com/dduan/Pathos/actions?query=workflow%3A%22Amazon+Linux+2%22)|
|[![macOS 11.15](https://github.com/dduan/Pathos/workflows/macOS%2011.15/badge.svg)](https://github.com/dduan/Pathos/actions?query=workflow%3A%22macOS+11.15%22)|
|[![Ubuntu Bionic](https://github.com/dduan/Pathos/workflows/Ubuntu%20Bionic/badge.svg)](https://github.com/dduan/Pathos/actions?query=workflow%3A%22Ubuntu+Bionic%22)|
|[![Ubuntu Focal](https://github.com/dduan/Pathos/workflows/Ubuntu%20Focal/badge.svg)](https://github.com/dduan/Pathos/actions?query=workflow%3A%22Ubuntu+Focal%22)|
|[![Windows 2019](https://github.com/dduan/Pathos/workflows/Windows%202019/badge.svg) (Experimental)](https://github.com/dduan/Pathos/actions?query=workflow%3A%22Windows+2019%22)For a taste of Pathos, let's generate a static site from Markdown!
```swift
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](./Examples) for the curious.
## Installation
#### With [SwiftPM](https://swift.org/package-manager)
```swift
.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](./LICENSE.md)
[Design]: Documentation/design.md
[Change Log]: CHANGELOG.md
[User Guide]: Documentation/UserGuide.md
[API Refererence]: Documentation/APIs/README.md
[Example apps]: ./Examples