UNPKG

@saiforceone/dirt-cli

Version:

Official CLI Utility for the D.I.R.T stack

44 lines 1.78 kB
import { $ } from 'execa'; import { createRequire } from 'module'; import { access, cp as copy } from 'node:fs/promises'; import constants from 'node:constants'; import path from 'node:path'; import { platform } from 'node:os'; import { standardOutputBuilder } from './utils/standardOutputBuilder.js'; const require = createRequire(import.meta.url); const prettierPkg = require('../configs/prettierDependencies.json'); import { PRETTIER_TEMPLATE_PATH } from './constants/feConstants.js'; import { normalizeWinFilePath } from './utils/fileUtils.js'; import { FILE_COPY_OPTS } from './constants/index.js'; /** * @description Helper function that sets up prettier. Copies over prettier config file and installs dependencies * @param destination */ export async function setupPrettier(destination) { const output = standardOutputBuilder(); try { // get the source const currentFilePath = import.meta.url; let prettierTemplateBase = path.resolve(new URL(currentFilePath).pathname, PRETTIER_TEMPLATE_PATH); if (platform() === 'win32') { prettierTemplateBase = normalizeWinFilePath(prettierTemplateBase); } await access(destination, constants.W_OK); // copy the file to destination await copy(prettierTemplateBase, destination, FILE_COPY_OPTS); const { packages } = prettierPkg; const pkgList = Object.keys(packages) .map((pkg) => `${pkg}@${packages[pkg]}`) .join(' '); // install prettier await $ `npm i ${pkgList}`; output.success = true; output.result = 'Prettier installed...'; return output; } catch (e) { output.error = e.message; return output; } } //# sourceMappingURL=setupPrettier.js.map