UNPKG

@git.zone/cli

Version:

A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.

59 lines (51 loc) 1.76 kB
import * as plugins from './mod.plugins.js'; import prettier from 'prettier'; import { Project } from '../classes.project.js'; import { logger } from '../gitzone.logging.js'; const prettierDefaultTypeScriptConfig: prettier.Options = { printWidth: 100, parser: 'typescript', singleQuote: true, }; const prettierDefaultMarkdownConfig: prettier.Options = { singleQuote: true, printWidth: 100, parser: 'markdown', }; const filesToFormat = [`ts/**/*.ts`, `test/**/*.ts`, `readme.md`, `docs/**/*.md`]; const choosePrettierConfig = (fileArg: plugins.smartfile.SmartFile) => { switch (fileArg.parsedPath.ext) { case '.ts': return prettierDefaultTypeScriptConfig; case '.md': return prettierDefaultMarkdownConfig; default: return {}; } }; const prettierTypeScriptPipestop = plugins.through2.obj( async (fileArg: plugins.smartfile.SmartFile, enc, cb) => { const fileString = fileArg.contentBuffer.toString(); const chosenConfig = choosePrettierConfig(fileArg); const filePasses = await prettier.check(fileString, chosenConfig); if (filePasses) { logger.log('info', `OK! -> ${fileArg.path} passes!`); cb(null); } else { logger.log('info', `${fileArg.path} is being reformated!`); const formatedFileString = await prettier.format(fileString, chosenConfig); fileArg.setContentsFromString(formatedFileString); cb(null, fileArg); } }, ); export const run = async (projectArg: Project) => { const formatStreamWrapper = new plugins.smartstream.StreamWrapper([ plugins.smartgulp.src(filesToFormat), prettierTypeScriptPipestop, plugins.smartgulp.replace(), ]); await formatStreamWrapper.run().catch((error) => { console.log(error); }); };