1 个不稳定版本
0.1.0 | 2022年4月4日 |
---|
#485 在 操作系统
21 每月下载次数
在 2 个 crates 中使用 (通过 niftygate-asset)
34KB
861 行
platform-path
这是什么?
platform-path
是一个小型工具(和库),它会告诉您(或您的程序)根据您运行的系统中的标准将东西放在哪里。
为什么会有这个存在?
因为它将特定领域的知识编码在可脚本化的工具中。它知道标准,所以您不需要。
每个平台都有一些标准(类似)的路径,它期望东西在那里。遵循这些标准可以改善用户体验和操作系统集成。
例如,在 macOS 上,缓存不包括在 iCloud 备份中,Spotlight 搜索中,当磁盘空间非常低时(当应用程序未运行时)可以自动清除,并且应该是“优化存储”实用程序的候选者。
在 Linux 上,使用 FlatPak 或 AppImage 安装的程序可能会使用特定的路径进行沙箱隔离。如果您的应用程序依赖于固定路径,则它可能不可写(甚至不可读),具体取决于沙箱策略。
在 Windows 上,漫游配置文件可能使用与本地配置文件不同的数据路径。
这只是几个例子。
platform-path
可以告诉您在哪里放置东西。
我如何获得这个伟大的工具?
cargo install platform-path
我如何使用它?
可以通过环境或命令行提供选项。以下示例假设一个名为 "DemoUser" 的 macOS 用户,以下环境
PROJECT_QUALIFIER="com.suse"
PROJECT_ORGANIZATION="SUSE Software Solutions"
首选项的基础目录是哪里?
$ platform-path print base preference
/Users/DemoUser/Library/Preferences
在哪里放置 NiftyGate 的缓存?
$ platform-path print project cache --project-application NiftyGate
/Users/DemoUser/Library/Caches/com.suse.SUSE-Software-Solutions.NiftyGate
应该将运行时文件(如套接字)存储在哪里?
platform-path print base runtime
Error: platform standard does not define requested directory
(错误写入到标准错误,退出状态是非零)
用户的下载文件夹在哪里?
$ platform-path print user download
/Users/DemoUser/Downloads
有关完整列表,请参阅内置的帮助。
platform-path --help
可选功能
有一些不太常见的功能默认未启用。
结构化输出
如果您出于某种原因想要结构化格式的输出,则可以构建带有 platform-path
的 json
和/或 yaml
功能。
这将为 --format
选项添加一些变体。
HTTP 服务
如果您需要在壳输出不理想的环境中访问此信息,您可以使用带有 http
或 https
功能的 platform-path
。
这将添加一个 serve
子命令,通过 HTTP(S) 暴露信息。
它是如何工作的(内部)?
内部,它依赖于一系列优秀的 crate 来处理所有复杂的事情,并围绕它们提供 CLI。
- 命令行选项和参数解析由
clap
(以及structopt
)提供。 - 平台特定的标准知识由
directories
提供。 - Unicode 路径验证由
camino
提供。 - 结构化输出通常由
serde
提供,以及特定格式的 crate(如serde_json
和serde_yaml
)。 - 各种故障场景都由单个
Error
类型(实现了std::error::Error
)捕获。 - (可选)HTTP 服务使用
tide
构建。 - 对于各种可能的失败方式,CLI 中都存在一个选项来以合理的方式处理它,例如
- 如果平台标准未定义目录,则存在一个
--default
选项。 - 一个
--unicode=enforced
选项来强制转换非 Unicode 路径。
- 如果平台标准未定义目录,则存在一个
许可证
platform-path
在 MIT 许可证下可用。有关完整文本,请参阅 LICENSE.txt
。
依赖关系
~3–19MB
~240K SLoC