Skip to content

Instantly share code, notes, and snippets.

expect(tree.readContent("/projects/bar/src/app/test/test.ts"))
.toContain(
"export class Test {\n" +
"\n" +
"}"
);
import {getWorkspace} from '@schematics/angular/utility/config';
import {buildDefaultPath} from '@schematics/angular/utility/project';
import {parseName} from '@schematics/angular/utility/parse-name';
import {Tree} from '@angular-devkit/schematics';
export function setupOptions(host: Tree, options: any): Tree {
const workspace = getWorkspace(host);
if (!options.project) {
options.project = Object.keys(workspace.projects)[0];
}
const movePath = (options.flat) ?
normalize(options.path) :
normalize(options.path + '/' + strings.dasherize(options.name));
const templateSource = apply(url('./files'), [
options.spec ? noop() : filter(path => !path.endsWith('.spec.ts')),
template({
...strings,
...options,
}),
move(movePath),
]);
const rule = mergeWith(templateSource, MergeStrategy.Default);
export function simpleSchematic(options: any): Rule {
return (tree: Tree, _context: SchematicContext) => {
setupOptions(tree, options);
const movePath = (options.flat) ?
normalize(options.path) :
normalize(options.path + '/' + strings.dasherize(options.name));
const templateSource = apply(url('./files'), [
options.spec ? noop() : filter(path => !path.endsWith('.spec.ts')),
{
"$schema": "http://json-schema.org/schema",
"id": "simpleSchema",
"title": "Creates a simple schematic.",
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "The name of the project.",
"$default": {
{
"$schema": "../node_modules/@angular-devkit/schematics/collection-schema.json",
"schematics": {
"simple-schematic": {
"description": "A basic schematic.",
"factory": "./simple-schematic/index#simpleSchematic",
"schema": "./simple-schematic/schema.json"
}
}
}