Skip to content

Commit

Permalink
Add setting to only use custom templates
Browse files Browse the repository at this point in the history
  • Loading branch information
deniszholob committed Jul 27, 2024
1 parent 43123ec commit 7dd4a26
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 44 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
### Added
- Support for custom template types
- util, model, enum templates/menu options
- Setting for only using the custom templates
### Changed
- Storybook template: Update types for latest SB and add some argType common boilerplate
- Component template: Add style display:contents as a comment
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@ If you find the extension or the source code useful, consider:
In `.vscode/settings.json` add in the following settings to customize the extension.

* `customTemplateFolder` - Custom template folder location. Path relative you your workspace root. If empty will use extension default templates.
* `useOnlyCustomTemplates` - Generate code only from custom templates folder. No build in defaults are used.
* `generateSpec` - Spec (Test) files can be written using basic class declarations (more performant) or using the angular test bed (More features). If unit testing, basic test structure should do fine. Can also disable tests as well.
* 0: Diabled
* 0: Disabled
* 1: Simple
* 2: TestBed
* `generateStories` - Storybook 6 and earlier use [Component Story Format](https://storybook.js.org/blog/storybook-csf3-is-here/) 2, Storybook 7 uses CSF 3. Can disable stories as well.
Expand All @@ -43,6 +44,7 @@ In `.vscode/settings.json` add in the following settings to customize the extens
Using the json file
```json
"angular-files-generator.customTemplateFolder": ".vscode/ngfg-templates",
"angular-files-generator.useOnlyCustomTemplates": false,
"angular-files-generator.generateSpec": 1,
"angular-files-generator.generateStories": 3,
```
Expand Down
5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@
"type": "string",
"description": "Custom template folder location. Path relative you your workspace root. If empty; will use extension default templates."
},
"angular-files-generator.useOnlyCustomTemplates": {
"type": "boolean",
"description": "Generate code only from custom templates folder. No build in defaults are used.",
"default": false
},
"angular-files-generator.generateSpec": {
"type": "integer",
"default": 1,
Expand Down
Binary file modified screenshots/angular-files-generator-settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
93 changes: 50 additions & 43 deletions src/generator/generate-files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
getSetting_customTemplateFolder,
getSetting_generateSpec,
getSetting_generateStories,
getSetting_useOnlyCustomTemplates,
} from '../settings';
import {
getCustomTemplateDir,
Expand Down Expand Up @@ -105,54 +106,60 @@ async function getRenderTemplates(
extensionSrcDir: string,
templateType: TemplateType
): Promise<TemplateFile[]> {
let defaultTemplateFiles: TemplateFile[] = await getTemplateFilesAndOverride(
[],
getExtensionTemplateDir(extensionSrcDir, TEMPLATES_FOLDERS.STANDARD)
);
let defaultTemplateFiles: TemplateFile[] = [];

// Defaults to basic tests, if 2, replace with TestBed templates
const templateSpec: number | undefined = getSetting_generateSpec();
if (templateSpec === 2) {
defaultTemplateFiles = await getTemplateFilesAndOverride(
defaultTemplateFiles,
getExtensionTemplateDir(
extensionSrcDir,
TEMPLATES_FOLDERS.SUB_SPEC_TEST_BED
)
);
}
const useDefaultTemplates: boolean = !getSetting_useOnlyCustomTemplates();

// Defaults to CSF v3, if 2 replace with CSF v2 templates
const templateStories: number | undefined = getSetting_generateStories();
if (templateStories === 2) {
if (useDefaultTemplates) {
defaultTemplateFiles = await getTemplateFilesAndOverride(
defaultTemplateFiles,
getExtensionTemplateDir(
extensionSrcDir,
TEMPLATES_FOLDERS.SUB_STORIES_CSF_V2
)
[],
getExtensionTemplateDir(extensionSrcDir, TEMPLATES_FOLDERS.STANDARD)
);
}

// Standalone component template
if (templateType === 'standalone_component') {
defaultTemplateFiles = await getTemplateFilesAndOverride(
defaultTemplateFiles,
getExtensionTemplateDir(
extensionSrcDir,
TEMPLATES_FOLDERS.SUB_COMPONENT_STANDALONE
)
);
}
// Module component template
else if (templateType === 'module_component') {
defaultTemplateFiles = await getTemplateFilesAndOverride(
defaultTemplateFiles,
getExtensionTemplateDir(
extensionSrcDir,
TEMPLATES_FOLDERS.SUB_COMPONENT_MODULE
)
);
// Defaults to basic tests, if 2, replace with TestBed templates
const templateSpec: number | undefined = getSetting_generateSpec();
if (templateSpec === 2) {
defaultTemplateFiles = await getTemplateFilesAndOverride(
defaultTemplateFiles,
getExtensionTemplateDir(
extensionSrcDir,
TEMPLATES_FOLDERS.SUB_SPEC_TEST_BED
)
);
}

// Defaults to CSF v3, if 2 replace with CSF v2 templates
const templateStories: number | undefined = getSetting_generateStories();
if (templateStories === 2) {
defaultTemplateFiles = await getTemplateFilesAndOverride(
defaultTemplateFiles,
getExtensionTemplateDir(
extensionSrcDir,
TEMPLATES_FOLDERS.SUB_STORIES_CSF_V2
)
);
}

// Standalone component template
if (templateType === 'standalone_component') {
defaultTemplateFiles = await getTemplateFilesAndOverride(
defaultTemplateFiles,
getExtensionTemplateDir(
extensionSrcDir,
TEMPLATES_FOLDERS.SUB_COMPONENT_STANDALONE
)
);
}
// Module component template
else if (templateType === 'module_component') {
defaultTemplateFiles = await getTemplateFilesAndOverride(
defaultTemplateFiles,
getExtensionTemplateDir(
extensionSrcDir,
TEMPLATES_FOLDERS.SUB_COMPONENT_MODULE
)
);
}
}

// User templates always override
Expand Down
3 changes: 3 additions & 0 deletions src/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ import * as vscode from 'vscode';
export const getSetting_customTemplateFolder = () =>
getExtensionSetting<string | null | undefined>('customTemplateFolder');

export const getSetting_useOnlyCustomTemplates = () =>
getExtensionSetting<boolean | undefined>('useOnlyCustomTemplates');

export const getSetting_generateSpec = () =>
getExtensionSetting<number | undefined>('generateSpec');

Expand Down

0 comments on commit 7dd4a26

Please sign in to comment.