UNPKG

dhis2-frontend-code-quality

Version:

Code quality tools that are easily installable to your repo

89 lines (73 loc) 2.31 kB
var inquirer = require("inquirer"); var Validate = require('git-validate'); var SCRIPT_NAME = 'D2CQT: '; var OVERWRITE = true; function copyFiles(answers) { log('Copying files ...'); Validate.copy('templates/editorconfig', '.editorconfig'); Validate.copy('templates/gitignore', '.gitignore'); Validate.copy('templates/npmignore', '.npmignore'); Validate.copy('templates/eslintrc', '.eslintrc'); if (answers.uses_scss) { Validate.copy('templates/scss-lint.yml', '.scss-lint.yml', {overwrite: OVERWRITE}); } log('Done!'); } function createLintScript(answers) { var lintScript = ['eslint src']; if (answers.writes_tests) { lintScript.push("eslint --env node,mocha --global expect,sinon --rule 'no-unused-expressions: 0' test"); } if (answers.uses_scss) { lintScript.push('scss-lint'); } return lintScript.join(' && '); } function getPrePushActions(answers) { var prePushActions = ['lint']; if (answers.writes_tests) { prePushActions.push('test'); } return prePushActions; } function installGitHook(answers) { log('Creating git hooks ...'); Validate.installScript('lint', createLintScript(answers), {overwrite: OVERWRITE}); Validate.configureHook('pre-push', getPrePushActions(answers)); log('Done!'); } function log(logValue) { console.log(SCRIPT_NAME + logValue); } function askQuestions() { inquirer.prompt([ { type: "list", name: "project_type", message: "Please pick the type of DHIS2 project are you creating!", choices: [ new inquirer.Separator(), "WebApp", "Library", ], filter: function( val ) { return val.toLowerCase().replace(/\W/, '_'); } }, { type: "confirm", name: "uses_scss", message: "Will you use scss in your project?", default: true, }, { type: "confirm", name: "writes_tests", message: "Will you write tests?", default: true, } ], function(answers) { copyFiles(answers); installGitHook(answers); log('Totally done! :) Happy hacking!'); }); } askQuestions();