11import { chain , Rule , SchematicContext , SchematicsException , Tree } from '@angular-devkit/schematics' ;
2- import { addPackageToPackageJson , getPackageVersionFromPackageJson } from './package-config' ;
3- import { Schema } from './schema' ;
4- import { scullyVersion , scullyComponentVersion } from './version-names' ;
52import { NodePackageInstallTask , RunSchematicTask } from '@angular-devkit/schematics/tasks' ;
6- import { getSourceFile , getSrc } from '../utils/utils ' ;
3+ import * as ts from '@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript ' ;
74import { addImportToModule , insertImport } from '@schematics/angular/utility/ast-utils' ;
85import { InsertChange } from '@schematics/angular/utility/change' ;
9- import * as ts from '@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript' ;
10-
6+ import { getSourceFile , getSrc } from '../utils/utils' ;
7+ import { addPackageToPackageJson , getPackageVersionFromPackageJson } from './package-config' ;
8+ import { Schema } from './schema' ;
9+ import { scullyComponentVersion , scullyVersion } from './version-names' ;
1110export default ( options : Schema ) : Rule => {
1211 return chain ( [
13- addDependencies ( ) ,
14- // importHttpClientModule(options.project),
15- // addHttpClientModule(options.project),
12+ checkAngularVersion ( ) ,
1613 importScullyModule ( options . project ) ,
1714 addScullyModule ( options . project ) ,
1815 addPolyfill ( options . project ) ,
19- // injectIdleService(options.project),
2016 runBlogSchematic ( options ) ,
2117 runScullySchematic ( options ) ,
18+ addDependencies ( ) ,
2219 ] ) ;
2320} ;
24- const addDependencies = ( ) => ( tree : Tree , context : SchematicContext ) => {
25- addPackageToPackageJson ( tree , '@scullyio/scully' , `${ scullyVersion } ` ) ;
21+ const checkAngularVersion = ( ) => ( tree : Tree , context : SchematicContext ) => {
2622 const ngCoreVersionTag = getPackageVersionFromPackageJson ( tree , '@angular/core' ) ;
2723 if ( + ngCoreVersionTag . search ( / ( \^ 7 | ~ 7 | \^ 6 | ~ 6 | \^ 5 | ~ 5 | \^ 4 | ~ 4 ) / g) === 0 ) {
2824 console . log ( '==============================================================' ) ;
@@ -33,6 +29,10 @@ const addDependencies = () => (tree: Tree, context: SchematicContext) => {
3329 console . log ( '==============================================================' ) ;
3430 process . exit ( 0 ) ;
3531 }
32+ } ;
33+ const addDependencies = ( ) => ( tree : Tree , context : SchematicContext ) => {
34+ addPackageToPackageJson ( tree , '@scullyio/scully' , `${ scullyVersion } ` ) ;
35+ const ngCoreVersionTag = getPackageVersionFromPackageJson ( tree , '@angular/core' ) ;
3636 if ( + ngCoreVersionTag . search ( / ( \^ 8 | ~ 8 ) / g) === 0 ) {
3737 context . logger . info ( 'Install ng-lib for Angular v8' ) ;
3838 addPackageToPackageJson ( tree , '@scullyio/ng-lib-v8' , `${ scullyComponentVersion } ` ) ;
@@ -42,53 +42,10 @@ const addDependencies = () => (tree: Tree, context: SchematicContext) => {
4242 }
4343 context . logger . info ( '✅️ Added dependency' ) ;
4444} ;
45- /*
46- const importHttpClientModule = (project: string) => (tree: Tree, context: SchematicContext) => {
47- try {
48- const mainFilePath = `./${getSrc(tree, project)}/app/app.module.ts`;
49- const recorder = tree.beginUpdate(mainFilePath);
50-
51- const mainFileSource = getSourceFile(tree, mainFilePath);
52- const importChange = insertImport(
53- mainFileSource,
54- mainFilePath,
55- 'HttpClientModule',
56- '@angular/common/http'
57- ) as InsertChange;
58- if (importChange.toAdd) {
59- recorder.insertLeft(importChange.pos, importChange.toAdd);
60- }
61- tree.commitUpdate(recorder);
62- return tree;
63- } catch (e) {
64- context.logger.error('error into import httpclient', e);
65- }
66- };
67-
68- const addHttpClientModule = (project: string) => (tree: Tree, context: SchematicContext) => {
69- const mainFilePath = `./${getSrc(tree, project)}/app/app.module.ts`;
70- const text = tree.read(mainFilePath);
71- if (text === null) {
72- throw new SchematicsException(`File ${mainFilePath} does not exist.`);
73- }
74- const sourceText = text.toString();
75- const source = ts.createSourceFile(mainFilePath, sourceText, ts.ScriptTarget.Latest, true);
76- const changes = addImportToModule(source, mainFilePath, 'HttpClientModule', '@angular/common/http');
77- const recorder = tree.beginUpdate(mainFilePath);
78- for (const change of changes) {
79- if (change instanceof InsertChange) {
80- recorder.insertLeft(change.pos, change.toAdd);
81- }
82- }
83- tree.commitUpdate(recorder);
84- return tree;
85- };
86- */
8745const importScullyModule = ( project : string ) => ( tree : Tree , context : SchematicContext ) => {
8846 try {
8947 const mainFilePath = `./${ getSrc ( tree , project ) } /app/app.module.ts` ;
9048 const recorder = tree . beginUpdate ( mainFilePath ) ;
91-
9249 const mainFileSource = getSourceFile ( tree , mainFilePath ) ;
9350 const importChange = insertImport (
9451 mainFileSource ,
@@ -105,7 +62,6 @@ const importScullyModule = (project: string) => (tree: Tree, context: SchematicC
10562 context . logger . error ( 'error into import SculyLib' , e ) ;
10663 }
10764} ;
108-
10965const addScullyModule = ( project : string ) => ( tree : Tree , context : SchematicContext ) => {
11066 const mainFilePath = `./${ getSrc ( tree , project ) } /app/app.module.ts` ;
11167 const text = tree . read ( mainFilePath ) ;
@@ -124,7 +80,6 @@ const addScullyModule = (project: string) => (tree: Tree, context: SchematicCont
12480 tree . commitUpdate ( recorder ) ;
12581 return tree ;
12682} ;
127-
12883const addPolyfill = ( project : string ) => ( tree : Tree , context : SchematicContext ) => {
12984 let polyfills = tree . read ( `${ getSrc ( tree , project ) } /polyfills.ts` ) . toString ( ) ;
13085 if ( polyfills . includes ( 'SCULLY IMPORTS' ) ) {
@@ -140,57 +95,6 @@ import 'zone.js/dist/task-tracking';`;
14095 tree . overwrite ( `${ getSrc ( tree , project ) } /polyfills.ts` , polyfills ) ;
14196 }
14297} ;
143-
144- // const injectIdleService = (project: string) => (tree: Tree, context: SchematicContext) => {
145- // try {
146- // const appComponentPath = `${getSrc(tree, project)}/app/app.component.ts`;
147- // const appComponent = tree.read(appComponentPath).toString();
148- // if (appComponent.includes('IdleMonitorService')) {
149- // context.logger.info(`⚠️️ Skipping ${appComponentPath}`);
150- // } else {
151- // const ngCoreVersionTag = getPackageVersionFromPackageJson(tree, '@angular/core');
152- // let v8 = '';
153- // if (+ngCoreVersionTag.search(/(\^8|~8)/g) === 0) {
154- // v8 = '-v8';
155- // }
156- // const idleImport = `import {IdleMonitorService} from '@scullyio/ng-lib${v8}';`;
157- // // add
158- // const idImport = `${idleImport}\n${appComponent}`;
159- // const idle = 'private idle: IdleMonitorService';
160- // let output = '';
161- // // check if exist
162- // if (idImport.search(/constructor/) === -1) {
163- // // add if no exist the constructor
164- // const add = ` \n constructor (${idle}) { } \n`;
165- // const position =
166- // idImport.search(/export class AppComponent {/g) + 'export class AppComponent {'.length;
167- // output = [idImport.slice(0, position), add, idImport.slice(position)].join('');
168- // } else {
169- // const coma = haveMoreInjects(idImport);
170- // const add = `${idle}${coma}`;
171- // if (idImport.search(/constructor \(/) === -1) {
172- // const position = idImport.search(/constructor\(/g) + 'constructor('.length;
173- // output = [idImport.slice(0, position), add, idImport.slice(position)].join('');
174- // } else {
175- // const position = idImport.search(/constructor \(/g) + 'constructor ('.length;
176- // output = [idImport.slice(0, position), add, idImport.slice(position)].join('');
177- // }
178- // }
179- // tree.overwrite(appComponentPath, output);
180- // }
181-
182- // function haveMoreInjects(fullComponent: string) {
183- // const match = '(([^()]*(private|public)[^()]*))';
184- // if (fullComponent.search(match) !== -1) {
185- // return ',';
186- // }
187- // return '';
188- // }
189- // } catch (e) {
190- // context.logger.error('error in idle service');
191- // }
192- // };
193-
19498const runBlogSchematic = ( options : Schema ) => ( tree : Tree , context : SchematicContext ) => {
19599 const nextRules : Rule [ ] = [ ] ;
196100 if ( options . blog === true ) {
@@ -200,7 +104,6 @@ const runBlogSchematic = (options: Schema) => (tree: Tree, context: SchematicCon
200104 }
201105 return chain ( nextRules ) ;
202106} ;
203-
204107const runScullySchematic = ( options : Schema ) => ( tree : Tree , context : SchematicContext ) => {
205108 const nextRules : Rule [ ] = [ ] ;
206109 nextRules . push ( ( host : Tree , ctx : SchematicContext ) => {
0 commit comments