text: "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  const path = require("path");
  const Lint = require("tslint");
  const minimatch = require("minimatch");
  const fs = require("fs");
  class Rule extends Lint.Rules.AbstractRule {
      apply(sourceFile) {
          return this.applyWithWalker(new ADFLicenseBannerRule(sourceFile, this.getOptions()));
      }
  }
  Rule.metadata = {
      ruleName: 'adf-license-banner',
      type: 'maintainability',
      description: ``,
      descriptionDetails: ``,
      rationale: ``,
      options: null,
      optionsDescription: `Not configurable.`,
      typescriptOnly: true,
  };
  Rule.FAILURE_STRING = 'Missing license header in this TypeScript ' +
      'file Every TypeScript file of the library needs to have the Alfresco license banner at the top.';
  exports.Rule = Rule;
  class ADFLicenseBannerRule extends Lint.RuleWalker {
      constructor(sourceFile, options) {
          super(sourceFile, options);
          const fileGlobs = options.ruleArguments;
          this.licensePath = options.ruleArguments[1];
          const relativeFilePath = path.relative(process.cwd(), sourceFile.fileName);
          this._enabled = fileGlobs.some(p => minimatch(relativeFilePath, p));
      }
      visitSourceFile(sourceFile) {
          if (!this._enabled) {
              return;
          }
          const fileContent = sourceFile.getFullText();
          const licenseBanner = fs.readFileSync(this.licensePath, 'utf8');
          const licenseCommentPos = fileContent.indexOf(licenseBanner);
          const tslintFix = Lint.Replacement.appendText(0, licenseBanner + '\n\n');
          if (licenseCommentPos !== 0) {
              return this.addFailureAt(0, 0, Rule.FAILURE_STRING, tslintFix);
          }
          super.visitSourceFile(sourceFile);
      }
  }
  