#string #variables #shell

shellexpand

字符串中的 Shell 类似扩展

8 个稳定版本 (3 个主要版本)

3.1.0 2023年3月24日
3.0.0 2022年12月1日
2.1.2 2022年8月5日
2.1.0 2020年12月22日
0.1.0 2016年3月13日

#43 in Rust 模式

Download history 133041/week @ 2024-03-14 129453/week @ 2024-03-21 133099/week @ 2024-03-28 123138/week @ 2024-04-04 130893/week @ 2024-04-11 140622/week @ 2024-04-18 128808/week @ 2024-04-25 133312/week @ 2024-05-02 142837/week @ 2024-05-09 158038/week @ 2024-05-16 157162/week @ 2024-05-23 141530/week @ 2024-05-30 139779/week @ 2024-06-06 157270/week @ 2024-06-13 152731/week @ 2024-06-20 126996/week @ 2024-06-27

601,556 每月下载量
用于 818 个包 (399 直接)

MIT/Apache

61KB
654

shellexpand,一个用于字符串 Shell 类似扩展的库

Build Status crates.io docs

文档

shellexpand 是一个单依赖库,允许在字符串中执行 Shell 类似扩展,即扩展变量,例如 $A${B} 在某些上下文中的值,并将 ~ 在字符串开头扩展为家目录(同样是在某些上下文中)。

此包提供了一组通用函数,这些函数接受任意上下文,以及基于系统的默认函数,这些函数使用系统上下文执行扩展(由 std::env 模块和 dirs 包表示)。


此包的替代方案

  • expanduser: 仅支持波浪线替换。支持 ~user,而此包目前不支持(尽管我们希望支持)。
  • envsubst: 不提供波浪线扩展。仅支持某些具体类型(例如,变量映射的 HashMap)。
  • expand_str: 使用 %..% 语法。不提供波浪线扩展。变量查找只能是确定的。
  • tilde_expand: 仅进行波浪线扩展,在字节([u8])上。

使用方法

只需在您的 Cargo.toml 中添加依赖项

[dependencies]
shellexpand = "3.0"

有关更多信息示例,请参阅包文档(链接位于本说明书的开头)。

Cargo 功能

功能功能

  • tilde(默认开启):支持波浪线扩展(家目录)。
  • path (在 full 中): 支持对 Path 的操作。(MSRV: 1.51)

元特性

  • full:所有合理的(非实验性、非危害性)功能。(目前相当于 full-msrv-1.51。)
  • base-0(默认开启):基本功能。您必须启用此功能。
  • full-msrv-1.51:所有与 Rust 1.51 兼容的合理功能。(目前:base-0tildepaths。)
  • full-msrv-1.31:所有与 Rust 1.31 兼容的合理功能。(目前:base-0tilde。)

编写本文档时,没有实验性或危害性功能;如果引入任何功能,它将被功能门控,默认不开启,也不是 full* 的一部分。要求 base-0 允许我们将现有功能拆分为新的可选功能,而不破坏 semver。我们将尽量避免提高现有功能的 MSRV;提高 full 的 MSRV 将是次要版本升级。

变更日志

版本 3.1.0 - 2023-03-24

新增

  • cargo 特性 full-msrv-1.31full-msrv-1.51

修复

  • 显式声明 paths 特性的 MSRV 为 1.51。
  • 修复了具有 MSRV(1.31)的构建(没有 paths 特性)。

改进

  • 测试了 MSRV。
  • 更新到 dirs 5。(也可以使用 dirs 4,因为它没问题。)
  • 更新 Cargo.lock.exaple

版本 3.0.0 - 2022-12-01

重大更改

  • tilde_with_contextfull_with_context 现在期望家目录为 str 类型,而不是 Path 类型。如果您想处理 Path 类型,请使用 path 特性和模块。
  • 您必须选择至少一个 cargo 特性。base-0 特性与 shellexpand 2.x 中可用的特性等效。

重大更改

  • 使用 Rust 2018,将 MSRV 提高到 1.31.0。
  • 新增 path 模块,以及相应的 cargo 特性。

版本 2.1.2

小更改

  • "Un-forked":现在作为 shellexpand 在 crates.io 上发布。
  • 列出此 crate 的替代方案。
  • 从 dirs-next 切换回 dirs。
  • 改进文档中的链接,并修复损坏的链接和徽章。
  • 应用一些来自 cargo fix 的建议。

版本 2.1.1

版本 2.1.0

  • 切换到 dirs-next 而不是过时的 dirs,作为用于解析家目录的基础依赖。
  • 将项目构建从 Travis CI 切换到 GitHub Actions。

版本 2.0.0

  • 增加了变量扩展中默认值的支持(即 ${ANSWER:-42}
  • 破坏性更改(最低Rust版本现在是1.30.0)
    • 使用dyn为特质对象以解决弃用警告
    • Error实现中,将使用source()替换cause(),因此为泛型错误参数E添加了'static约束

版本1.1.1

  • dirs依赖项升级到2.0。

版本1.1.0

  • 将弃用的std::env::home_dir更改为dirs::home_dir函数

版本1.0.0

  • 修复了文档中的错别字和轻微的不完整性
  • 将波浪号扩展函数的home_dir参数类型更改为FnOnce而不是FnMut
  • LookupError::name字段名称更改为var_name

版本0.1.0

  • 首次发布

许可

此程序根据您选择以下任一项许可

任选其一。

贡献

除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可定义,应如上双许可,不附加任何其他条款或条件。

依赖项

~0–10MB
~58K SLoC