#!/usr/bin/env ruby # -*- coding: utf-8 -*- load 'util.rb' require 'yaml' # ARGV[0] type = ARGV.shift template = "bin/index.#{type}.erb" erb = ERB.new(File.read(template)); erb.filename = template # ARGV[1] @path = ARGV.shift webpath = (@path+'/').sub(/^(src|out)\//, '/') if type == 'atom' webpath += 'index.atom' end @url = URI::parse('https://www.andrewdm.me/') + webpath indexyaml = @path.sub('out', 'src')+'/index.yaml' if File.exists?(indexyaml) metadata = YAML::load(File.read(indexyaml)) else metadata = {} end @pages = [] for data in metadata['external'] @pages.push(ExternPage.new(data)) end # ARGV[2..] for filename in ARGV do @pages.push(Page.new(filename)) end # main @title = metadata['title'] || @path.sub('out', '') def guess_section(page) for path in @sections.keys do if @url.route_to(page.url).to_s.start_with?(path+'/') return path end end return '' end @sections = { '' => {'head' => '', 'body' => []} } (metadata['sections'] || []).each do |path, name| @sections[path] = { 'head' => name, 'body' => [] } end for page in @pages do section = page.section || guess_section(page) @sections[section]['body'].push(page) end erb.run()