diff options
| author | Bradley Taunt <git@btxx.org> | 2026-03-09 09:53:28 -0400 |
|---|---|---|
| committer | Bradley Taunt <git@btxx.org> | 2026-03-09 09:53:28 -0400 |
| commit | caf99ae22c885e97f993a3a148e51c609794f098 (patch) | |
| tree | dd2fa6396bcaa2f38743665e342de4c424fe8a8a /scripts/sites-yml-generator.rb | |
| parent | 47cef12240cf9315fec684564d4fc0389d56c653 (diff) | |
Rework member website structure
- Use data sites yaml for listing all members, remove site_listings files
- Update submission page to reflect updates
- Include required gems in Gemfile
- Include build file for auto formatting sites.yml
Diffstat (limited to 'scripts/sites-yml-generator.rb')
| -rw-r--r-- | scripts/sites-yml-generator.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/scripts/sites-yml-generator.rb b/scripts/sites-yml-generator.rb new file mode 100644 index 0000000..2085179 --- /dev/null +++ b/scripts/sites-yml-generator.rb @@ -0,0 +1,46 @@ +#!/usr/bin/env ruby +# Parses all *.md files in _site_listings/ and outputs a combined sites.yml. + +LISTINGS_DIR = "_site_listings" +OUTPUT_FILE = "_data/sites.yml" + +def parse_frontmatter(filepath) + content = File.read(filepath, encoding: "utf-8") + blocks = content.scan(/---\s*\n(.*?)\n---/m) + + meta = {} + blocks.each do |block,| + block.strip.each_line do |line| + key, value = line.strip.split(":", 2) + meta[key.strip] = value.strip if key && value + end + end + + meta +end + +def format_entry(meta) + lines = [] + lines << "- domain: #{meta["pageurl"]}" + lines << " size: #{meta["size"]}" if meta["size"] + lines << " http: true" if meta["http"] == "true" + lines << " hof: true" if meta["hof"] == "true" + lines.join("\n") +end + +files = Dir.glob(File.join(LISTINGS_DIR, "*.md")).sort + +abort "No .md files found in '#{LISTINGS_DIR}/'" if files.empty? + +entries = files.filter_map do |filepath| + meta = parse_frontmatter(filepath) + if meta.empty? + warn "Warning: no frontmatter found in #{filepath}" + nil + else + format_entry(meta) + end +end + +File.write(OUTPUT_FILE, entries.join("\n\n") + "\n") +puts "Written #{entries.size} entries to #{OUTPUT_FILE}"
\ No newline at end of file |
