Intelligent list of paths.
rwjblue opened this issue · comments
By default (e.g. no customized arguments) the codemod should process the following directories:
- If in an addon (determined by
keywords
inpackage.json
):addon
,addon-test-support
, andtests
- If in an app:
app
andtests
- 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?