quasqui
Version:
The meta-framework suite designed from scratch for frontend-focused modern web development.
68 lines (58 loc) • 1.94 kB
text/typescript
import { GeneratorContext, GeneratorCore } from '@modern-js/codesmith';
import { AppAPI } from '@modern-js/codesmith-api-app';
import { Language } from '@modern-js/generator-common';
import { isTsProject } from '@modern-js/generator-utils';
const handleTemplateFile = async (
context: GeneratorContext,
appApi: AppAPI,
) => {
const appDir = context.materials.default.basePath;
const language = isTsProject(appDir) ? Language.TS : Language.JS;
const {
onlyApp = false,
dirs = [],
appExtend = '@modern-js-app',
extend = '@modern-js',
} = context.config.eslintConfig || {};
for (const dir of dirs) {
if (!onlyApp && language === Language.TS) {
await appApi.forgeTemplate(
'templates/ts-template/**/*',
undefined,
resourceKey =>
resourceKey
.replace('templates/ts-template/', `${dir}/`)
.replace('.handlebars', ``),
{
extends: extend,
},
);
} else {
appApi.forgeTemplate(
'templates/js-template/**/*',
undefined,
resourceKey =>
resourceKey
.replace('templates/js-template/', `${dir}/`)
.replace('.handlebars', ``),
{
extends: appExtend,
},
);
}
}
};
export default async (context: GeneratorContext, generator: GeneratorCore) => {
const appApi = new AppAPI(context, generator);
const { locale } = context.config;
appApi.i18n.changeLanguage({ locale });
if (!(await appApi.checkEnvironment())) {
// eslint-disable-next-line no-process-exit
process.exit(1);
}
generator.logger.debug(`start run @modern-js/eslint-generator`);
generator.logger.debug(`context=${JSON.stringify(context)}`);
generator.logger.debug(`context.data=${JSON.stringify(context.data)}`);
await handleTemplateFile(context, appApi);
generator.logger.debug(`forge @modern-js/eslint-generator succeed `);
};