ember-codemod-pod-to-octane
Version:
Codemod to un-pod Ember apps, addons, and engines
53 lines (52 loc) • 1.78 kB
JavaScript
import { findFiles, parseFilePath } from '@codemod-utils/files';
import { renamePodPath } from '../../../../../utils/files/index.js';
function getFileName(filePath) {
const { name } = parseFilePath(filePath);
return name;
}
export function mapRoutes(options) {
const { projectRoot } = options;
const podDir = 'addon';
const filePathsForController = findFiles(`${podDir}/**/controller.{js,ts}`, {
projectRoot,
});
const filePathsForRoute = findFiles(`${podDir}/**/route.{js,ts}`, {
projectRoot,
});
const filePathsForStylesheet = findFiles(`${podDir}/**/styles.{css,scss}`, {
ignoreList: ['addon/components/**'],
projectRoot,
});
const filePathsForTemplate = findFiles(`${podDir}/**/template.hbs`, {
ignoreList: ['addon/components/**'],
projectRoot,
});
return [
...filePathsForController,
...filePathsForRoute,
...filePathsForStylesheet,
...filePathsForTemplate,
].map((oldFilePath) => {
const fileName = getFileName(oldFilePath);
const newFilePath = renamePodPath(oldFilePath, {
podDir,
replace: (dir) => {
switch (fileName) {
case 'controller': {
return `addon/controllers/${dir}`;
}
case 'route': {
return `addon/routes/${dir}`;
}
case 'styles': {
return `addon/styles/${dir}`;
}
case 'template': {
return `addon/templates/${dir}`;
}
}
},
});
return [oldFilePath, newFilePath];
});
}