Skip to content

Commit 4a62f62

Browse files
authored
Add new features and bump versions (#190)
1 parent c75ce9f commit 4a62f62

File tree

218 files changed

+2022
-1342
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

218 files changed

+2022
-1342
lines changed

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,7 @@
1010
*.yml text eol=lf
1111
*.scss text eol=lf
1212
*.vue text eol=lf
13+
*.ts text eol=lf
14+
*.html text eol=lf
1315

1416
*.png binary

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"packages": [
33
"packages/*"
44
],
5-
"version": "1.1.13"
5+
"version": "1.2.0"
66
}

package-lock.json

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

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "devextreme-cli-monorepo",
3-
"version": "1.1.10",
3+
"version": "1.2.0",
44
"scripts": {
55
"test": "lerna run --stream test",
66
"test-dev": "lerna run --stream test-dev",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
/templates
1+
/src/templates
22
/testing/sandbox

packages/devextreme-cli/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ const args = require('minimist')(process.argv.slice(2), {
44
});
55
const commands = args['_'];
66
delete args['_'];
7-
const themeBuilder = require('./commands/themebuider');
8-
const application = require('./commands/application');
9-
const devextremeConfig = require('./utility/devextreme-config');
10-
const printHelp = require('./commands/help').printHelp;
7+
const themeBuilder = require('./src/themebuider');
8+
const application = require('./src/application');
9+
const devextremeConfig = require('./src/utility/devextreme-config');
10+
const printHelp = require('./src/help').printHelp;
1111
const packageJson = require('./package.json');
12-
const lock = require('./utility/file-lock');
12+
const lock = require('./src/utility/file-lock');
1313

1414
lock.release();
1515

packages/devextreme-cli/package-lock.json

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/devextreme-cli/package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "devextreme-cli",
3-
"version": "1.1.13",
3+
"version": "1.2.0",
44
"description": "DevExtreme CLI",
55
"keywords": [
66
"devexpress",
@@ -14,9 +14,7 @@
1414
"devextreme": "index.js"
1515
},
1616
"files": [
17-
"commands/**/*",
18-
"templates/**/*",
19-
"utility/**/*",
17+
"src/**/*",
2018
"index.js"
2119
],
2220
"scripts": {
@@ -31,6 +29,7 @@
3129
"license": "MIT",
3230
"dependencies": {
3331
"@vue/cli": "^3.5.5",
32+
"@yarnpkg/lockfile": "^1.1.0",
3433
"dart-sass": "^1.25.0",
3534
"ip": "^1.1.5",
3635
"less": "3.9.0",

packages/devextreme-cli/commands/application.js renamed to packages/devextreme-cli/src/application.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
const angularApplication = require('./application.angular');
2-
const reactApplication = require('./application.react');
3-
const vueApplication = require('./application.vue');
1+
const angularApplication = require('./applications/application.angular');
2+
const reactApplication = require('./applications/application.react');
3+
const vueApplication = require('./applications/application.vue');
44
const printHelp = require('./help').printHelp;
55

66
const isApplicationCommand = (command) => {

packages/devextreme-cli/commands/application.angular.js renamed to packages/devextreme-cli/src/applications/application.angular.js

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,39 @@
1+
const getLayoutInfo = require('../layout').getLayoutInfo;
12
const path = require('path');
23
const runCommand = require('../utility/run-command');
34
const semver = require('semver').SemVer;
45
const fs = require('fs');
56
const exec = require('child_process').exec;
67
const minNgCliVersion = new semver('8.0.0');
8+
const latestVersions = require('../utility/latest-versions');
9+
const schematicsVersion = latestVersions['devextreme-schematics'] || 'latest';
710

8-
function runSchematicCommand(schematicCommand, options, evaluatingOptions) {
11+
async function runSchematicCommand(schematicCommand, options, evaluatingOptions) {
912
const collectionName = 'devextreme-schematics';
10-
let collectionPath = collectionName;
13+
let collectionPath = `${collectionName}@${schematicsVersion}`;
1114

1215
if(options['c']) {
1316
collectionPath = `${path.join(process.cwd(), options['c'])}`;
1417
delete options['c'];
1518
}
1619

17-
const additionalOptions = [];
20+
if(!localPackageExists(collectionName)) {
21+
await runNgCommand(['add', collectionPath], evaluatingOptions);
22+
}
23+
24+
const commandArguments = ['g', `${collectionName}:${schematicCommand}`];
1825
for(let option in options) {
19-
const schematicOption = `--${option}=${options[option]}`;
20-
additionalOptions.push(schematicOption);
26+
commandArguments.push(`--${option}=${options[option]}`);
2127
};
2228

29+
runNgCommand(commandArguments, evaluatingOptions);
30+
}
2331

24-
let commandArguments = [
25-
'ng', 'g', `${collectionName}:${schematicCommand}`
26-
].concat(additionalOptions);
32+
async function runNgCommand(commandArguments, evaluatingOptions) {
33+
const ngCommandArguments = await hasSutableNgCli() ? [] : ['-p', '@angular/cli'];
2734

28-
optimizeNgCommandArguments(commandArguments).then((optimizedArguments) => {
29-
if(!localPackageExists(collectionPath)) {
30-
runCommand('npm', ['install', collectionPath], evaluatingOptions).then(() => {
31-
runCommand('npx', optimizedArguments, evaluatingOptions);
32-
});
33-
} else {
34-
runCommand('npx', optimizedArguments, evaluatingOptions);
35-
}
36-
});
35+
ngCommandArguments.push('ng', ...commandArguments);
36+
return runCommand('npx', ngCommandArguments, evaluatingOptions);
3737
}
3838

3939
function localPackageExists(packageName) {
@@ -46,18 +46,12 @@ function localPackageExists(packageName) {
4646
return fs.existsSync(packageJsonPath);
4747
}
4848

49-
function optimizeNgCommandArguments(args) {
50-
return new Promise((resolve, reject) => {
51-
hasSutableNgCli().then(() => resolve(args), () => resolve(['-p', '@angular/cli', ...args]));
52-
});
53-
}
54-
5549
function hasSutableNgCli() {
5650
return new Promise((resolve, reject) => {
5751
exec('ng v', (err, stdout, stderr) => {
5852
stderr || parseNgCliVersion(stdout).compare(minNgCliVersion) < 0
59-
? reject()
60-
: resolve();
53+
? resolve(false)
54+
: resolve(true);
6155
});
6256
});
6357
}
@@ -71,11 +65,13 @@ const install = (options) => {
7165
};
7266

7367
const create = (appName, options) => {
74-
let commandArguments = ['ng', 'new', appName, '--style=scss', '--routing=false', '--skip-install=true', '--skip-tests=true'];
75-
optimizeNgCommandArguments(commandArguments).then((optimizedArguments) => {
76-
runCommand('npx', optimizedArguments).then(() => {
68+
const commandArguments = ['new', appName, '--style=scss', '--routing=false', '--skip-tests=true', '--skip-install=true'];
69+
70+
getLayoutInfo(options.layout).then(layoutInfo => {
71+
runNgCommand(commandArguments).then(() => {
7772
options.resolveConflicts = 'override';
7873
options.updateBudgets = true;
74+
options.layout = layoutInfo.layout;
7975
addTemplate(appName, options, {
8076
cwd: path.join(process.cwd(), appName)
8177
});

0 commit comments

Comments
 (0)