All files / sonarqube index.ts

100% Statements 13/13
100% Branches 1/1
100% Functions 3/3
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 432x 2x   2x 2x 2x   2x       3x                 3x 1x   1x 2x     1x         1x                    
import path from 'path';
import Generator, { Answers } from 'yeoman-generator';
 
import { Filenames } from '../lib/enums/filenames';
import { Messages } from '../lib/enums/messages';
import { Names } from '../lib/enums/names';
 
module.exports = class extends Generator {
  answers!: Answers;
 
  async prompting(): Promise<void> {
    this.answers = await this.prompt({
      type: 'confirm',
      name: Names.SONARQUBE,
      message: Messages.SONARQUBE,
      default: false,
    });
  }
 
  writing() {
    if (this.answers[Names.SONARQUBE]) {
      this.fs.append(this.destinationPath(Filenames.README), this.fs.read(this.templatePath(Filenames.README)));
 
      [Filenames.SONARQUBE_PROPERTIES, Filenames.DOCKER_COMPOSE].forEach((filename: Filenames) => {
        this.fs.copy(this.templatePath(filename), this.destinationPath(filename));
      });
 
      this.fs.copyTpl(
        this.templatePath(Filenames.SONARQUBE_REPORT_SCRIPT),
        this.destinationPath(path.join(Filenames.SRIPTS_FOLDER, Filenames.SONARQUBE_REPORT_SCRIPT)),
      );
 
      this.fs.extendJSON(this.destinationPath(Filenames.PACKAGE_JSON), {
        scripts: {
          'sonarqube:start': 'docker-compose up -d',
          'sonarqube:stop': 'docker-compose down',
          'sonarqube:report': 'sh scripts/report_sonarqube.sh -k',
        },
      });
    }
  }
};