Pathos 0.3.2

Pathos 0.3.2

Daniel Duan维护。



Pathos 0.3.2

Banner

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在各个地方抛出的错误。

设计目标

  1. 尽可能多地提供POSIX文件API的抽象,但又不要太多。 使传统C API变得Swift-y,但避免过度抽象。为了效率和简单性,使用字符串作为路径值。用户可以针对其需求,随意且逐步添加抽象。
  2. 内置电池。包括一系列用于文件操作的便利功能。(例如,Python用户应该感到宾至如归)。
  3. 支持OOP。Pathos中几乎所有事物都可以在两种范式中获得:过程式(自由函数)和OOP(方法)。一个简单的协议PathRepresentable作为所有功能的根。
  4. 错误处理可以是可选的。在实践中,具体的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