#!/usr/bin/env ruby require 'html/proofer' ## Will throw an exception (exiting false) if any internal links don't ## work. The Makefile will terminate on the failure HTML::Proofer.new( ## To test, uncomment the array below and comment out ./_site and :disable_external #[ "/foo/bar#baz", "/foo/bar", "#", "#wallet", "/foo.css", "/bar.png", "/zh_TW/bitcoin-for-businesses" ], "./_site", { ## Disable external link checking by default to avoid spurious ## Travis CI failures. TODO: take an argument to optionally ## enable external link checking as part of the Makefile ## manual checks :disable_external => true, ## Links to ignore :href_ignore => [ '#', ## hrefs pointing to the current page (htmlproofer fails them) /^\/bin/, ## /bin dir is not part of repository; holds Bitcoin Core binaries /^\/stats/ ## /stats dir is not part of repository; generated by separate stats script ], ## Mangle links. If we enable external link checking, this will ## require updating :href_swap => { ## (Hack) Append '$' to the ends of filenames we don't want to append .html to /(css|png|rss|pdf|jpg|asc|xml)$/ => '\1$', ## Append .html to end of most URLs so proofer can find the local files /^( [^#]+ ## Don't match URL containing a hash, we'll deal with them separately [^\/$] ## Don't match URLs ending in a slash or $ )$/x => '\1.html', ## Insert .html between page and anchor, but only if there's a ## page name /^(.+)(#.+)/ => '\1.html\2', ## (Un-hack) Remove previously-appended '$' from URLs /\$$/ => '', }, ## It'd be nice if we had a _local_config.yaml file or something ## for settings specific to particular systems, but for now I ## think 2 is a good setting for Travis CI ("1.5 processors") ## and me (usually 2 processors) :parallel => { :in_processes => 2 } } ).run