mirror of https://github.com/abpframework/abp.git
8 changed files with 102 additions and 1 deletions
@ -0,0 +1,20 @@ |
|||||
|
import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; |
||||
|
import { Tree, readProjectConfiguration } from '@nx/devkit'; |
||||
|
|
||||
|
import { changeThemeGenerator } from './generator'; |
||||
|
import { ChangeThemeGeneratorSchema } from './schema'; |
||||
|
|
||||
|
describe('change-theme generator', () => { |
||||
|
let tree: Tree; |
||||
|
const options: ChangeThemeGeneratorSchema = { name: 'test' }; |
||||
|
|
||||
|
beforeEach(() => { |
||||
|
tree = createTreeWithEmptyWorkspace(); |
||||
|
}); |
||||
|
|
||||
|
it('should run successfully', async () => { |
||||
|
await changeThemeGenerator(tree, options); |
||||
|
const config = readProjectConfiguration(tree, 'test'); |
||||
|
expect(config).toBeDefined(); |
||||
|
}); |
||||
|
}); |
||||
@ -0,0 +1,22 @@ |
|||||
|
import { Tree } from '@nx/devkit'; |
||||
|
import { wrapAngularDevkitSchematic } from '@nx/devkit/ngcli-adapter'; |
||||
|
import { ChangeThemeGeneratorSchema } from './schema'; |
||||
|
import { ThemeOptionsEnum } from './theme-options.enum'; |
||||
|
|
||||
|
export async function changeThemeGenerator(host: Tree, schema: ChangeThemeGeneratorSchema) { |
||||
|
const runAngularLibrarySchematic = wrapAngularDevkitSchematic( |
||||
|
'@abp/ng.schematics', |
||||
|
'change-theme', |
||||
|
); |
||||
|
|
||||
|
await runAngularLibrarySchematic(host, { |
||||
|
...schema, |
||||
|
}); |
||||
|
|
||||
|
return () => { |
||||
|
const destTheme = Object.values(ThemeOptionsEnum).find((t, i) => i + 1 === schema.name); |
||||
|
console.log(`✅️ theme changed to ${destTheme}`); |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
export default changeThemeGenerator; |
||||
@ -0,0 +1,3 @@ |
|||||
|
export * from './theme-options.enum'; |
||||
|
export * from './schema'; |
||||
|
export * from './generator'; |
||||
@ -0,0 +1,4 @@ |
|||||
|
export interface ChangeThemeGeneratorSchema { |
||||
|
name: number; |
||||
|
targetOption: string; |
||||
|
} |
||||
@ -0,0 +1,37 @@ |
|||||
|
{ |
||||
|
"$schema": "http://json-schema.org/schema", |
||||
|
"$id": "SchematicsABPThemeChanger", |
||||
|
"title": "ABP Theme Style Generator API Schema", |
||||
|
"type": "object", |
||||
|
"properties": { |
||||
|
"name": { |
||||
|
"description": "The name of theme will change.", |
||||
|
"type": "number", |
||||
|
"$default": { |
||||
|
"$source": "argv", |
||||
|
"index": 0 |
||||
|
}, |
||||
|
"enum": [1, 2, 3, 4], |
||||
|
"x-prompt": { |
||||
|
"message": "Which theme would you like to use?", |
||||
|
"type": "list", |
||||
|
"items": [ |
||||
|
{ "value": 1, "label": "Basic" }, |
||||
|
{ "value": 2, "label": "Lepton" }, |
||||
|
{ "value": 3, "label": "LeptonXLite" }, |
||||
|
{ "value": 4, "label": "LeptonX" } |
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
"targetProject": { |
||||
|
"description": "The name of the project will change the style.The project type must be 'application'", |
||||
|
"type": "string", |
||||
|
"x-prompt": "Please enter the project name", |
||||
|
"$default": { |
||||
|
"$source": "argv", |
||||
|
"index": 1 |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"required": ["name", "targetProject"] |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
// this enum create by https://raw.githubusercontent.com/abpframework/abp/rel-7.4/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs
|
||||
|
|
||||
|
export enum ThemeOptionsEnum { |
||||
|
Basic = 1, |
||||
|
Lepton = 2, |
||||
|
LeptonXLite = 3, |
||||
|
LeptonX = 4, |
||||
|
} |
||||
@ -1 +1,3 @@ |
|||||
export * from './generators/generate-proxy' |
export * from './generators/change-theme'; |
||||
|
export * from './generators/generate-proxy'; |
||||
|
export * from './generators/update-version'; |
||||
|
|||||
Loading…
Reference in new issue