#switch #cases #configuration #pre-processor

bin+lib ssccpp

SSCCPP,简单开关情况配置预处理器

1 个不稳定版本

0.1.0 2019 年 8 月 9 日

#623配置

MIT 许可证

16KB
323

SSCCPP,简单开关情况配置预处理器

这个小工具可以轻松地创建一个可以适应不同情况的单一文件。典型用途是管理 dotfiles,允许只有一个 git 分支,然后在使用作为实际配置文件之前进行预处理。

它用 Rust 编写,并提供了一个库以及两个二进制文件:ssccppssccpp-batchssccpp 处理单个文件,而 ssccpp-batch 处理目录中的所有文件,将其结构复制到另一个目录中。

概念

ssccpp 在一个文件上工作,其中一些行被转换成了开关语句。这些开关语句通过查找分隔符(默认为 8 个连续的 '>' 字符)来识别。

开关块按以下顺序组成:

  1. 一个或多个“特定”情况: >>>>>>>> ident1, ident2, ...
  2. 一个“其他”情况: >>>>>>>> *
  3. 和结束分隔符: >>>>>>>>

当到达这样的块时,ssccpp 将检查每个 特定 情况是否有一个 ident 与搜索的标识符匹配(默认为主机名),如果匹配,则输出后续文本。当到达“其他”块时,如果没有进入之前的任何 特定 语句,则输出后续文本。最后,当到达结束分隔符时,将打印所有后续文本,直到遇到新的块。

示例

第一个示例

This line will be displayed everywhere.
>>>>>>>> foo, bar
This line will be displayed on foo and bar only.
>>>>>>>> ga, bu, zo
This line will be displayed on ga, bu and zo, but not foo or bar.
>>>>>>>> foo, zo
This line will be displayed on foo and zo.
>>>>>>>> *
This line will be displayed on anything that is not foo, bar, ga, bu or zo.
>>>>>>>>
This line will be displayed everywhere.

配置文件示例

在这个示例中,用户有一个 dotfiles 目录,该目录模仿了他们的 /home/user 目录的结构

dotfiles/
├── scripts/
│   └── wallpaper.sh
└── .xinitrc

文件内容如下

wallpaper.sh

>>>>>>>> laptop
feh --bg-scale 'Images/WallpaperLaptop.png'
>>>>>>>> *
feh --bg-scale 'Images/DefaultWallpaper.png'

.xinitrc

>>>>>>>> desktop
xrandr --dpi 166
>>>>>>>> laptop
xrandr --dpi 96
>>>>>>>>

exec i3

执行 ssccpp-batch dotfiles/ /home/user --ident laptop 后,文件将以相同的结构存放在其家目录中,并变为

wallpaper.sh

feh --bg-scale 'Images/WallpaperLaptop.png'

.xinitrc

xrandr --dpi 96

exec i3

执行 ssccpp-batch dotfiles/ /home/user --ident desktop 后,文件将变为

wallpaper.sh

feh --bg-scale 'Images/DefaultWallpaper.png'

.xinitrc

xrandr --dpi 166

exec i3

依赖项

~2.7–4MB
~61K SLoC