From 3abbc078735d05aa616b09cb48a1c40bc982487e Mon Sep 17 00:00:00 2001 From: Nicolas Beaussart Date: Thu, 6 Feb 2020 20:32:11 +0100 Subject: [PATCH] :recycle: move code around --- src/commands/add/prettier.ts | 10 +++++----- src/utls/base-add-command.ts | 11 ++++++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/commands/add/prettier.ts b/src/commands/add/prettier.ts index f63afba..497a1cd 100644 --- a/src/commands/add/prettier.ts +++ b/src/commands/add/prettier.ts @@ -16,14 +16,11 @@ export default class Prettier extends BaseAddCommand { }; async run() { - const packagePath = filesystem.path('.', 'package.json'); - - if (filesystem.exists(packagePath) !== 'file') { + if (!this.hasDirPackageJson()) { this.error('There is no package.json not found in the current folder'); } - const packageJson = filesystem.read(packagePath, 'json'); - if (packageJson.devDependencies.prettier) { + if (this.hasDevDependencyInPackageJson('prettier')) { this.error('Prettier is already installed in this project.'); } @@ -54,6 +51,7 @@ export default class Prettier extends BaseAddCommand { await this.addDevDependency('pretty-quick', shouldCommit); await this.runWithSpinner('Adding package.json scripts', async () => { + const packagePath = filesystem.path('.', 'package.json'); const packageJsonWithDeps = filesystem.read(packagePath, 'json'); const finalPackageJson = { ...packageJsonWithDeps, @@ -65,7 +63,9 @@ export default class Prettier extends BaseAddCommand { 'format:check': `prettier --list-different "${mask}"`, }, husky: { + ...packageJsonWithDeps.husky, hooks: { + ...packageJsonWithDeps?.husky?.hooks, 'pre-commit': 'pretty-quick --staged', }, }, diff --git a/src/utls/base-add-command.ts b/src/utls/base-add-command.ts index 0b7e6bb..b0f1b1b 100644 --- a/src/utls/base-add-command.ts +++ b/src/utls/base-add-command.ts @@ -1,7 +1,7 @@ import { BaseCommand } from './base-command'; import { add, commit, config as gitConfig, statusMatrix } from 'isomorphic-git'; import * as latestVersion from 'latest-version'; -import { system } from 'gluegun'; +import { filesystem, system } from 'gluegun'; export abstract class BaseAddCommand extends BaseCommand { static flags = { @@ -34,6 +34,15 @@ export abstract class BaseAddCommand extends BaseCommand { } } + hasDirPackageJson() { + return filesystem.isFile(filesystem.path('.', 'package.json')); + } + + hasDevDependencyInPackageJson(name: string): boolean { + const packageJson = filesystem.read('package.sjon', 'json'); + return Boolean(packageJson.devDependencies[name]); + } + async gitAddUnstaged() { const commitsPromice = (await statusMatrix({ dir: '.', pattern: '**' })) .filter(([_, head, workdir, stage]) => !(head === 1 && workdir === 1 && stage === 1))