Skip to content

Instantly share code, notes, and snippets.

@dlight
Last active August 1, 2021 16:39
Show Gist options
  • Save dlight/56450133ea53b0eaa79ad6d31b964cac to your computer and use it in GitHub Desktop.
Save dlight/56450133ea53b0eaa79ad6d31b964cac to your computer and use it in GitHub Desktop.
Templating engine written in bash
$ cat README.md.in
# awesome-rust-forums
Curated list of Rust forums
This, blabla
{{list}}
# Ble
bli
$ cat gen
#!/bin/bash
# https://github.com/TomWright/dasel
# paru -S dasel
list() {
dasel -p toml -m "$1" < forums.toml
}
get() {
list ".$1.$2.$3"
}
readme=$(< README.md.in)
for i in $(list '.-'); do
readme="$(sed "s/{{list}}/# $i\n\n{{list}}/" <<< $readme)"
#echo "$readme"
for j in $(list ".$i.-"); do
rss=$(get $i $j rss)
url=$(get $i $j url)
string="[$j]($url) - [rss]($rss)\n\n"
#echo $string
readme="$(sed "s|{{list}}|$string{{list}}|" <<< $readme)"
done
done
readme="$(sed '/{{list}}/d' <<< $readme)"
printf '%s\n' "$readme" > README.md
$ cat forums.toml
[general.r_rust]
platform = "reddit"
url = "https://www.reddit.com/r/rust/"
rss = "http://www.reddit.com/r/rust/.rss"
[general.t_rust]
platform = "lobsters"
url = "https://lobste.rs/t/rust"
rss = "https://lobste.rs/t/rust.rss"
[general.c_rust]
platform = "lemmy"
url = "https://lemmy.ml/c/rust"
rss = "https://lemmy.ml/feeds/c/rust.xml?sort=Active"
[gamedev.r_gamedev]
platform = "reddit"
url = "https://www.reddit.com/r/rust_gamedev/"
rss = "http://www.reddit.com/r/rust_gamedev/.rss"
[audio.rust_audio]
platform = "discourse"
url = "https://rust-audio.discourse.group/"
rss = "https://rust-audio.discourse.group/posts.rss"
rss_comments = "https://rust-audio.discourse.group/latest.rss" # ?
$ ./gen
$ cat README.md
# awesome-rust-forums
Curated list of Rust forums
This, blabla
# audio
[rust_audio](https://rust-audio.discourse.group/) - [rss](https://rust-audio.discourse.group/posts.rss)
# general
[t_rust](https://lobste.rs/t/rust) - [rss](https://lobste.rs/t/rust.rss)
[c_rust](https://lemmy.ml/c/rust) - [rss](https://lemmy.ml/feeds/c/rust.xml?sort=Active)
[r_rust](https://www.reddit.com/r/rust/) - [rss](http://www.reddit.com/r/rust/.rss)
# gamedev
[r_gamedev](https://www.reddit.com/r/rust_gamedev/) - [rss](http://www.reddit.com/r/rust_gamedev/.rss)
# Ble
bli
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment