#!/usr/bin/env ruby

require 'html/proofer'

if ARGV[0].nil?
  path_to_check = "./_site"
else
  path_to_check = ARGV[0]
end

## 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" ],
  path_to_check,
  {
    ## 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,

    ## Check whether HTML is well-formed
    :check_html => true,

    ## Links to ignore
    :href_ignore => [
      '#',           ## hrefs pointing to the current page (htmlproofer fails them)
      /^$/,          ## anchors with no href attribute set (for clickable javascript elements)
      /^\/bin/,      ## /bin dir is not part of repository; holds Bitcoin Core binaries
      'bitcoin:3FkenCiXpSLqD8L79intRNXUgjRoH9sjXa', ## bitcoin address handlers
      /^\/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',

      /\/(.html#.+)/ => '\1',

      ## (Un-hack) Remove previously-appended '$' from URLs
      /\$$/ => '',
    },

<<<<<<< HEAD
        ## 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
=======
    ## 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
>>>>>>> 3f9dc02e... rubocop: Remove extra spaces
