UNPKG

ember-codemod-v1-to-v2

Version:

Codemod to convert Ember addons to v2 addon format

45 lines (44 loc) 1.78 kB
import { readFileSync } from 'node:fs'; import { join } from 'node:path'; import { processTemplate } from '@codemod-utils/blueprints'; import { createFiles, findFiles } from '@codemod-utils/files'; import { blueprintsRoot } from '../utils/blueprints.js'; function getFilesToSkip(options) { const { packageManager, packages } = options; const files = new Set(); if (!packages.addon.hasTypeScript) { files.add('__addonLocation__/tsconfig.json'); files.add('__addonLocation__/unpublished-development-types/index.d.ts'); files.add('__testAppLocation__/tsconfig.json'); files.add('__testAppLocation__/types/global.d.ts'); } if (packageManager !== 'pnpm') { files.add('pnpm-workspace.yaml'); } return Array.from(files); } function resolveBlueprintFilePath(blueprintFilePath, options) { const { locations } = options; return blueprintFilePath .replace('__addonLocation__', locations.addon) .replace('__gitignore__', '.gitignore') .replace('__testAppLocation__', locations.testApp); } export function createFilesFromBlueprints(context, options) { const filesToSkip = getFilesToSkip(options); const cwd = join(blueprintsRoot, 'ember-addon'); const blueprintFilePaths = findFiles('**/*', { ignoreList: filesToSkip, projectRoot: cwd, }); const fileMap = new Map(blueprintFilePaths.map((blueprintFilePath) => { const filePath = resolveBlueprintFilePath(blueprintFilePath, options); const blueprintFile = readFileSync(join(cwd, blueprintFilePath), 'utf8'); const file = processTemplate(blueprintFile, { context, options, }); return [filePath, file]; })); createFiles(fileMap, options); }