ember-modules-codemod
ember-modules-codemod copied to clipboard
Intelligent list of paths.
By default (e.g. no customized arguments) the codemod should process the following directories:
- If in an addon (determined by
keywordsinpackage.json):addon,addon-test-support, andtests
- If in an app:
appandtests
- Both addon and app types should process any
require('./package)['ember-addon'].paths
The codemod should also allow an explicit path to be specified on the command line. When specified on the command line, the default paths (described above) should not be processed and only the specific path provided in the first arg should be processed.
@Turbo87 - You 👍 on the general plan laid out above?
in general I'm 👍
I'm just not sure what the require() stuff is for 🤔
Haha, I was just too lazy to write it out manually. For the auto-detect bit, this is basically what I'm proposing:
const ADDON_PATHS = ['addon', 'addon-test-support', 'tests'];
const APP_PATHS = ['app', 'tests'];
let paths;
let package = JSON.parse(fs.readFileSync('package.json'));
if (package.keywords && package.keywords.indexOf('ember-addon') > -1) {
// addon
paths = ADDON_PATHS.slice();
} else {
// app
paths = APP_PATHS.slice();
}
if (package['ember-addon'] && package['ember-addon'].paths) {
package['ember-addon'].paths).filter(Boolean);
package['ember-addon'].paths.forEach(inRepoAddonBasePath => {
ADDON_PATHS.forEach(addonFolderName => {
let fullPath = path.join(inRepoAddonBasePath, addonFolderName);
paths.push(fullPath);
});
});
}
aka. in-repo-addons, right?
c
currently we auto-process all of lib which isn't guaranteed to be an addon at all (e.g. many addons use lib for node-land code also)
Is this still needed?