mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-12 03:01:16 +00:00
feat(codegen): add demo slots & add new cli option solutionOptions
This commit is contained in:
parent
1ca940c880
commit
2bd40d7589
@ -14,6 +14,7 @@ program
|
|||||||
.option('-c, --cwd <cwd>', 'specify the working directory', '.')
|
.option('-c, --cwd <cwd>', 'specify the working directory', '.')
|
||||||
.option('-q, --quiet', 'be quiet, do not output anything unless get error', false)
|
.option('-q, --quiet', 'be quiet, do not output anything unless get error', false)
|
||||||
.option('-v, --verbose', 'be verbose, output more information', false)
|
.option('-v, --verbose', 'be verbose, output more information', false)
|
||||||
|
.option('--solution-options <options>', 'specify the solution options', '{}')
|
||||||
.arguments('[input-schema] ali lowcode schema JSON file')
|
.arguments('[input-schema] ali lowcode schema JSON file')
|
||||||
.action(function doGenerate(inputSchema, command) {
|
.action(function doGenerate(inputSchema, command) {
|
||||||
var options = command.opts();
|
var options = command.opts();
|
||||||
|
|||||||
@ -25,6 +25,7 @@ export async function run(
|
|||||||
output?: string;
|
output?: string;
|
||||||
quiet?: boolean;
|
quiet?: boolean;
|
||||||
verbose?: boolean;
|
verbose?: boolean;
|
||||||
|
solutionOptions?: string;
|
||||||
},
|
},
|
||||||
): Promise<number> {
|
): Promise<number> {
|
||||||
try {
|
try {
|
||||||
@ -41,6 +42,19 @@ export async function run(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let solutionOptions = {};
|
||||||
|
|
||||||
|
if (options.solutionOptions) {
|
||||||
|
try {
|
||||||
|
solutionOptions = JSON.parse(options.solutionOptions);
|
||||||
|
} catch (err: any) {
|
||||||
|
throw new Error(
|
||||||
|
`solution options parse error, error message is "${err.message}"`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 读取 Schema
|
// 读取 Schema
|
||||||
const schema = await loadSchemaFile(schemaFile);
|
const schema = await loadSchemaFile(schemaFile);
|
||||||
|
|
||||||
@ -48,7 +62,7 @@ export async function run(
|
|||||||
const createProjectBuilder = await getProjectBuilderFactory(options.solution, {
|
const createProjectBuilder = await getProjectBuilderFactory(options.solution, {
|
||||||
quiet: options.quiet,
|
quiet: options.quiet,
|
||||||
});
|
});
|
||||||
const builder = createProjectBuilder();
|
const builder = createProjectBuilder(solutionOptions);
|
||||||
|
|
||||||
// 生成代码
|
// 生成代码
|
||||||
const generatedSourceCodes = await builder.generateProject(schema);
|
const generatedSourceCodes = await builder.generateProject(schema);
|
||||||
@ -75,7 +89,7 @@ export async function run(
|
|||||||
async function getProjectBuilderFactory(
|
async function getProjectBuilderFactory(
|
||||||
solution: string,
|
solution: string,
|
||||||
{ quiet }: { quiet?: boolean },
|
{ quiet }: { quiet?: boolean },
|
||||||
): Promise<() => IProjectBuilder> {
|
): Promise<(options: {[prop: string]: any}) => IProjectBuilder> {
|
||||||
if (solution in CodeGenerator.solutions) {
|
if (solution in CodeGenerator.solutions) {
|
||||||
return CodeGenerator.solutions[solution as 'icejs' | 'rax'];
|
return CodeGenerator.solutions[solution as 'icejs' | 'rax'];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -241,6 +241,15 @@ export class ProjectBuilder implements IProjectBuilder {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// demo
|
||||||
|
if (parseResult.project && builders.demo) {
|
||||||
|
const { files } = await builders.demo.generateModule(parseResult.project);
|
||||||
|
buildResult.push({
|
||||||
|
path: this.template.slots.demo.path,
|
||||||
|
files,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: 更多 slots 的处理??是不是可以考虑把 template 中所有的 slots 都处理下?
|
// TODO: 更多 slots 的处理??是不是可以考虑把 template 中所有的 slots 都处理下?
|
||||||
|
|
||||||
// Post Process
|
// Post Process
|
||||||
|
|||||||
@ -25,6 +25,7 @@ export enum FileType {
|
|||||||
TS = 'ts',
|
TS = 'ts',
|
||||||
TSX = 'tsx',
|
TSX = 'tsx',
|
||||||
JSON = 'json',
|
JSON = 'json',
|
||||||
|
MD = 'md',
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum ChunkType {
|
export enum ChunkType {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user