Skip to content

Commit

Permalink
feat(@angular/cli): use schematic tasks for application init
Browse files Browse the repository at this point in the history
  • Loading branch information
clydin committed Feb 8, 2018
1 parent 1ce4db6 commit 39e1636
Show file tree
Hide file tree
Showing 9 changed files with 56 additions and 225 deletions.
10 changes: 5 additions & 5 deletions package.json
Expand Up @@ -41,11 +41,11 @@
},
"homepage": "https://github.com/angular/angular-cli",
"dependencies": {
"@angular-devkit/build-optimizer": "0.2.0",
"@angular-devkit/core": "0.2.0",
"@angular-devkit/schematics": "0.2.0",
"@schematics/angular": "0.2.0",
"@schematics/package-update": "0.2.0",
"@angular-devkit/build-optimizer": "0.3.1",
"@angular-devkit/core": "0.3.1",
"@angular-devkit/schematics": "0.3.1",
"@schematics/angular": "0.3.1",
"@schematics/package-update": "0.3.1",
"autoprefixer": "^7.2.3",
"cache-loader": "^1.2.0",
"chalk": "~2.2.0",
Expand Down
22 changes: 0 additions & 22 deletions packages/@angular/cli/commands/new.ts
Expand Up @@ -36,28 +36,6 @@ const NewCommand = Command.extend({
aliases: ['v'],
description: 'Adds more details to output logging.'
},
{
name: 'link-cli',
type: Boolean,
default: false,
aliases: ['lc'],
description: 'Automatically link the `@angular/cli` package.',
hidden: true
},
{
name: 'skip-install',
type: Boolean,
default: false,
aliases: ['si'],
description: 'Skip installing packages.'
},
{
name: 'skip-commit',
type: Boolean,
default: false,
aliases: ['sc'],
description: 'Skip committing the first commit to git.'
},
{
name: 'collection',
type: String,
Expand Down
10 changes: 5 additions & 5 deletions packages/@angular/cli/package.json
Expand Up @@ -27,13 +27,13 @@
},
"homepage": "https://github.com/angular/angular-cli",
"dependencies": {
"@angular-devkit/build-optimizer": "0.2.0",
"@angular-devkit/core": "0.2.0",
"@angular-devkit/schematics": "0.2.0",
"@angular-devkit/build-optimizer": "0.3.1",
"@angular-devkit/core": "0.3.1",
"@angular-devkit/schematics": "0.3.1",
"@ngtools/json-schema": "1.1.0",
"@ngtools/webpack": "1.10.0-beta.3",
"@schematics/angular": "0.2.0",
"@schematics/package-update": "0.2.0",
"@schematics/angular": "0.3.1",
"@schematics/package-update": "0.3.1",
"autoprefixer": "^7.2.3",
"cache-loader": "^1.2.0",
"chalk": "~2.2.0",
Expand Down
73 changes: 0 additions & 73 deletions packages/@angular/cli/tasks/git-init.ts

This file was deleted.

74 changes: 21 additions & 53 deletions packages/@angular/cli/tasks/init.ts
@@ -1,51 +1,21 @@
import chalk from 'chalk';
import LinkCli from '../tasks/link-cli';
import NpmInstall from '../tasks/npm-install';
import * as fs from 'fs';
import * as path from 'path';
import { checkYarnOrCNPM } from '../utilities/check-package-manager';
import { validateProjectName } from '../utilities/validate-project-name';
import {checkYarnOrCNPM} from '../utilities/check-package-manager';
import {CliConfig} from '../models/config';
import { CliConfig } from '../models/config';

const Task = require('../ember-cli/lib/models/task');
const SilentError = require('silent-error');
const GitInit = require('../tasks/git-init');
const packageJson = require('../package.json');


export default Task.extend({

run: function (commandOptions: any, rawArgs: string[]) {
run: function (commandOptions: any, _rawArgs: string[]) {
if (commandOptions.dryRun) {
commandOptions.skipInstall = true;
}

// needs an explicit check in case it's just 'undefined'
// due to passing of options from 'new' and 'addon'
let gitInit: any;
if (commandOptions.skipGit === false) {
gitInit = new GitInit({
ui: this.ui,
project: this.project
});
}

const packageManager = CliConfig.fromGlobal().get('packageManager');

let npmInstall: any;
if (!commandOptions.skipInstall) {
npmInstall = new NpmInstall({
ui: this.ui,
project: this.project,
packageManager
});
}

let linkCli: any;
if (commandOptions.linkCli) {
linkCli = new LinkCli({
ui: this.ui,
project: this.project,
packageManager
});
commandOptions.skipGit = true;
}

const project = this.project;
Expand Down Expand Up @@ -75,6 +45,18 @@ export default Task.extend({
const schematicName = CliConfig.fromGlobal().get('defaults.schematics.newApp');
commandOptions.version = packageJson.version;

if (!commandOptions.skipCommit) {
const commitMessage = fs.readFileSync(
path.join(__dirname, '../utilities/INITIAL_COMMIT_MESSAGE.txt'),
'utf-8',
);
commandOptions.commit = {
message: commitMessage,
name: process.env.GIT_AUTHOR_NAME || 'Angular CLI',
email: process.env.GIT_AUTHOR_EMAIL || 'angular-cli@angular.io',
};
}

const runOptions = {
taskOptions: commandOptions,
workingDir: cwd,
Expand All @@ -84,28 +66,14 @@ export default Task.extend({
};

return schematicRunTask.run(runOptions)
.then(function () {
if (!commandOptions.dryRun) {
process.chdir(commandOptions.directory);
}
})
.then(function () {
.then(() => {
if (!commandOptions.skipInstall) {
return checkYarnOrCNPM().then(() => npmInstall.run());
}
})
.then(function () {
if (!commandOptions.dryRun && commandOptions.skipGit === false) {
return gitInit.run(commandOptions, rawArgs);
}
})
.then(function () {
if (!commandOptions.dryRun && commandOptions.linkCli) {
return linkCli.run();
return checkYarnOrCNPM();
}
})
.then(() => {
if (!commandOptions.dryRun) {
process.chdir(commandOptions.directory);
this.ui.writeLine(chalk.green(`Project '${packageName}' successfully created.`));
}
});
Expand Down
26 changes: 0 additions & 26 deletions packages/@angular/cli/tasks/link-cli.ts

This file was deleted.

39 changes: 0 additions & 39 deletions packages/@angular/cli/tasks/npm-install.ts

This file was deleted.

3 changes: 2 additions & 1 deletion packages/@angular/cli/tasks/schematic-get-help-output.ts
Expand Up @@ -22,7 +22,8 @@ const hiddenOptions = [
'name',
'path',
'source-dir',
'app-root'
'app-root',
'link-cli',
];

export default Task.extend({
Expand Down
24 changes: 23 additions & 1 deletion packages/@angular/cli/tasks/schematic-run.ts
Expand Up @@ -7,13 +7,14 @@ import {
Schematic,
Tree
} from '@angular-devkit/schematics';
import { BuiltinTaskExecutor } from '@angular-devkit/schematics/tasks/node';
import { FileSystemHost } from '@angular-devkit/schematics/tools';
import { of as observableOf } from 'rxjs/observable/of';
import * as path from 'path';
import chalk from 'chalk';
import { CliConfig } from '../models/config';
import { concat, concatMap, ignoreElements, map } from 'rxjs/operators';
import { getCollection, getSchematic } from '../utilities/schematics';
import { getCollection, getSchematic, getEngineHost, getEngine } from '../utilities/schematics';

const { green, red, yellow } = chalk;
const Task = require('../ember-cli/lib/models/task');
Expand Down Expand Up @@ -48,6 +49,20 @@ export default Task.extend({

const ui = this.ui;

const packageManager = CliConfig.fromGlobal().get('packageManager');
const engineHost = getEngineHost();
engineHost.registerTaskExecutor(
BuiltinTaskExecutor.NodePackage,
{
rootDirectory: workingDir,
packageManager: packageManager === 'default' ? 'npm' : packageManager,
},
);
engineHost.registerTaskExecutor(
BuiltinTaskExecutor.RepositoryInitializer,
{ rootDirectory: workingDir },
);

const collection = getCollection(collectionName);
const schematic = getSchematic(collection, schematicName);

Expand Down Expand Up @@ -129,6 +144,13 @@ export default Task.extend({
return fsSink.commit(tree).pipe(
ignoreElements(),
concat(observableOf(tree)));
}),
concatMap(() => {
if (!opts.dryRun) {
return getEngine().executePostTasks();
} else {
return [];
}
}))
.subscribe({
error(err) {
Expand Down

0 comments on commit 39e1636

Please sign in to comment.