mirror of
https://github.com/samsonjs/samhuri.net.git
synced 2026-04-27 14:57:40 +00:00
Streamline site generation
This commit is contained in:
parent
fd785fcf2f
commit
5f2ca2e44d
7 changed files with 10 additions and 113 deletions
10
Makefile
10
Makefile
|
|
@ -2,17 +2,19 @@ all: blog
|
||||||
|
|
||||||
blog: sitegen
|
blog: sitegen
|
||||||
@echo
|
@echo
|
||||||
./bin/compile . www
|
rm -rf www
|
||||||
|
./bin/sitegen . www
|
||||||
|
|
||||||
publish: blog
|
publish: blog
|
||||||
@echo
|
@echo
|
||||||
./bin/publish --delete
|
./bin/publish --delete www/
|
||||||
|
|
||||||
publish_beta:
|
publish_beta:
|
||||||
@echo
|
@echo
|
||||||
./bin/build-sitegen
|
./bin/build-sitegen
|
||||||
./bin/compile . www "https://beta.samhuri.net"
|
rm -rf www
|
||||||
./bin/publish --beta --delete
|
./bin/sitegen . www "https://beta.samhuri.net"
|
||||||
|
./bin/publish --beta --delete www/
|
||||||
|
|
||||||
sitegen:
|
sitegen:
|
||||||
@echo
|
@echo
|
||||||
|
|
|
||||||
|
|
@ -105,11 +105,11 @@ Execution, trying TDD for the first time:
|
||||||
|
|
||||||
- [x] Munge HTML files to make them available without an extension (index.html hack, do it in the SiteGenerator)
|
- [x] Munge HTML files to make them available without an extension (index.html hack, do it in the SiteGenerator)
|
||||||
|
|
||||||
- [ ] Use perf tools on beta.samhuri.net and compare to samhuri.net to see if inlining css and minifying JS is actually worthwhile
|
- [x] Use perf tools on beta.samhuri.net and compare to samhuri.net to see if inlining css and minifying JS is actually worthwhile
|
||||||
|
|
||||||
- [ ] Inline CSS?
|
- [x] Inline CSS? Nope
|
||||||
|
|
||||||
- [ ] Minify JS? Now that we're keeping node, why not ...
|
- [x] Minify JS? Now that we're keeping node, why not ... Nope! Ditched node too
|
||||||
|
|
||||||
- [ ] Add a server for local use and simple production setups (or use a file watcher + `python -m SimpleHTTPServer`?)
|
- [ ] Add a server for local use and simple production setups (or use a file watcher + `python -m SimpleHTTPServer`?)
|
||||||
|
|
||||||
|
|
|
||||||
30
bin/compile
30
bin/compile
|
|
@ -1,30 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# bail on errors
|
|
||||||
set -e
|
|
||||||
|
|
||||||
THIS_DIR=$(dirname "$0")
|
|
||||||
SOURCE_DIR="$1"
|
|
||||||
TARGET_DIR="$2"
|
|
||||||
URL_OVERRIDE="$3"
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
rm -rf "$TARGET_DIR"
|
|
||||||
|
|
||||||
echo "* generate site from $SOURCE_DIR into $TARGET_DIR"
|
|
||||||
"$THIS_DIR/sitegen" "$SOURCE_DIR" "$TARGET_DIR" "$URL_OVERRIDE"
|
|
||||||
|
|
||||||
# echo "* inline CSS"
|
|
||||||
# ruby -w $THIS_DIR/inline-css "$TARGET_DIR"
|
|
||||||
|
|
||||||
# echo "* minify js"
|
|
||||||
# minify_js
|
|
||||||
}
|
|
||||||
|
|
||||||
# function minify_js() {
|
|
||||||
# for FILE in "$TARGET_DIR"/js/*.js; do
|
|
||||||
# $THIS_DIR/minify-js.sh "$FILE" > /tmp/minified.js && mv /tmp/minified.js "$FILE" || echo "* failed to minify $FILE"
|
|
||||||
# done
|
|
||||||
# }
|
|
||||||
|
|
||||||
main
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
#!/usr/bin/env ruby -w
|
|
||||||
|
|
||||||
require 'rubygems'
|
|
||||||
require 'bundler/setup'
|
|
||||||
require 'nokogiri'
|
|
||||||
require 'css_parser'
|
|
||||||
|
|
||||||
# Styles are so small, inline them all.
|
|
||||||
|
|
||||||
def main
|
|
||||||
root_dir = ARGV.shift
|
|
||||||
CSSInliner.new(root_dir).inline_all_css
|
|
||||||
end
|
|
||||||
|
|
||||||
class CSSInliner
|
|
||||||
|
|
||||||
def initialize(root_dir)
|
|
||||||
@root_dir = root_dir
|
|
||||||
end
|
|
||||||
|
|
||||||
def inline_all_css
|
|
||||||
Dir[File.join(@root_dir, '**/*.html')].each do |html_path|
|
|
||||||
next if html_path =~ /\/Chalk\/|\/tweets\//
|
|
||||||
inline_css(html_path)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def inline_css(html_path)
|
|
||||||
html = File.read(html_path)
|
|
||||||
doc = Nokogiri::HTML.parse(html)
|
|
||||||
css_parser = CssParser::Parser.new
|
|
||||||
|
|
||||||
doc.css('link').each do |link|
|
|
||||||
if link['rel'] == 'stylesheet'
|
|
||||||
path = File.join(@root_dir, link['href'])
|
|
||||||
css = File.read(path)
|
|
||||||
css_parser.add_block!(css)
|
|
||||||
|
|
||||||
style_node = Nokogiri::HTML.parse("
|
|
||||||
<style>
|
|
||||||
#{css}
|
|
||||||
</style>
|
|
||||||
").css('style')
|
|
||||||
|
|
||||||
link.replace(style_node)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
File.write(html_path, doc.to_html)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
main if $0 == __FILE__
|
|
||||||
|
|
@ -50,5 +50,4 @@ if [[ $ECHO -eq 1 ]]; then
|
||||||
echo "$CMD"
|
echo "$CMD"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp .git/$(cat .git/HEAD | cut -d' ' -f2) www/version.txt
|
|
||||||
$CMD
|
$CMD
|
||||||
|
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
def pad(n)
|
|
||||||
n = n.to_i
|
|
||||||
if n < 10
|
|
||||||
"0#{n}"
|
|
||||||
else
|
|
||||||
"#{n}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
Dir.chdir File.join(File.dirname(__FILE__), '../public/posts')
|
|
||||||
|
|
||||||
Dir['*.html.md'].each do |filename|
|
|
||||||
name = filename.sub('.html.md', '')
|
|
||||||
date, *rest = name.split('-')
|
|
||||||
year, month, _ = date.split('.')
|
|
||||||
slug = rest.join('-')
|
|
||||||
puts "Redirect 301 /blog/#{name} /posts/#{year}/#{pad(month)}/#{slug}"
|
|
||||||
end
|
|
||||||
2
bin/test
2
bin/test
|
|
@ -3,7 +3,7 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
for site in Tests/test-*; do
|
for site in Tests/test-*; do
|
||||||
bin/compile "$site/in" "$site/actual"
|
bin/sitegen "$site/in" "$site/actual"
|
||||||
diff -bru "$site/expected" "$site/actual"
|
diff -bru "$site/expected" "$site/actual"
|
||||||
rm -r "$site/actual"
|
rm -r "$site/actual"
|
||||||
done
|
done
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue