UNPKG

quality-bot

Version:

QBot Online Code Review Application

191 lines (177 loc) 9.68 kB
const simpleGit = require('simple-git'); const tempDirectory = require('temp-dir'); const version = require('./../package.json').version; const colors = require('./../common/colors'); const Utils = require('./utils'); const git = simpleGit(); const welcome = async (isConfigure) => { const command = 'config --get user.name'.split(' '); let res = await git.raw(command); const hColor = isConfigure ? colors.FgYellow : colors.FgBlue; console.log(); // New Line console.log(colors.Bright + hColor, "===========================================", colors.Reset); console.log(colors.Bright + hColor, " Welcome to QBot-Review v" + version, colors.Reset); console.log(colors.Bright + hColor, "===========================================", colors.Reset); console.log(); // New Line console.log( colors.Bright + colors.FgCyan, "Hello!", colors.Reset, res || "User", isConfigure ? "Please provide all the information which is help to review our code. Thanks" : "I am processing your request. Take a breath. I will get back to you shortly." ); console.log(); //success(); } const configurationSuccess = async (hooksPath, scope) => { console.log(); console.log(colors.Bright + colors.FgGreen, "----------------------------------------------------------", colors.Reset); console.log(colors.Bright + colors.FgGreen, "QBot precommit plugin configuration completed successfully", colors.Reset); console.log(colors.Bright + colors.FgGreen, "-----------------------------------------------------------", colors.Reset); console.log(); console.log(colors.Bright + colors.FgWhite, "Your core.hookspath is :" + hooksPath, colors.Reset); if (scope === 'local') { console.log(" it is only configured in this current repository this won't affect other repository thanks. Happy coding!"); } console.log(); } const configurationError = async (message) => { console.log(); console.log(colors.Bright + colors.FgYellow, "Configuration Error", colors.Reset); console.log(colors.Bright + colors.FgYellow, "-------------------", colors.Reset); console.log(colors.Bright + colors.FgRed, message, colors.Reset); console.log(); process.exit(1); } const success = async () => { const fileList = await Utils.getFileList(); if (!fileList.length) { noFiles(); return; } console.log(colors.Bright + colors.FgWhite, "Reviewed Files", colors.Reset); // New Line console.table(fileList.map(e => ({ "File Name": e }))); console.log("\n"); console.log(colors.Bright + colors.FgGreen, "----------------------------------------", colors.Reset); console.log(colors.Bright + colors.FgGreen, " Code Looks Good!", colors.FgCyan, "Happy Coding... ", colors.Reset); console.log(colors.Bright + colors.FgGreen, "----------------------------------------", colors.Reset); console.log(); process.exit(); } const comments = (comments) => { console.log(); console.log(colors.FgWhite, "Rule Name: " + comments.checkName, colors.Reset); console.log(colors.Bright + colors.FgCyan, `${comments.description}`, colors.Reset); console.log(); console.log(colors.Bright + colors.FgWhite, `Location: ${colors.FgYellow} ${comments.location.path} ${colors.FgGreen} (Line: ${comments.location.lines.begin} - ${comments.location.lines.end} )`, colors.Reset); console.log(colors.Bright + colors.FgWhite, "----------------------------------------", colors.Reset); console.log(); } const commentsInfo = (comments, fileList) => { const dir = tempDirectory + '/qbot-report'; console.log("\n"); console.log(colors.Bright + colors.FgWhite, `Total number of files reviewed: ${fileList.length}`, colors.Reset); console.log(); console.log(colors.Bright + colors.FgWhite, `You have ${comments} comments`, colors.Reset); // New Line console.log(); console.log(colors.Bright + colors.FgRed, "-----------------------------------------------------", colors.Reset); console.log(colors.Bright + colors.FgRed, " Commit Aborted, You have comments.. ", colors.Reset); console.log(colors.Bright + colors.FgRed, "-----------------------------------------------------", colors.Reset); console.log(); console.log(colors.Bright + colors.FgWhite, "Your Report available in bellow location please check", colors.Reset); console.log(colors.Bright + colors.FgBlue, "file:///" + dir + "/report.html", colors.Reset); console.log(); console.log(colors.Bright + colors.FgWhite, "Note: If you want to commit immediately without resolving the comments, add -n or --no-verify with git commit command.", colors.Reset); console.log(colors.Bright + colors.FgWhite, "Example: git commit -m \"You Commit Message\" -n or git commit -m \"You Commit Message\" --no-verify", colors.Reset); console.log(colors.Bright + colors.FgWhite, "This will skip entire pre-commit hooks.", colors.Reset); console.log(); process.exit(1); } const serverError = (message) => { console.log(); console.log(colors.Bright + colors.FgRed, message, colors.Reset); console.log(); console.log(colors.Bright + colors.FgYellow, "----------------------------", colors.Reset); console.log(colors.Bright + colors.FgYellow, " Server Error ", colors.Reset); console.log(colors.Bright + colors.FgYellow, "----------------------------", colors.Reset); console.log(); process.exit(1); } const invalidLocation = (message) => { console.log(); console.log(colors.Bright + colors.FgYellow, "----------------------------", colors.Reset); console.log(colors.Bright + colors.FgYellow, " Invalid Location ", colors.Reset); console.log(colors.Bright + colors.FgYellow, "----------------------------", colors.Reset); console.log(); console.log(colors.FgRed, message, colors.Reset); console.log(colors.Bright + colors.FgWhite, "Please use root location of your project", colors.Reset); console.log(); process.exit(1); } const invalidToken = () => { console.log(); console.log(colors.Bright + colors.FgYellow, "----------------------------", colors.Reset); console.log(colors.Bright + colors.FgYellow, " Invalid Token ", colors.Reset); console.log(colors.Bright + colors.FgYellow, "----------------------------", colors.Reset); console.log(); console.log(colors.Bright + colors.FgRed, "Need a valid token to review your files. Please follow the below instructions", colors.Reset); console.log() console.log(colors.Bright + colors.FgWhite, " git config --global user.qbot-token '**************' ", colors.Reset); console.log(colors.Bright + colors.FgWhite, " (OR)", colors.Reset); console.log(colors.Bright + colors.FgWhite, " quality-bot review <Your-token>", colors.Reset); console.log(); process.exit(1); } const helpMessage = () => { console.log(); console.log(colors.Bright + colors.FgCyan, "----------------------", colors.Reset); console.log(colors.Bright + colors.FgCyan, " Help ", colors.Reset); console.log(colors.Bright + colors.FgCyan, "----------------------", colors.Reset); console.log(); console.log(colors.Bright + colors.FgWhite, "Hello there...", colors.Reset); console.log(colors.FgWhite, "I am QBot. I am here to help you review your code to improve the code quality.", colors.Reset); console.log(colors.FgWhite, "Here is the some command which is help to review your code", colors.Reset); console.log(); console.log(colors.Bright, `${colors.FgYellow}Qbot Configuration ${colors.FgWhite}- One time setup`, colors.Reset); console.log(colors.Bright, `${colors.FgWhite}-----------------------------------`, colors.Reset); console.log(` Qbot configure is the one time process which will ask the qbot token and git hooks path.`); console.log(` Once you setup everything your code will automatically review before every commit.`); console.log(); console.log(` Note: The hooks path required only for global configuration.`); console.log(); console.log(colors.Bright + colors.FgWhite, " quality-bot configure", colors.Reset); console.log(colors.FgWhite, " - Qbot token", colors.Reset); console.log(colors.FgWhite, " - Git Hook Path", colors.Reset); console.log(); console.log(colors.Bright + colors.FgGreen, "Available Command", colors.Reset); console.log(); console.log(colors.Bright + colors.FgWhite, " 1. quality-bot configure", colors.Reset); console.log(colors.Bright + colors.FgWhite, " 2. quality-bot review", colors.Reset); console.log(colors.Bright + colors.FgWhite, " 3. quality-bot review --token=<qbot-token>", colors.Reset); console.log(); process.exit(); } const noFiles = () => { console.log("\n"); console.log(colors.Bright + colors.FgRed, "Sorry!... No Files to Review", colors.Reset); // New Line console.log(); console.log(colors.Bright + colors.FgYellow, "----------------------------------------", colors.Reset); console.log(colors.Bright + colors.FgYellow, " Please stage your files ", colors.Reset); console.log(colors.Bright + colors.FgYellow, "----------------------------------------", colors.Reset); console.log(); process.exit(1); } module.exports = { welcome, success, noFiles, serverError, invalidLocation, invalidToken, helpMessage, commentsInfo, comments, configurationSuccess, configurationError }