Skip to content

Commit 5b0af09

Browse files
committed
revert: "refactor: move all CLI-specific exceptions to different options (angular#7981)"
This reverts commit ae47b46.
1 parent ae47b46 commit 5b0af09

11 files changed

Lines changed: 74 additions & 856 deletions

File tree

package-lock.json

Lines changed: 13 additions & 809 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,9 @@
4141
},
4242
"homepage": "https://github.com/angular/angular-cli",
4343
"dependencies": {
44-
"@angular-devkit/build-optimizer": "~0.0.26",
45-
"@angular-devkit/core": "~0.0.18",
46-
"@angular-devkit/schematics": "~0.0.31",
47-
"@schematics/angular": "~0.0.42",
44+
"@angular-devkit/build-optimizer": "~0.0.23",
45+
"@angular-devkit/schematics": "~0.0.25",
46+
"@schematics/angular": "~0.0.38",
4847
"autoprefixer": "^6.5.3",
4948
"chalk": "^2.0.1",
5049
"circular-dependency-plugin": "^3.0.0",

packages/@angular/cli/commands/generate.ts

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { cyan, yellow } from 'chalk';
2+
const stringUtils = require('ember-cli-string-utils');
23
import { oneLine } from 'common-tags';
34
import { CliConfig } from '../models/config';
45

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

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

20+
const separatorRegEx = /[\/\\]/g;
21+
1822

1923
export default Command.extend({
2024
name: 'generate',
@@ -73,15 +77,16 @@ export default Command.extend({
7377

7478
beforeRun: function(rawArgs: string[]) {
7579

76-
const isHelp = ['--help', '-h'].indexOf(rawArgs[0]) != -1;
80+
const isHelp = ['--help', '-h'].includes(rawArgs[0]);
7781
if (isHelp) {
7882
return;
7983
}
8084

8185
const schematicName = rawArgs[0];
8286
if (!schematicName) {
8387
return Promise.reject(new SilentError(oneLine`
84-
The "ng generate" command requires a schematic name to be specified.
88+
The "ng generate" command requires a
89+
schematic name to be specified.
8590
For more details, use "ng help".
8691
`));
8792
}
@@ -122,6 +127,7 @@ export default Command.extend({
122127
}
123128

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

126132
const appConfig = getAppFromConfig(commandOptions.app);
127133
const dynamicPathOptions: DynamicPathOptions = {
@@ -131,16 +137,34 @@ export default Command.extend({
131137
dryRun: commandOptions.dryRun
132138
};
133139
const parsedPath = dynamicPathParser(dynamicPathOptions);
134-
135-
// Do not pass the schematics name itself, that's not useful.
136-
commandOptions._ = rawArgs.slice(1);
137-
commandOptions._angularCliConfig = (CliConfig.fromProject() || CliConfig.fromGlobal()).config;
138-
commandOptions._angularCliAppConfig = appConfig;
139-
commandOptions._angularCliParsedPath = parsedPath;
140+
commandOptions.sourceDir = appConfig.root;
141+
const root = appConfig.root + path.sep;
142+
commandOptions.appRoot = parsedPath.appRoot === appConfig.root ? '' :
143+
parsedPath.appRoot.startsWith(root)
144+
? parsedPath.appRoot.substr(root.length)
145+
: parsedPath.appRoot;
146+
147+
commandOptions.path = parsedPath.dir.replace(separatorRegEx, '/');
148+
commandOptions.path = parsedPath.dir === appConfig.root ? '' :
149+
parsedPath.dir.startsWith(root)
150+
? commandOptions.path.substr(root.length)
151+
: commandOptions.path;
140152

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

156+
if (['component', 'c', 'directive', 'd'].indexOf(schematicName) !== -1) {
157+
if (commandOptions.prefix === undefined) {
158+
commandOptions.prefix = appConfig.prefix;
159+
}
160+
161+
if (schematicName === 'component' || schematicName === 'c') {
162+
if (commandOptions.styleext === undefined) {
163+
commandOptions.styleext = CliConfig.getValue('defaults.styleExt');
164+
}
165+
}
166+
}
167+
144168
const SchematicRunTask = require('../tasks/schematic-run').default;
145169
const schematicRunTask = new SchematicRunTask({
146170
ui: this.ui,
@@ -149,6 +173,10 @@ export default Command.extend({
149173
const collectionName = commandOptions.collection ||
150174
CliConfig.getValue('defaults.schematics.collection');
151175

176+
if (collectionName === '@schematics/angular' && schematicName === 'interface' && rawArgs[2]) {
177+
commandOptions.type = rawArgs[2];
178+
}
179+
152180
return schematicRunTask.run({
153181
taskOptions: commandOptions,
154182
workingDir: cwd,

packages/@angular/cli/commands/new.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,6 @@ const NewCommand = Command.extend({
111111
},
112112

113113
run: function (commandOptions: any, rawArgs: string[]) {
114-
commandOptions._ = [...rawArgs];
115-
commandOptions._angularCliConfig = (CliConfig.fromProject() || CliConfig.fromGlobal()).config;
116-
117114
const packageName = rawArgs.shift();
118115

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

126123
validateProjectName(packageName);
127-
124+
commandOptions.name = packageName;
128125
if (commandOptions.dryRun) {
129126
commandOptions.skipGit = true;
130127
}

packages/@angular/cli/lib/cli/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Prevent the dependency validation from tripping because we don't import these. We need
22
// it as a peer dependency of @angular/core.
33
// require('zone.js')
4-
// require('@angular-devkit/core')
54

65
import * as path from 'path';
76

packages/@angular/cli/package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,11 @@
2727
},
2828
"homepage": "https://github.com/angular/angular-cli",
2929
"dependencies": {
30-
"@angular-devkit/build-optimizer": "~0.0.26",
31-
"@angular-devkit/core": "~0.0.18",
32-
"@angular-devkit/schematics": "~0.0.31",
30+
"@angular-devkit/build-optimizer": "~0.0.18",
31+
"@angular-devkit/schematics": "~0.0.25",
3332
"@ngtools/json-schema": "1.1.0",
3433
"@ngtools/webpack": "1.8.0-beta.4",
35-
"@schematics/angular": "~0.0.42",
34+
"@schematics/angular": "~0.0.38",
3635
"autoprefixer": "^6.5.3",
3736
"chalk": "^2.0.1",
3837
"circular-dependency-plugin": "^3.0.0",

packages/@angular/cli/tasks/init.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import * as chalk from 'chalk';
22
import LinkCli from '../tasks/link-cli';
33
import NpmInstall from '../tasks/npm-install';
4+
import { validateProjectName } from '../utilities/validate-project-name';
45
import {checkYarnOrCNPM} from '../utilities/check-package-manager';
56
import {CliConfig} from '../models/config';
67

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

@@ -46,10 +48,23 @@ export default Task.extend({
4648
});
4749
}
4850

51+
const project = this.project;
52+
const packageName = commandOptions.name !== '.' && commandOptions.name || project.name();
53+
4954
if (commandOptions.style === undefined) {
5055
commandOptions.style = CliConfig.fromGlobal().get('defaults.styleExt');
5156
}
5257

58+
if (!packageName) {
59+
const message = 'The `ng ' + this.name + '` command requires a ' +
60+
'package.json in current folder with name attribute or a specified name via arguments. ' +
61+
'For more details, use `ng help`.';
62+
63+
return Promise.reject(new SilentError(message));
64+
}
65+
66+
validateProjectName(packageName);
67+
5368
const SchematicRunTask = require('../tasks/schematic-run').default;
5469
const schematicRunTask = new SchematicRunTask({
5570
ui: this.ui,
@@ -91,7 +106,7 @@ export default Task.extend({
91106
})
92107
.then(() => {
93108
if (!commandOptions.dryRun) {
94-
this.ui.writeLine(chalk.green(`Project '${commandOptions.name}' successfully created.`));
109+
this.ui.writeLine(chalk.green(`Project '${packageName}' successfully created.`));
95110
}
96111
});
97112
}

packages/@angular/cli/tasks/schematic-get-options.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ export default Task.extend({
3737
case 'boolean':
3838
type = Boolean;
3939
break;
40-
case undefined:
41-
return null;
4240
}
4341
let aliases: string[] = [];
4442
if (opt.alias) {
@@ -54,7 +52,7 @@ export default Task.extend({
5452
type,
5553
default: undefined // do not carry over schematics defaults
5654
};
57-
}).filter(x => x);
55+
});
5856

5957
return Promise.resolve(availableOptions);
6058
}

packages/@ngtools/json-schema/src/schema-tree.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,6 @@ export abstract class NonLeafSchemaTreeNode<T> extends SchemaTreeNode<T> {
168168
case 'enum': Klass = EnumSchemaTreeNode; break;
169169
case 'oneOf': Klass = OneOfSchemaTreeNode; break;
170170

171-
case undefined: Klass = AnySchemaTreeNode; break;
172-
173171
default:
174172
throw new InvalidSchema('Type ' + type + ' not understood by SchemaClassFactory.');
175173
}
@@ -454,24 +452,6 @@ export abstract class LeafSchemaTreeNode<T> extends SchemaTreeNode<T> {
454452
}
455453

456454

457-
class AnySchemaTreeNode extends LeafSchemaTreeNode<any> {
458-
serialize(serializer: Serializer) {
459-
switch (typeof this.value) {
460-
case 'string': serializer.outputString(this); break;
461-
case 'number': serializer.outputNumber(this); break;
462-
case 'boolean': serializer.outputBoolean(this); break;
463-
464-
default: serializer.outputValue(this);
465-
}
466-
}
467-
468-
isCompatible(_: any) { return true; }
469-
convert(v: any) { return v; }
470-
get type() { return 'any'; }
471-
get tsType(): null { return null; }
472-
}
473-
474-
475455
/** Basic primitives for JSON Schema. */
476456
class StringSchemaTreeNode extends LeafSchemaTreeNode<string> {
477457
serialize(serializer: Serializer) { serializer.outputString(this); }

tests/collections/@custom/application/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ const s = require('@angular-devkit/schematics');
22

33
exports.default = function(options) {
44
return s.chain([s.mergeWith(s.apply(
5-
s.url('./files'), [s.template({}), s.move(options.name || options._[0])]))]);
5+
s.url('./files'), [s.template({}), s.move(options.name)]))]);
66
};

0 commit comments

Comments
 (0)