#!/usr/bin/env node

const { promisify } = require("util");
const fs = require("fs");
const mkdtemp = promisify(fs.mkdtemp);
const path = require("path");
const os = require("os");
const shell = require("shelljs");

(async function() {
  function lintFile(tempDir, arg, file) {
    const out = path.join(tempDir, file);
    shell.mkdir("-p", path.dirname(out));
    shell.sed(/<%.+%>/, "", file).to(out);
    const result = shell.exec(`node_modules/.bin/htmlhint ${arg} --config=.htmlhintrc ${out}`);
    return result.code;
  }

  let result = 0;
  if (process.argv.length > 2) {
    const tempDir = await mkdtemp(path.join(os.tmpdir(), "lint-html-"));
    let files;
    let arg = "";
    if (process.argv.length === 4) {
      arg = process.argv[2];
      files = process.argv[3];
    } else {
      files = process.argv[2];
    }
    const results = shell.ls(files).map(lintFile.bind(null, tempDir, arg));
    result = results.reduce((a, r) => a + r, 0);
    shell.rm("-r", tempDir);
  }

  shell.exit(result);
})();