def run!(cmd, chdir='.')
  GitlabPagesSupport.print_cmd(cmd)
  if !system(*cmd, chdir: chdir)
    GitlabPagesSupport.fail_cmd!(cmd)
  end
end

def capture!(cmd, chdir='.')
  GitlabPagesSupport.print_cmd(cmd)
  output = IO.popen(cmd, chdir: chdir) { |io| io.read }
  fail_cmd!(cmd) unless $?.success?
  output
end

module GitlabPagesSupport
  class << self
    def print_cmd(cmd)
      puts '-> ' + printable_cmd(cmd)
    end

    def fail_cmd!(cmd)
      abort "command failed: #{printable_cmd(cmd)}"
    end

    def printable_cmd(cmd)
      cmd.join(' ')
    end
  end
end
