diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2017-01-07 00:59:01 -0500 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2017-01-07 00:59:01 -0500 |
commit | 90a45f9729f131569889f52cf792007f23df3949 (patch) | |
tree | 3a7297268da2f4fd81749c4e724faaa7a8f0f047 | |
parent | add2ce8c856d99a2f4cc0bbd4f630cc9aeb2ef05 (diff) |
tidy
-rw-r--r-- | Makefile | 93 | ||||
-rwxr-xr-x | benchmark | 7 | ||||
-rwxr-xr-x | bin/index | 61 | ||||
-rwxr-xr-x | bin/page | 12 | ||||
-rwxr-xr-x | bin/write-atomic | 21 | ||||
-rwxr-xr-x | bin/write-ifchanged | 25 | ||||
-rwxr-xr-x | make (renamed from check.rb) | 1 |
7 files changed, 4 insertions, 216 deletions
@@ -1,91 +1,4 @@ -SHELL = bash -o pipefail +MAKEFLAGS += -j1 -RUBYLIB := $(realpath .)/lib$(if $(RUBYLIB),:$(RUBYLIB)) -export RUBYLIB - -# Usage: $(call patsubst,PATTERN1 PATTERN2...,REPLACEMENT,TEXT) -# -# Like $(patsubst), but takes multiple patterns that are all replaced -# with the same replacement. -patsubst-all = $(if $1,$(call patsubst-all,$(wordlist 2,$(words $1),$1),$2,$(patsubst $(firstword $1),$2,$3)),$3) - -# Which suffixes can we turn in to HTML? -html.suffixes = md org -# Find all source files with those suffixes -html.src = $(shell find src -type f \( -false $(foreach s,$(html.suffixes), -o -name '*.$s' ) \)) -# Translate the source filenames into output filenames -html.out = $(call patsubst-all,$(addprefix src/%.,$(html.suffixes)),out/%.html,$(html.src)) -html.dirs = $(sort $(patsubst src%,out%, \ - $(patsubst %/,%,$(dir $(html.src))) \ - $(shell find src -name index.yaml -printf '%h\n'))) -html.out += out/index.atom $(addsuffix /index.html,$(html.dirs)) - -all: $(html.out) out/main.css -.PHONY: all out/tags - -bin/page = bin/page bin/util.rb bin/pandoc.rb -bin/index = bin/index bin/util.rb bin/pandoc.rb - -out/%.html: src/%.md $(bin/page) bin/page.html.erb bin/write-atomic - @mkdir -p $(@D) - bin/page html $< | bin/write-atomic $@ -out/%.html: out/%.md $(bin/page) bin/page.html.erb bin/write-atomic - bin/page html $< | bin/write-atomic $@ - -out/%.html: src/%.org $(bin/page) bin/page.html.erb bin/write-atomic - @mkdir -p $(@D) - bin/page html $< | bin/write-atomic $@ -out/%.html: out/%.org $(bin/page) bin/page.html.erb bin/write-atomic - bin/page html $< | bin/write-atomic $@ - -out/%.css: src/%.scss - @mkdir -p $(@D) - scss --stdin < $< > $@ -out/%.css: out/%.scss - scss --stdin < $< > $@ - -index.all = $(filter-out %/ChangeLog.md %/index.md,$(html.src) $(shell find src -type f -name index.yaml)) -index.filter = $(filter-out %/index.yaml,$(filter $(@D)/% $(patsubst out%,src%,$(@D))/%,$1)) -index.cmd = bin/index $(patsubst .%,%,$(suffix $@)) $(@D) $(call index.filter,$^) | bin/write-atomic $@ -index.dep = $(bin/index) bin/index.$1.erb .var.index.all $(index.all) bin/write-atomic Makefile -out/index.md : $(call index.dep,md) - @mkdir -p $(@D) - $(index.cmd) -out/%/index.md : $(call index.dep,md) - @mkdir -p $(@D) - $(index.cmd) -out/index.atom : $(call index.dep,atom) - @mkdir -p $(@D) - $(index.cmd) -out/%/index.atom : $(call index.dep,atom) - @mkdir -p $(@D) - $(index.cmd) - -serve: serve-8000 -serve-%: all - dir=$$(mktemp -d -t) && trap 'fusermount -u "$$dir"; rmdir "$$dir"' EXIT && unionfs -o ro out:src "$$dir" && (cd "$$dir" && python3 -m http.server $*) -.PHONY: serve serve-% - -.var.%: FORCE bin/write-ifchanged - @printf '%s' $(call quote.shell,$($*)) | sed 's/^/#/' | bin/write-ifchanged $@ --include $(wildcard .var.*) - - -irb: - irb -.PHONY: irb - -check: - ./check.rb - -.PHONY: FORCE -.DELETE_ON_ERROR: -.SECONDARY: - -define nl - - -endef -# I put this as the last line in the file because it confuses Emacs syntax -# highlighting and makes the remainder of the file difficult to edit. -quote.shell = $(subst $(nl),'$$'\n'','$(subst ','\'',$1)') +%: + ./make diff --git a/benchmark b/benchmark deleted file mode 100755 index b06c621..0000000 --- a/benchmark +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -rm -rf out -thing='start up' -{ make -j1; echo done;}|ts -i '%.s'|sed 's/ .* / /' |while read -r time newthing; do - echo $time $thing - thing=$newthing -done | sort -n diff --git a/bin/index b/bin/index deleted file mode 100755 index c3ac2ff..0000000 --- a/bin/index +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env ruby -# -*- coding: utf-8 -*- -require 'util' -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() diff --git a/bin/page b/bin/page deleted file mode 100755 index e2d4f38..0000000 --- a/bin/page +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env ruby -# -*- coding: utf-8 -*- -require 'util' -require 'uri' - -template = "bin/page.#{ARGV[0]}.erb" -@page = Page.new(ARGV[1]) -@url = URI::parse('https://www.andrewdm.me/') + @page.absoutpath - -erb = ERB.new(File.read(template)); -erb.filename = template -erb.run() diff --git a/bin/write-atomic b/bin/write-atomic deleted file mode 100755 index efb2551..0000000 --- a/bin/write-atomic +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash -# Copyright (C) 2015-2016 Luke Shumaker -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -outfile=$1 -tmpfile="$(dirname "$outfile")/.tmp${outfile##*/}" - -cat > "$tmpfile" || { r=$?; rm -f "$tmpfile"; exit $r; } -mv -f "$tmpfile" "$outfile" diff --git a/bin/write-ifchanged b/bin/write-ifchanged deleted file mode 100755 index 185ceb0..0000000 --- a/bin/write-ifchanged +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -# Copyright (C) 2015 Luke Shumaker -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -outfile=$1 -tmpfile="$(dirname "$outfile")/.tmp${outfile##*/}" - -cat > "$tmpfile" || exit $? -if cmp -s "$tmpfile" "$outfile"; then - rm -f "$tmpfile" || : -else - mv -f "$tmpfile" "$outfile" -fi @@ -1,4 +1,5 @@ #!/usr/bin/env ruby +$:.unshift('lib') require 'sitegen' require 'page_index' |