Pathos是实现文件系统₁查询和操作所需的所有功能。
为了让您了解更多这代表什么,让我们从Markdown文件生成一个静态站点!
// Create a unique, temporary directory.
let temporaryRoot = try createTemporaryDirectory()
// Find paths to .md files relative to current working directory, recursively.
for markdown in try glob("**/*.md") {
// path/to/file.md -> path/to/file.
let url = basename(ofPath: markdown)
// Join path segements.
let urlPath = join(paths: temporaryRoot, url)
// Make a directory.
try createDirectory(atPath: urlPath)
// Read from a file.
let source = try readString(atPath: markdown)
// Write to a file. `markdown2html` … just imagine it exists.
try write(markdown2html(source), atPath: join(paths: url, "index.html"))
}
// Move a directory.
try movePath(temporaryRoot, toPath: "output")
Pathos还提供所有这些功能的传统OOP接口。
阅读文档获取更多信息。
₁Unix虚拟文件系统,与底层系统(如APFS、Ext4、btrfs等)相对。
安装
CocoaPods
使用use_frameworks!
pod "Pathos"
SwiftPM
使用.package(url: "http://github.com/dduan/Pathos", from: "0.3.2")
概述
Pathos包含许多接口(内置)。以下是一个大致的分解以及API文档的链接。
章节 | 描述 |
---|---|
POP和OOP | OOP接口的协议和类型。 |
查找文件 | 通过模式或文件类型在文件夹中查找子项。 |
文件I/O | 读取和写入文件及符号链接。 |
操作路径 | 删除/移动/创建目录。 |
分析路径 | 路径属性,如其等价的绝对路径。 |
临时路径 | 临时且唯一的文件和目录。 |
关系 | 多个路径之间的关系。连接,公共组件等。 |
工作目录 | 获取/设置当前工作目录。 |
系统属性 | 文件大小,访问时间,权限等。 |
存在性 | 确定路径是否指向现有文件,文件的类型等。 |
常量 | 公共常量。 |
错误 | Pathos在各个地方抛出的错误。 |
设计目标
- 尽可能多地提供POSIX文件API的抽象,但又不要太多。 使传统C API变得Swift-y,但避免过度抽象。为了效率和简单性,使用字符串作为路径值。用户可以针对其需求,随意且逐步添加抽象。
- 内置电池。包括一系列用于文件操作的便利功能。(例如,Python用户应该感到宾至如归)。
- 支持OOP。Pathos中几乎所有事物都可以在两种范式中获得:过程式(自由函数)和OOP(方法)。一个简单的协议
PathRepresentable
作为所有功能的根。 - 错误处理可以是可选的。在实践中,具体的POSIX错误代码并不比一些表明出错的指示更有行动性。因此,Pathos的OOP接口隐藏了系统错误。用户可以通过在范式之间切换来选择加入或退出处理POSIX错误的开销。例如,
PathRepresentable.delete()
而不是抛出没有权限等错误,简单地返回false
以指示操作失败。
开发
使用make
目标进行开发。
- 使用
make build
在发布配置中构建库。此命令还检查是否有任何测试更改并在macOS上更新Linux测试清单(或在Linux上提醒您这样做)。 - 使用
make clean
删除构建工件,包括SPM构建文件夹和其他工件。 develop-linux-docker
启动一个包含Swift的docker容器。项目在/Pathos
处镜像。您可以从主机进行编辑并在容器中运行/测试。
此外,请参阅“Testing”(测试)。
测试
使用XCTest
进行测试。
make test
运行所有测试。make generate-linux-test-manifest
更新 Linux 的测试清单,这仅在 macOS 上有效。make test-docker
在 Linux Docker 容器中运行测试(您需要在宿主机上安装 Docker)。
发布
请参阅 RELEASING.md
。
许可证
MIT。请参阅 LICENSE.md
。