From 00d5bc7c6e05641b648ae353bd11a4760b95db42 Mon Sep 17 00:00:00 2001 From: Viktor Varland Date: Thu, 7 Feb 2019 16:43:13 +0100 Subject: [PATCH] feat: add option to not stage formatted files --- src/cmds/js_cmds/apply.js | 20 +++++++++++++------- src/cmds/js_cmds/check.js | 8 +++----- src/config.js | 6 +++--- src/files.js | 5 ----- src/git.js | 6 ++---- src/prettier.js | 19 +++++++++++++++---- 6 files changed, 36 insertions(+), 28 deletions(-) diff --git a/src/cmds/js_cmds/apply.js b/src/cmds/js_cmds/apply.js index fef84e21..e6b814c9 100644 --- a/src/cmds/js_cmds/apply.js +++ b/src/cmds/js_cmds/apply.js @@ -1,8 +1,8 @@ -const { cwd, collectFiles, whitelisted } = require('../../files.js') +const { collectFiles, whitelisted } = require('../../files.js') const log = require('@dhis2/cli-helpers-engine').reporter const { apply_fmt } = require('../../prettier.js') -const { stage, staged } = require('../../git.js') +const { stage_files, staged_files } = require('../../git.js') const configure = require('../../config.js') @@ -12,24 +12,28 @@ exports.describe = 'Apply JS format.' exports.builder = { all: { + describe: + 'Default behaviour is to only format files staged with Git, use this option to format all files.', type: 'boolean', default: 'false', }, - staged: { + stage: { + describe: + 'By default the changed files are staged automatically, use `--no-stage` to avoid staging files automatically.', type: 'boolean', default: 'true', }, } exports.handler = argv => { - const { all } = argv + const { all, stage } = argv const root_dir = process.cwd() let codeFiles if (all) { codeFiles = collectFiles(root_dir).filter(whitelisted) } else { - codeFiles = staged(root_dir).filter(whitelisted) + codeFiles = staged_files(root_dir).filter(whitelisted) } // debug information about the folders @@ -44,6 +48,8 @@ exports.handler = argv => { configure(root_dir) - const stagedFiles = stage(prettyFiles, root_dir) - log.debug('Staged files', stagedFiles) + if (stage) { + const stagedFiles = stage_files(prettyFiles, root_dir) + log.debug('Staged files', stagedFiles) + } } diff --git a/src/cmds/js_cmds/check.js b/src/cmds/js_cmds/check.js index 7f252017..dc6571f3 100644 --- a/src/cmds/js_cmds/check.js +++ b/src/cmds/js_cmds/check.js @@ -1,4 +1,4 @@ -const { cwd, collectFiles, whitelisted } = require('../../files.js') +const { collectFiles, whitelisted } = require('../../files.js') const log = require('@dhis2/cli-helpers-engine').reporter const { check_fmt } = require('../../prettier.js') @@ -12,13 +12,11 @@ exports.describe = 'Check JS format.' exports.builder = { all: { + describe: + 'Default behaviour is to only format files staged with Git, use this option to format all files.', type: 'boolean', default: 'false', }, - staged: { - type: 'boolean', - default: 'true', - }, } exports.handler = argv => { diff --git a/src/config.js b/src/config.js index f352356d..45f737ec 100644 --- a/src/config.js +++ b/src/config.js @@ -3,7 +3,7 @@ const fs = require('fs') const log = require('@dhis2/cli-helpers-engine').reporter -const { cwd, readFile, writeFile } = require('./files.js') +const { readFile, writeFile } = require('./files.js') function wipe_prop_cfg(repo) { const pkg_path = path.join(repo, 'package.json') @@ -68,11 +68,11 @@ function configure(repo) { // then fun stuff const cfgs = [ [ - path.join(cwd(), 'config', 'prettier.config.js'), + path.join(__dirname, '..', 'config', 'prettier.config.js'), path.join(repo, '.prettierrc.js'), ], [ - path.join(cwd(), 'config', 'browserslist.config.rc'), + path.join(__dirname, '..', 'config', 'browserslist.config.rc'), path.join(repo, '.browserslistrc'), ], ].map(cfg => copy(cfg[0], cfg[1])) diff --git a/src/files.js b/src/files.js index 352c3080..6da65f71 100644 --- a/src/files.js +++ b/src/files.js @@ -47,14 +47,9 @@ function writeFile(fp, content) { } } -function cwd() { - return path.join(__dirname, '..') -} - module.exports = { collectFiles, readFile, writeFile, whitelisted, - cwd, } diff --git a/src/git.js b/src/git.js index c5c92f57..4956a2d3 100644 --- a/src/git.js +++ b/src/git.js @@ -6,7 +6,7 @@ const { execSync } = require('child_process') const log = require('@dhis2/cli-helpers-engine').reporter -function stage(files, dir) { +exports.stage_files = function stage_files(files, dir) { log.info(`Stage ${files.length} file(s).`) return files.map(file => { log.info(`Staging ${file}...`) @@ -19,7 +19,7 @@ function stage(files, dir) { }) } -function staged(dir) { +exports.staged_files = function staged_files(dir) { const files = execSync('git diff --cached --name-only', { cwd: dir, encoding: 'utf8', @@ -32,5 +32,3 @@ function staged(dir) { log.info('No staged files found.') return [] } - -module.exports = { stage, staged } diff --git a/src/prettier.js b/src/prettier.js index 9112ee40..ce3ed160 100644 --- a/src/prettier.js +++ b/src/prettier.js @@ -3,10 +3,16 @@ const path = require('path') const log = require('@dhis2/cli-helpers-engine').reporter -const { cwd, readFile, writeFile } = require('./files.js') +const { readFile, writeFile } = require('./files.js') exports.check_fmt = function check_prettier(files) { - const prettierConfig = path.join(cwd(), 'config', 'prettier.config.js') + const prettierConfig = path.join( + __dirname, + '..', + 'config', + 'prettier.config.js' + ) + log.debug('Prettier configuration file', prettierConfig) const not_pretty_files = [] for (const file of files) { @@ -44,8 +50,13 @@ exports.check_fmt = function check_prettier(files) { exports.apply_fmt = function apply_prettier(files) { // Prettier setup - const prettierConfig = path.join(cwd(), 'config', 'prettier.config.js') - log.debug('prettierConfig', prettierConfig) + const prettierConfig = path.join( + __dirname, + '..', + 'config', + 'prettier.config.js' + ) + log.debug('Prettier configuration file', prettierConfig) const pretty_files = [] for (const file of files) {