#目录树 #命令行工具 #模式 #权限 #配置 #构建 #

app diskplan

用于从一组模式中构建目录树的命令行工具和配置系统

1 个不稳定版本

0.1.0 2023 年 10 月 6 日

#1106文件系统

MIT 许可证

120KB
3K SLoC

.          .   0 .          .                      .
 0   .      1   \  1   .            .
. \ 1  0. _/_0   \/ 0 ________________________________________
 0_) \/  / 1  0  /_/  ____  ___  __ __  _ _ __  _     __  _  _
   .\/__(_/  (__/   .  |  \  |  (_   |_/   |__) |   .|__| |\ |
       0 \/  . (_/.   _|__/ _|_.__) _| \_ _|_   |__) |  | | \|
      . \_)   _) 1    ________________________________________
         . \_/__/     .                          .
            (/                            .            .
            )              .

磁盘规划

磁盘规划是一个命令行工具和配置系统,可以从一组模式中构建目录树。它可以

  • 创建文件、目录和符号链接
  • 设置所有者、组和 UNIX 权限
  • 创建具有固定名称的目录条目,或匹配正则表达式的变量条目
  • 定义和重用模式子树
  • 具有多个根茎,创建和遍历到其他茎的符号链接

快速入门

以下示例假设 diskplan 是一个可用的命令。如果您已经检出代码,您可以在当前终端中这样做以使其可用

$ cargo build
$ export PATH="$PWD/target/debug:$PATH"

目前,适当的安装留给读者。

要使用一个非常快速的示例运行 diskplan(不更改磁盘),请运行

$ cd examples/quickstart
$ diskplan /tmp/diskplan-root

您将看到以下预览

[WARN  diskplan] Simulating in memory only, use --apply to apply to disk
[WARN  diskplan] Displaying in-memory filesystem...

[Root: /tmp/diskplan-root]
drwxr-xr-x root       root       /tmp/diskplan-root/
drwxr-xr-x root       root         sub-directory/
-rw-r--r-- root       root           blank_file

磁盘规划在当前目录中查找 diskplan.toml 文件。以下是此示例的文件内容

[stems.main]
root = "/tmp/diskplan-root"
schema = "simple-schema.diskplan"

"main" 茎将磁盘上的根路径(在其中构建将被包含)与应用于此根路径内的路径的模式相关联。模式文件相对于配置文件找到,对于此示例包含以下内容

# Root directory configuration
# ...
:let emptyfile = /dev/null

# Sub-directory
sub-directory/

    # Variable directory...
    $variable/
        # ...whose name must match this pattern...
        :match [A-Z][a-z]*

        # ...will then create this
        inner-directory/

    # An empty file
    blank_file
        :source ${emptyfile}

请注意,在早期输出中,已创建了 sub-directoryblank_file,但没有为 $variable 创建任何内容。此变量目录可以直接通过路径创建,或者通过为此变量分配值来创建

$ diskplan /tmp/diskplan-root/sub-directory/Example
$ diskplan /tmp/diskplan-root --vars 'variable:Example'

这两个都产生以下输出

[Root: /tmp/diskplan-root]
drwxr-xr-x root       root       /tmp/diskplan-root/
drwxr-xr-x root       root         sub-directory/
drwxr-xr-x root       root           Example/
drwxr-xr-x root       root             inner-directory/
-rw-r--r-- root       root           blank_file

依赖项

~11MB
~190K SLoC