1 个不稳定版本
0.1.0 | 2019 年 8 月 9 日 |
---|
#623 在 配置
16KB
323 行
SSCCPP,简单开关情况配置预处理器
这个小工具可以轻松地创建一个可以适应不同情况的单一文件。典型用途是管理 dotfiles,允许只有一个 git 分支,然后在使用作为实际配置文件之前进行预处理。
它用 Rust 编写,并提供了一个库以及两个二进制文件:ssccpp
和 ssccpp-batch
。 ssccpp
处理单个文件,而 ssccpp-batch
处理目录中的所有文件,将其结构复制到另一个目录中。
概念
ssccpp
在一个文件上工作,其中一些行被转换成了开关语句。这些开关语句通过查找分隔符(默认为 8 个连续的 '>' 字符)来识别。
开关块按以下顺序组成:
- 一个或多个“特定”情况:
>>>>>>>> ident1, ident2, ...
- 一个“其他”情况:
>>>>>>>> *
- 和结束分隔符:
>>>>>>>>
当到达这样的块时,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