@eui/cli 21.2.0-snapshot-1773276055260 → 21.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -2
- package/bin/eui-cli.js +9 -0
- package/bin/scripts/new.js +8 -0
- package/lib/cli.js +76 -0
- package/lib/generators.js +18 -0
- package/lib/skeletons/_angular/base/package.json +2 -2
- package/lib/skeletons/_angular/base-mobile/package.json +4 -4
- package/lib/skeletons/_angular/options/pnpm/package.json +7 -7
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -48,13 +48,40 @@ The CLI will prompt you to configure your application:
|
|
|
48
48
|
|
|
49
49
|
4. **Dependency Installation**: Choose whether to install dependencies automatically
|
|
50
50
|
5. **Package Manager**: Select Yarn 1.x or Pnpm (experimental)
|
|
51
|
+
6. **eui-skills Setup**: Optionally install [eui-skills](https://sdlc.webcloud.ec.europa.eu/csdr/eui-skills.git) after generation
|
|
52
|
+
- **Install all** (`--all`): install all skills to all agents without prompts
|
|
53
|
+
- Or configure individually:
|
|
54
|
+
- **Agent(s)**: target specific agents (e.g. `cursor`, `claude-code`, or `*` for all)
|
|
55
|
+
- **Skill(s)**: specific skill names to install (or `*` for all)
|
|
56
|
+
- **Global**: install at user-level instead of project-level
|
|
57
|
+
- **Skip confirmations**: auto-confirm all skills prompts
|
|
58
|
+
|
|
59
|
+
#### CLI Flags
|
|
60
|
+
|
|
61
|
+
Skip prompts by passing flags directly:
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
# Generate with skills setup (interactive sub-prompts)
|
|
65
|
+
eui-cli new --skills
|
|
66
|
+
|
|
67
|
+
# Install all skills to all agents without prompts
|
|
68
|
+
eui-cli new --skills --skillsAll
|
|
69
|
+
|
|
70
|
+
# Target specific agents and skip confirmations
|
|
71
|
+
eui-cli new --skills --skillsAgent "cursor claude-code" --skillsYes
|
|
72
|
+
|
|
73
|
+
# Install a specific skill globally
|
|
74
|
+
eui-cli new --skills --skillsSkill "pr-review" --skillsGlobal
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
> Skills sub-options (`--skillsAgent`, `--skillsSkill`, `--skillsGlobal`, `--skillsYes`, `--skillsAll`) require `--skills` to be set, otherwise the CLI will exit with an error.
|
|
51
78
|
|
|
52
79
|
#### Automated Mode
|
|
53
80
|
|
|
54
|
-
Generate an application without prompts using a configuration
|
|
81
|
+
Generate an application without prompts using a configuration string:
|
|
55
82
|
|
|
56
83
|
```sh
|
|
57
|
-
eui-cli new --config <
|
|
84
|
+
eui-cli new --config <config-string> --targetPath <output-directory>
|
|
58
85
|
```
|
|
59
86
|
|
|
60
87
|
Configuration format:
|
|
@@ -70,6 +97,12 @@ Available options:
|
|
|
70
97
|
- `appOptionsEclTheme`: `ecl-ec`, `ecl-eu`
|
|
71
98
|
- `npmInstall`: `true`, `false`
|
|
72
99
|
- `packageManager`: `yarn`, `pnpm`
|
|
100
|
+
- `skills`: `true`, `false`
|
|
101
|
+
- `skillsAll`: `true`, `false`
|
|
102
|
+
- `skillsAgent`: agent name(s), space-separated or `*`
|
|
103
|
+
- `skillsSkill`: skill name(s), space-separated or `*`
|
|
104
|
+
- `skillsGlobal`: `true`, `false`
|
|
105
|
+
- `skillsYes`: `true`, `false`
|
|
73
106
|
|
|
74
107
|
### Build application
|
|
75
108
|
|
package/bin/eui-cli.js
CHANGED
|
@@ -53,6 +53,15 @@ program
|
|
|
53
53
|
.description('Generate a new eUI application')
|
|
54
54
|
.option('-c, --config <path>', 'Path to configuration file')
|
|
55
55
|
.option('-t, --targetPath <path>', 'Target path for the generated application')
|
|
56
|
+
.option('--skills', 'Setup eui-skills after generation')
|
|
57
|
+
.option('--skillsAgent <agents>', 'Agents to install skills to, requires --skills (e.g. "claude-code cursor", or "*" for all)')
|
|
58
|
+
.option('--skillsSkill <skills>', 'Skill names to install, requires --skills (e.g. "pr-review commit", or "*" for all)')
|
|
59
|
+
.option('--skillsGlobal', 'Install skills globally instead of project-level, requires --skills')
|
|
60
|
+
.option('--skillsYes', 'Skip skills confirmation prompts, requires --skills')
|
|
61
|
+
.option('--skillsAll', 'Install all skills to all agents without prompts, requires --skills')
|
|
62
|
+
.addHelpText('after', `
|
|
63
|
+
Skills sub-options (require --skills):
|
|
64
|
+
--skillsAgent, --skillsSkill, --skillsGlobal, --skillsYes, --skillsAll`)
|
|
56
65
|
.action((options, command) => handleCommand('./scripts/new', options, command));
|
|
57
66
|
|
|
58
67
|
program
|
package/bin/scripts/new.js
CHANGED
|
@@ -11,6 +11,14 @@ module.exports = function run() {
|
|
|
11
11
|
utils.logBigTitle('eUI CLI');
|
|
12
12
|
utils.logAccent(` --- v${config.version} ---\n`);
|
|
13
13
|
|
|
14
|
+
// Validate skills sub-options dependency
|
|
15
|
+
const skillsSubOptions = ['skillsAgent', 'skillsSkill', 'skillsGlobal', 'skillsYes', 'skillsAll'];
|
|
16
|
+
const usedSkillsSubOptions = skillsSubOptions.filter(opt => args[opt] !== undefined && args[opt] !== false);
|
|
17
|
+
if (usedSkillsSubOptions.length > 0 && !args.skills) {
|
|
18
|
+
utils.logError(`The following options require --skills to be set: --${usedSkillsSubOptions.join(', --')}`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
|
|
14
22
|
// remapping config if passed as argument - automated mode
|
|
15
23
|
let inputConfig = config.parseInputConfig(args.config);
|
|
16
24
|
|
package/lib/cli.js
CHANGED
|
@@ -12,6 +12,12 @@ const defaultConfig = {
|
|
|
12
12
|
packageManager: 'yarn',
|
|
13
13
|
npmInstall: true,
|
|
14
14
|
appStart: true,
|
|
15
|
+
skills: false,
|
|
16
|
+
skillsAgent: null,
|
|
17
|
+
skillsSkill: null,
|
|
18
|
+
skillsGlobal: false,
|
|
19
|
+
skillsYes: false,
|
|
20
|
+
skillsAll: false,
|
|
15
21
|
};
|
|
16
22
|
|
|
17
23
|
module.exports.start = async (options) => {
|
|
@@ -143,6 +149,76 @@ module.exports.start = async (options) => {
|
|
|
143
149
|
answers.packageManager = await packageManagerPrompt.run();
|
|
144
150
|
}
|
|
145
151
|
|
|
152
|
+
const skillsPrompt = new Select({
|
|
153
|
+
name: 'skills',
|
|
154
|
+
message: 'Setup eui-skills for this project :',
|
|
155
|
+
choices: [
|
|
156
|
+
{ name: 'Yes', value: true },
|
|
157
|
+
{ name: 'No', value: false }
|
|
158
|
+
],
|
|
159
|
+
initial: 1,
|
|
160
|
+
result(name) {
|
|
161
|
+
return this.find(name).value;
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
answers.skills = await skillsPrompt.run();
|
|
165
|
+
|
|
166
|
+
if (answers.skills === true) {
|
|
167
|
+
const skillsAllPrompt = new Select({
|
|
168
|
+
name: 'skillsAll',
|
|
169
|
+
message: 'Install all skills to all agents without prompts :',
|
|
170
|
+
choices: [
|
|
171
|
+
{ name: 'Yes (--all)', value: true },
|
|
172
|
+
{ name: 'No, let me configure', value: false }
|
|
173
|
+
],
|
|
174
|
+
initial: 0,
|
|
175
|
+
result(name) { return this.find(name).value; }
|
|
176
|
+
});
|
|
177
|
+
answers.skillsAll = await skillsAllPrompt.run();
|
|
178
|
+
|
|
179
|
+
if (!answers.skillsAll) {
|
|
180
|
+
const skillsAgentPrompt = new Input({
|
|
181
|
+
name: 'skillsAgent',
|
|
182
|
+
message: 'Agents to install to (space-separated, * for all, leave empty for default) :',
|
|
183
|
+
initial: ''
|
|
184
|
+
});
|
|
185
|
+
const agentVal = await skillsAgentPrompt.run();
|
|
186
|
+
answers.skillsAgent = agentVal.trim() || null;
|
|
187
|
+
|
|
188
|
+
const skillsSkillPrompt = new Input({
|
|
189
|
+
name: 'skillsSkill',
|
|
190
|
+
message: 'Skill names to install (space-separated, * for all, leave empty for all) :',
|
|
191
|
+
initial: ''
|
|
192
|
+
});
|
|
193
|
+
const skillVal = await skillsSkillPrompt.run();
|
|
194
|
+
answers.skillsSkill = skillVal.trim() || null;
|
|
195
|
+
|
|
196
|
+
const skillsGlobalPrompt = new Select({
|
|
197
|
+
name: 'skillsGlobal',
|
|
198
|
+
message: 'Install skills globally (user-level) :',
|
|
199
|
+
choices: [
|
|
200
|
+
{ name: 'No', value: false },
|
|
201
|
+
{ name: 'Yes', value: true }
|
|
202
|
+
],
|
|
203
|
+
initial: 0,
|
|
204
|
+
result(name) { return this.find(name).value; }
|
|
205
|
+
});
|
|
206
|
+
answers.skillsGlobal = await skillsGlobalPrompt.run();
|
|
207
|
+
|
|
208
|
+
const skillsYesPrompt = new Select({
|
|
209
|
+
name: 'skillsYes',
|
|
210
|
+
message: 'Skip skills confirmation prompts :',
|
|
211
|
+
choices: [
|
|
212
|
+
{ name: 'Yes', value: true },
|
|
213
|
+
{ name: 'No', value: false }
|
|
214
|
+
],
|
|
215
|
+
initial: 0,
|
|
216
|
+
result(name) { return this.find(name).value; }
|
|
217
|
+
});
|
|
218
|
+
answers.skillsYes = await skillsYesPrompt.run();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
146
222
|
const outputConfig = {
|
|
147
223
|
...defaultConfig,
|
|
148
224
|
...answers
|
package/lib/generators.js
CHANGED
|
@@ -39,6 +39,24 @@ const appGenerate = (options) => {
|
|
|
39
39
|
config: cliConfig,
|
|
40
40
|
targetPath: options.targetPath,
|
|
41
41
|
});
|
|
42
|
+
// Setup eui-skills
|
|
43
|
+
// ----------------
|
|
44
|
+
if (cliConfig.skills) {
|
|
45
|
+
utils.logInfo('*****************************************************************');
|
|
46
|
+
utils.logInfo(' Setting up eui-skills...');
|
|
47
|
+
utils.logInfo('*****************************************************************');
|
|
48
|
+
const wd = path.resolve(utils.getAngularPath(options.targetPath, cliConfig.appName, cliConfig.appType, cliConfig.artifactId));
|
|
49
|
+
const skillsArgs = ['add', 'https://sdlc.webcloud.ec.europa.eu/csdr/eui-skills.git'];
|
|
50
|
+
if (cliConfig.skillsAll) {
|
|
51
|
+
skillsArgs.push('--all');
|
|
52
|
+
} else {
|
|
53
|
+
if (cliConfig.skillsAgent) skillsArgs.push('--agent', cliConfig.skillsAgent);
|
|
54
|
+
if (cliConfig.skillsSkill) skillsArgs.push('--skill', cliConfig.skillsSkill);
|
|
55
|
+
if (cliConfig.skillsGlobal) skillsArgs.push('--global');
|
|
56
|
+
if (cliConfig.skillsYes) skillsArgs.push('--yes');
|
|
57
|
+
}
|
|
58
|
+
execSync(`npx skills ${skillsArgs.join(' ')}`, { cwd: wd, stdio: 'inherit' });
|
|
59
|
+
}
|
|
42
60
|
// starting app
|
|
43
61
|
if (!cliConfig.appStart || typeof cliConfig.npmInstall !== 'boolean' || !cliConfig.npmInstall) {
|
|
44
62
|
return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eui-angular-app",
|
|
3
|
-
"version": "21.2.0
|
|
3
|
+
"version": "21.2.0",
|
|
4
4
|
"license": "EUPL-1.1",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"ng": "ng",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"private": true,
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@eui/deps-base": "21.2.0
|
|
23
|
+
"@eui/deps-base": "21.2.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"npm-run-all": "4.1.5",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eui-angular-app",
|
|
3
|
-
"version": "21.2.0
|
|
3
|
+
"version": "21.2.0",
|
|
4
4
|
"license": "EUPL-1.1",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"ng": "ng",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
},
|
|
21
21
|
"private": true,
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@eui/deps-base-next": "19.3.
|
|
24
|
-
"@eui/mobile-core": "20.0.
|
|
25
|
-
"@eui/mobile-styles": "20.0.
|
|
23
|
+
"@eui/deps-base-next": "19.3.13",
|
|
24
|
+
"@eui/mobile-core": "20.0.1",
|
|
25
|
+
"@eui/mobile-styles": "20.0.1"
|
|
26
26
|
},
|
|
27
27
|
"resolutions": {
|
|
28
28
|
"js-yaml": ">=3.13.1",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eui-angular-app",
|
|
3
|
-
"version": "21.2.0
|
|
3
|
+
"version": "21.2.0",
|
|
4
4
|
"license": "EUPL-1.1",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"ng": "ng",
|
|
@@ -46,17 +46,17 @@
|
|
|
46
46
|
"pikaday": "1.8.2",
|
|
47
47
|
"lodash-es": "4.17.23",
|
|
48
48
|
"localforage": "1.10.0",
|
|
49
|
-
"@eui/base": "21.2.0
|
|
50
|
-
"@eui/core": "21.2.0
|
|
51
|
-
"@eui/styles": "21.2.0
|
|
52
|
-
"@eui/components": "21.2.0
|
|
53
|
-
"@eui/ecl": "21.2.0
|
|
49
|
+
"@eui/base": "21.2.0",
|
|
50
|
+
"@eui/core": "21.2.0",
|
|
51
|
+
"@eui/styles": "21.2.0",
|
|
52
|
+
"@eui/components": "21.2.0",
|
|
53
|
+
"@eui/ecl": "21.2.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@angular/build": "21.2.1",
|
|
57
57
|
"@angular/compiler-cli": "21.2.1",
|
|
58
58
|
"@angular/cli": "21.2.1",
|
|
59
|
-
"@eui/cli": "21.2.0
|
|
59
|
+
"@eui/cli": "21.2.0",
|
|
60
60
|
"ng-packagr": "21.2.0",
|
|
61
61
|
"typescript": "5.9.2",
|
|
62
62
|
"npm-run-all": "4.1.5",
|