<reponame>brave-experiments/webcompat-measurement-pipeline<filename>crawler/lib/loadEasyListTemplates.js<gh_stars>0// vim: set tw=99 ts=2 sts=2 sw=2 et:

// Copyright (C) 2022-23 Michael Smith <lyhxr@example.com> (https://spinda.net)

// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at

//     http://www.apache.org/licenses/LICENSE-2.0

// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.

'use strict';

const fs = require('fs-extra');
const path = require('path');

const handlebars = require('handlebars');

const { easyListTemplatesDirPath } = require('./paths');

let templates = null;

module.exports = async () => {
  if (templates) {
    return templates;
  }

  templates = new Map();

  const templateFileNames = await fs.readdir(easyListTemplatesDirPath);

  for (const templateFileName of templateFileNames) {
    const templateFilePath = path.join(easyListTemplatesDirPath, templateFileName);
    const templateName = path.basename(templateFileName, '.handlebars');
    templates.set(templateName,
      handlebars.compile(await fs.readFile(templateFilePath, { encoding: 'utf-8' })));
  }

  return templates;
};
