Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
822 changes: 809 additions & 13 deletions package-lock.json

Large diffs are not rendered by default.

7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,10 @@
},
"homepage": "https://github.com/angular/angular-cli",
"dependencies": {
"@angular-devkit/build-optimizer": "~0.0.23",
"@angular-devkit/schematics": "~0.0.25",
"@schematics/angular": "~0.0.38",
"@angular-devkit/build-optimizer": "~0.0.26",
"@angular-devkit/core": "~0.0.18",
"@angular-devkit/schematics": "~0.0.31",
"@schematics/angular": "~0.0.42",
"autoprefixer": "^6.5.3",
"chalk": "^2.0.1",
"circular-dependency-plugin": "^3.0.0",
Expand Down
44 changes: 8 additions & 36 deletions packages/@angular/cli/commands/generate.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { cyan, yellow } from 'chalk';
const stringUtils = require('ember-cli-string-utils');
import { oneLine } from 'common-tags';
import { CliConfig } from '../models/config';

Expand All @@ -11,14 +10,11 @@ import {
} from '../utilities/schematics';
import { DynamicPathOptions, dynamicPathParser } from '../utilities/dynamic-path-parser';
import { getAppFromConfig } from '../utilities/app-utils';
import * as path from 'path';
import { SchematicAvailableOptions } from '../tasks/schematic-get-options';

const Command = require('../ember-cli/lib/models/command');
const SilentError = require('silent-error');

const separatorRegEx = /[\/\\]/g;


export default Command.extend({
name: 'generate',
Expand Down Expand Up @@ -77,16 +73,15 @@ export default Command.extend({

beforeRun: function(rawArgs: string[]) {

const isHelp = ['--help', '-h'].includes(rawArgs[0]);
const isHelp = ['--help', '-h'].indexOf(rawArgs[0]) != -1;
if (isHelp) {
return;
}

const schematicName = rawArgs[0];
if (!schematicName) {
return Promise.reject(new SilentError(oneLine`
The "ng generate" command requires a
schematic name to be specified.
The "ng generate" command requires a schematic name to be specified.
For more details, use "ng help".
`));
}
Expand Down Expand Up @@ -127,7 +122,6 @@ export default Command.extend({
}

const entityName = rawArgs[1];
commandOptions.name = stringUtils.dasherize(entityName.split(separatorRegEx).pop());

const appConfig = getAppFromConfig(commandOptions.app);
const dynamicPathOptions: DynamicPathOptions = {
Expand All @@ -137,34 +131,16 @@ export default Command.extend({
dryRun: commandOptions.dryRun
};
const parsedPath = dynamicPathParser(dynamicPathOptions);
commandOptions.sourceDir = appConfig.root;
const root = appConfig.root + path.sep;
commandOptions.appRoot = parsedPath.appRoot === appConfig.root ? '' :
parsedPath.appRoot.startsWith(root)
? parsedPath.appRoot.substr(root.length)
: parsedPath.appRoot;

commandOptions.path = parsedPath.dir.replace(separatorRegEx, '/');
commandOptions.path = parsedPath.dir === appConfig.root ? '' :
parsedPath.dir.startsWith(root)
? commandOptions.path.substr(root.length)
: commandOptions.path;

// Do not pass the schematics name itself, that's not useful.
commandOptions._ = rawArgs.slice(1);
commandOptions._angularCliConfig = (CliConfig.fromProject() || CliConfig.fromGlobal()).config;
commandOptions._angularCliAppConfig = appConfig;
commandOptions._angularCliParsedPath = parsedPath;

const cwd = this.project.root;
const schematicName = rawArgs[0];

if (['component', 'c', 'directive', 'd'].indexOf(schematicName) !== -1) {
if (commandOptions.prefix === undefined) {
commandOptions.prefix = appConfig.prefix;
}

if (schematicName === 'component' || schematicName === 'c') {
if (commandOptions.styleext === undefined) {
commandOptions.styleext = CliConfig.getValue('defaults.styleExt');
}
}
}

const SchematicRunTask = require('../tasks/schematic-run').default;
const schematicRunTask = new SchematicRunTask({
ui: this.ui,
Expand All @@ -173,10 +149,6 @@ export default Command.extend({
const collectionName = commandOptions.collection ||
CliConfig.getValue('defaults.schematics.collection');

if (collectionName === '@schematics/angular' && schematicName === 'interface' && rawArgs[2]) {
commandOptions.type = rawArgs[2];
}

return schematicRunTask.run({
taskOptions: commandOptions,
workingDir: cwd,
Expand Down
5 changes: 4 additions & 1 deletion packages/@angular/cli/commands/new.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@ const NewCommand = Command.extend({
},

run: function (commandOptions: any, rawArgs: string[]) {
commandOptions._ = [...rawArgs];
commandOptions._angularCliConfig = (CliConfig.fromProject() || CliConfig.fromGlobal()).config;

const packageName = rawArgs.shift();

if (!packageName) {
Expand All @@ -121,7 +124,7 @@ const NewCommand = Command.extend({
}

validateProjectName(packageName);
commandOptions.name = packageName;

if (commandOptions.dryRun) {
commandOptions.skipGit = true;
}
Expand Down
1 change: 1 addition & 0 deletions packages/@angular/cli/lib/cli/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Prevent the dependency validation from tripping because we don't import these. We need
// it as a peer dependency of @angular/core.
// require('zone.js')
// require('@angular-devkit/core')

import * as path from 'path';

Expand Down
7 changes: 4 additions & 3 deletions packages/@angular/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,12 @@
},
"homepage": "https://github.com/angular/angular-cli",
"dependencies": {
"@angular-devkit/build-optimizer": "~0.0.18",
"@angular-devkit/schematics": "~0.0.25",
"@angular-devkit/build-optimizer": "~0.0.26",
"@angular-devkit/core": "~0.0.18",
"@angular-devkit/schematics": "~0.0.31",
"@ngtools/json-schema": "1.1.0",
"@ngtools/webpack": "1.8.0-beta.4",
"@schematics/angular": "~0.0.38",
"@schematics/angular": "~0.0.42",
"autoprefixer": "^6.5.3",
"chalk": "^2.0.1",
"circular-dependency-plugin": "^3.0.0",
Expand Down
17 changes: 1 addition & 16 deletions packages/@angular/cli/tasks/init.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import * as chalk from 'chalk';
import LinkCli from '../tasks/link-cli';
import NpmInstall from '../tasks/npm-install';
import { validateProjectName } from '../utilities/validate-project-name';
import {checkYarnOrCNPM} from '../utilities/check-package-manager';
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');

Expand Down Expand Up @@ -48,23 +46,10 @@ export default Task.extend({
});
}

const project = this.project;
const packageName = commandOptions.name !== '.' && commandOptions.name || project.name();

if (commandOptions.style === undefined) {
commandOptions.style = CliConfig.fromGlobal().get('defaults.styleExt');
}

if (!packageName) {
const message = 'The `ng ' + this.name + '` command requires a ' +
'package.json in current folder with name attribute or a specified name via arguments. ' +
'For more details, use `ng help`.';

return Promise.reject(new SilentError(message));
}

validateProjectName(packageName);

const SchematicRunTask = require('../tasks/schematic-run').default;
const schematicRunTask = new SchematicRunTask({
ui: this.ui,
Expand Down Expand Up @@ -106,7 +91,7 @@ export default Task.extend({
})
.then(() => {
if (!commandOptions.dryRun) {
this.ui.writeLine(chalk.green(`Project '${packageName}' successfully created.`));
this.ui.writeLine(chalk.green(`Project '${commandOptions.name}' successfully created.`));
}
});
}
Expand Down
4 changes: 3 additions & 1 deletion packages/@angular/cli/tasks/schematic-get-options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ export default Task.extend({
case 'boolean':
type = Boolean;
break;
case undefined:
return null;
}
let aliases: string[] = [];
if (opt.alias) {
Expand All @@ -52,7 +54,7 @@ export default Task.extend({
type,
default: undefined // do not carry over schematics defaults
};
});
}).filter(x => x);

return Promise.resolve(availableOptions);
}
Expand Down
20 changes: 20 additions & 0 deletions packages/@ngtools/json-schema/src/schema-tree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,8 @@ export abstract class NonLeafSchemaTreeNode<T> extends SchemaTreeNode<T> {
case 'enum': Klass = EnumSchemaTreeNode; break;
case 'oneOf': Klass = OneOfSchemaTreeNode; break;

case undefined: Klass = AnySchemaTreeNode; break;

default:
throw new InvalidSchema('Type ' + type + ' not understood by SchemaClassFactory.');
}
Expand Down Expand Up @@ -452,6 +454,24 @@ export abstract class LeafSchemaTreeNode<T> extends SchemaTreeNode<T> {
}


class AnySchemaTreeNode extends LeafSchemaTreeNode<any> {
serialize(serializer: Serializer) {
switch (typeof this.value) {
case 'string': serializer.outputString(this); break;
case 'number': serializer.outputNumber(this); break;
case 'boolean': serializer.outputBoolean(this); break;

default: serializer.outputValue(this);
}
}

isCompatible(_: any) { return true; }
convert(v: any) { return v; }
get type() { return 'any'; }
get tsType(): null { return null; }
}


/** Basic primitives for JSON Schema. */
class StringSchemaTreeNode extends LeafSchemaTreeNode<string> {
serialize(serializer: Serializer) { serializer.outputString(this); }
Expand Down
2 changes: 1 addition & 1 deletion tests/collections/@custom/application/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ const s = require('@angular-devkit/schematics');

exports.default = function(options) {
return s.chain([s.mergeWith(s.apply(
s.url('./files'), [s.template({}), s.move(options.name)]))]);
s.url('./files'), [s.template({}), s.move(options.name || options._[0])]))]);
};
1 change: 1 addition & 0 deletions tests/collections/@custom/application/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"title": "Angular Bazel Workspace Options Schema",
"type": "object",
"properties": {
"_": {},
"name": {
"type": "string"
}
Expand Down