@sap-ux/generator-adp 0.9.40 → 0.9.41
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/generators/app/index.js +8 -4
- package/generators/app/questions/configuration.d.ts +56 -0
- package/generators/app/questions/configuration.js +146 -29
- package/generators/app/questions/helper/additional-messages.js +2 -2
- package/generators/app/types.d.ts +7 -0
- package/generators/app/types.js +2 -0
- package/generators/translations/generator-adp.i18n.json +5 -4
- package/package.json +3 -3
package/generators/app/index.js
CHANGED
|
@@ -227,11 +227,12 @@ class default_1 extends yeoman_generator_1.default {
|
|
|
227
227
|
}
|
|
228
228
|
else {
|
|
229
229
|
const isExtensibilityExtInstalled = (0, fiori_generator_shared_1.isExtensionInstalled)(this.vscode, 'SAP.vscode-bas-extensibility');
|
|
230
|
-
const isInternalUsage = (0, feature_toggle_1.isInternalFeaturesSettingEnabled)();
|
|
231
230
|
const configQuestions = this.prompter.getPrompts({
|
|
232
231
|
projectType: {
|
|
233
|
-
default:
|
|
232
|
+
default: axios_extension_1.AdaptationProjectType.CLOUD_READY
|
|
234
233
|
},
|
|
234
|
+
projectTypeCli: { hide: !this.isCli },
|
|
235
|
+
projectTypeClassicLabel: { hide: this.isCli },
|
|
235
236
|
appValidationCli: { hide: !this.isCli },
|
|
236
237
|
systemValidationCli: { hide: !this.isCli },
|
|
237
238
|
shouldCreateExtProject: { isExtensibilityExtInstalled }
|
|
@@ -603,13 +604,16 @@ class default_1 extends yeoman_generator_1.default {
|
|
|
603
604
|
const supportedProject = await (0, adp_tooling_1.getSupportedProject)(this.abapProvider);
|
|
604
605
|
let selectedProjectType = axios_extension_1.AdaptationProjectType.ON_PREMISE;
|
|
605
606
|
if (supportedProject === adp_tooling_1.SupportedProject.CLOUD_READY_AND_ON_PREM) {
|
|
606
|
-
|
|
607
|
+
const isInternalUsage = (0, feature_toggle_1.isInternalFeaturesSettingEnabled)();
|
|
608
|
+
selectedProjectType = isInternalUsage
|
|
609
|
+
? axios_extension_1.AdaptationProjectType.ON_PREMISE
|
|
610
|
+
: (projectType ?? axios_extension_1.AdaptationProjectType.CLOUD_READY);
|
|
607
611
|
}
|
|
608
612
|
else if (supportedProject === adp_tooling_1.SupportedProject.CLOUD_READY) {
|
|
609
613
|
selectedProjectType = axios_extension_1.AdaptationProjectType.CLOUD_READY;
|
|
610
614
|
}
|
|
611
615
|
this.projectType = selectedProjectType;
|
|
612
|
-
const applications = await (0, adp_tooling_1.loadApps)(this.abapProvider, this.isCustomerBase,
|
|
616
|
+
const applications = await (0, adp_tooling_1.loadApps)(this.abapProvider, this.isCustomerBase, supportedProject);
|
|
613
617
|
this.telemetryCollector.setBatch({ numberOfApplications: applications.length });
|
|
614
618
|
const application = applications.find((application) => application.id === baseApplicationName);
|
|
615
619
|
if (!application) {
|
|
@@ -14,6 +14,7 @@ export declare class ConfigPrompter {
|
|
|
14
14
|
private readonly systemLookup;
|
|
15
15
|
private readonly logger;
|
|
16
16
|
private readonly telemetryCollector;
|
|
17
|
+
private readonly CLOUD_DEV_ADP_STATUS_RELEASED;
|
|
17
18
|
/**
|
|
18
19
|
* Indicates if the current layer is based on a customer base.
|
|
19
20
|
*/
|
|
@@ -205,6 +206,21 @@ export declare class ConfigPrompter {
|
|
|
205
206
|
* @returns {ListQuestion<ConfigAnswers>} The project type prompt configuration.
|
|
206
207
|
*/
|
|
207
208
|
private getProjectTypeListPrompt;
|
|
209
|
+
/**
|
|
210
|
+
* Prompt with `when` hook only, which runs the project type propmt validation in a CLI context only.
|
|
211
|
+
* This overcomes yeoman limitation for prompts of type `list` for which the validation hook is not
|
|
212
|
+
* triggered by design in a CLI context.
|
|
213
|
+
*
|
|
214
|
+
* @returns {YUIQuestion} The project type for cli prompt configuration.
|
|
215
|
+
*/
|
|
216
|
+
private getProjectTypeListPromptForCli;
|
|
217
|
+
/**
|
|
218
|
+
* Creates a label for the project type `classic`.
|
|
219
|
+
*
|
|
220
|
+
* @param {ProjectTypeClassicLabelPromptOptions} options - The project type `classic` label options.
|
|
221
|
+
* @returns {InputQuestion<ConfigAnswers>} The project type `classic` label configurations.
|
|
222
|
+
*/
|
|
223
|
+
private getProjectTypeClassicLabelPrompt;
|
|
208
224
|
/**
|
|
209
225
|
* Creates the application list prompt configuration.
|
|
210
226
|
*
|
|
@@ -311,6 +327,14 @@ export declare class ConfigPrompter {
|
|
|
311
327
|
* @returns {void} Returns when validation is complete.
|
|
312
328
|
*/
|
|
313
329
|
private validateManifest;
|
|
330
|
+
/**
|
|
331
|
+
* Validates the project type prompt.
|
|
332
|
+
*
|
|
333
|
+
* @param {AdaptationProjectType} projectType - The selected project type.
|
|
334
|
+
* @param {SourceApplication} application - The selected application.
|
|
335
|
+
* @returns {Promise<string|boolean>} A promise that resolves to true if valid, or an error message string if validation fails.
|
|
336
|
+
*/
|
|
337
|
+
private validateProjectTypePrompt;
|
|
314
338
|
/**
|
|
315
339
|
* Sets the support flags for given application.
|
|
316
340
|
*
|
|
@@ -320,5 +344,37 @@ export declare class ConfigPrompter {
|
|
|
320
344
|
* @returns {void} Returns when flags are set.
|
|
321
345
|
*/
|
|
322
346
|
private setSupportFlags;
|
|
347
|
+
/**
|
|
348
|
+
* Checks if the application is a released app on a mixed system that requires
|
|
349
|
+
* explicit project type selection by the user.
|
|
350
|
+
*
|
|
351
|
+
* @param {SourceApplication} application - The selected application.
|
|
352
|
+
* @returns {boolean} True if the application is released on a mixed system.
|
|
353
|
+
*/
|
|
354
|
+
private isReleasedAppOnMixedSystem;
|
|
355
|
+
/**
|
|
356
|
+
* Checks if the application is a classic (non-released) app on a mixed system
|
|
357
|
+
* that should default to on-premise project type.
|
|
358
|
+
*
|
|
359
|
+
* @param {SourceApplication} application - The selected application.
|
|
360
|
+
* @returns {boolean} True if the application is classic on a mixed system.
|
|
361
|
+
*/
|
|
362
|
+
private isClassicAppOnMixedSystem;
|
|
363
|
+
/**
|
|
364
|
+
* Determines the project type prompt visibility. In case the user is external,
|
|
365
|
+
* the selected application is released and the system is mixed the prompt need to be visible.
|
|
366
|
+
*
|
|
367
|
+
* @param {SourceApplication} application - The selected application.
|
|
368
|
+
* @returns {boolean} True if the project type must be displayed.
|
|
369
|
+
*/
|
|
370
|
+
private shouldDisplayProjectTypePrompt;
|
|
371
|
+
/**
|
|
372
|
+
* Determines the project type classic label visibility. In case the user is external,
|
|
373
|
+
* the selected application is NOT released and the system is mixed the label need to be visible.
|
|
374
|
+
*
|
|
375
|
+
* @param {SourceApplication} application - The selected application.
|
|
376
|
+
* @returns {boolean} True if the project type classic label must be displayed.
|
|
377
|
+
*/
|
|
378
|
+
private shouldDisplayProjectTypeClassicLabel;
|
|
323
379
|
}
|
|
324
380
|
//# sourceMappingURL=configuration.d.ts.map
|
|
@@ -22,6 +22,7 @@ class ConfigPrompter {
|
|
|
22
22
|
systemLookup;
|
|
23
23
|
logger;
|
|
24
24
|
telemetryCollector;
|
|
25
|
+
CLOUD_DEV_ADP_STATUS_RELEASED = 'released';
|
|
25
26
|
/**
|
|
26
27
|
* Indicates if the current layer is based on a customer base.
|
|
27
28
|
*/
|
|
@@ -199,9 +200,11 @@ class ConfigPrompter {
|
|
|
199
200
|
[types_1.configPromptNames.username]: this.getUsernamePrompt(promptOptions?.[types_1.configPromptNames.username]),
|
|
200
201
|
[types_1.configPromptNames.password]: this.getPasswordPrompt(promptOptions?.[types_1.configPromptNames.password]),
|
|
201
202
|
[types_1.configPromptNames.storeCredentials]: this.getStoreCredentialsPrompt(promptOptions?.[types_1.configPromptNames.storeCredentials]),
|
|
202
|
-
[types_1.configPromptNames.projectType]: this.getProjectTypeListPrompt(promptOptions?.[types_1.configPromptNames.projectType]),
|
|
203
203
|
[types_1.configPromptNames.application]: this.getApplicationListPrompt(promptOptions?.[types_1.configPromptNames.application]),
|
|
204
204
|
[types_1.configPromptNames.appValidationCli]: this.getApplicationValidationPromptForCli(),
|
|
205
|
+
[types_1.configPromptNames.projectType]: this.getProjectTypeListPrompt(promptOptions?.[types_1.configPromptNames.projectType]),
|
|
206
|
+
[types_1.configPromptNames.projectTypeCli]: this.getProjectTypeListPromptForCli(),
|
|
207
|
+
[types_1.configPromptNames.projectTypeClassicLabel]: this.getProjectTypeClassicLabelPrompt(promptOptions?.[types_1.configPromptNames.projectTypeClassicLabel]),
|
|
205
208
|
[types_1.configPromptNames.fioriId]: this.getFioriIdPrompt(),
|
|
206
209
|
[types_1.configPromptNames.ach]: this.getAchPrompt(),
|
|
207
210
|
[types_1.configPromptNames.shouldCreateExtProject]: this.getShouldCreateExtProjectPrompt(promptOptions?.[types_1.configPromptNames.shouldCreateExtProject])
|
|
@@ -356,27 +359,60 @@ class ConfigPrompter {
|
|
|
356
359
|
},
|
|
357
360
|
choices: choices_1.getProjectTypeChoices,
|
|
358
361
|
default: options?.default,
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
this.
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
362
|
+
when: ({ application }) => this.shouldDisplayProjectTypePrompt(application),
|
|
363
|
+
validate: async (projectType, { application }) => this.validateProjectTypePrompt(projectType, application),
|
|
364
|
+
additionalMessages: (_, answers) => (0, additional_messages_1.getAppAdditionalMessages)(answers?.application, {
|
|
365
|
+
hasSyncViews: this.containsSyncViews,
|
|
366
|
+
isV4AppInternalMode: this.isV4AppInternalMode,
|
|
367
|
+
isSupported: this.isSupported && !this.isPartiallySupported,
|
|
368
|
+
isPartiallySupported: this.isPartiallySupported
|
|
369
|
+
}, this.isApplicationSupported)
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Prompt with `when` hook only, which runs the project type propmt validation in a CLI context only.
|
|
374
|
+
* This overcomes yeoman limitation for prompts of type `list` for which the validation hook is not
|
|
375
|
+
* triggered by design in a CLI context.
|
|
376
|
+
*
|
|
377
|
+
* @returns {YUIQuestion} The project type for cli prompt configuration.
|
|
378
|
+
*/
|
|
379
|
+
getProjectTypeListPromptForCli() {
|
|
380
|
+
return {
|
|
381
|
+
name: types_1.configPromptNames.projectTypeCli,
|
|
382
|
+
when: async ({ application, projectType }) => {
|
|
383
|
+
if (!application || !projectType) {
|
|
384
|
+
return false;
|
|
372
385
|
}
|
|
373
|
-
|
|
374
|
-
|
|
386
|
+
const projectTypeValidationResult = await this.validateProjectTypePrompt(projectType, application);
|
|
387
|
+
if (typeof projectTypeValidationResult === 'string') {
|
|
388
|
+
throw new Error(projectTypeValidationResult);
|
|
375
389
|
}
|
|
376
|
-
return
|
|
390
|
+
return false;
|
|
377
391
|
}
|
|
378
392
|
};
|
|
379
393
|
}
|
|
394
|
+
/**
|
|
395
|
+
* Creates a label for the project type `classic`.
|
|
396
|
+
*
|
|
397
|
+
* @param {ProjectTypeClassicLabelPromptOptions} options - The project type `classic` label options.
|
|
398
|
+
* @returns {InputQuestion<ConfigAnswers>} The project type `classic` label configurations.
|
|
399
|
+
*/
|
|
400
|
+
getProjectTypeClassicLabelPrompt(options) {
|
|
401
|
+
return {
|
|
402
|
+
type: 'input',
|
|
403
|
+
name: types_1.configPromptNames.projectTypeClassicLabel,
|
|
404
|
+
message: '',
|
|
405
|
+
guiOptions: {
|
|
406
|
+
type: 'label',
|
|
407
|
+
mandatory: false
|
|
408
|
+
},
|
|
409
|
+
when: ({ application }) => !options?.hide && this.shouldDisplayProjectTypeClassicLabel(application),
|
|
410
|
+
additionalMessages: () => ({
|
|
411
|
+
message: (0, i18n_1.t)('prompts.projectTypeClassicLabel'),
|
|
412
|
+
severity: yeoman_ui_types_1.Severity.information
|
|
413
|
+
})
|
|
414
|
+
};
|
|
415
|
+
}
|
|
380
416
|
/**
|
|
381
417
|
* Creates the application list prompt configuration.
|
|
382
418
|
*
|
|
@@ -396,14 +432,29 @@ class ConfigPrompter {
|
|
|
396
432
|
},
|
|
397
433
|
choices: () => (0, choices_1.getApplicationChoices)(this.targetApps),
|
|
398
434
|
default: options?.default,
|
|
399
|
-
validate:
|
|
435
|
+
validate: (application) => {
|
|
436
|
+
if (this.shouldDisplayProjectTypePrompt(application)) {
|
|
437
|
+
// Move the app validation into the projectType prompt.
|
|
438
|
+
return true;
|
|
439
|
+
}
|
|
440
|
+
if (this.isClassicAppOnMixedSystem(application)) {
|
|
441
|
+
this.selectedProjectType = axios_extension_1.AdaptationProjectType.ON_PREMISE;
|
|
442
|
+
}
|
|
443
|
+
return this.validateAppPrompt(application);
|
|
444
|
+
},
|
|
400
445
|
when: (answers) => (0, conditions_1.showApplicationQuestion)(answers, !!this.targetApps?.length, this.isAuthRequired, this.isLoginSuccessful),
|
|
401
|
-
additionalMessages: (
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
446
|
+
additionalMessages: (input) => {
|
|
447
|
+
const application = input;
|
|
448
|
+
if (this.shouldDisplayProjectTypePrompt(application)) {
|
|
449
|
+
return undefined;
|
|
450
|
+
}
|
|
451
|
+
return (0, additional_messages_1.getAppAdditionalMessages)(application, {
|
|
452
|
+
hasSyncViews: this.containsSyncViews,
|
|
453
|
+
isV4AppInternalMode: this.isV4AppInternalMode,
|
|
454
|
+
isSupported: this.isSupported && !this.isPartiallySupported,
|
|
455
|
+
isPartiallySupported: this.isPartiallySupported
|
|
456
|
+
}, this.isApplicationSupported);
|
|
457
|
+
}
|
|
407
458
|
};
|
|
408
459
|
}
|
|
409
460
|
/**
|
|
@@ -414,11 +465,14 @@ class ConfigPrompter {
|
|
|
414
465
|
getApplicationValidationPromptForCli() {
|
|
415
466
|
return {
|
|
416
467
|
name: types_1.configPromptNames.appValidationCli,
|
|
417
|
-
when: async (
|
|
418
|
-
if (!
|
|
468
|
+
when: async ({ application }) => {
|
|
469
|
+
if (!application || this.shouldDisplayProjectTypePrompt(application)) {
|
|
419
470
|
return false;
|
|
420
471
|
}
|
|
421
|
-
|
|
472
|
+
if (this.isClassicAppOnMixedSystem(application)) {
|
|
473
|
+
this.selectedProjectType = axios_extension_1.AdaptationProjectType.ON_PREMISE;
|
|
474
|
+
}
|
|
475
|
+
const result = await this.validateAppPrompt(application);
|
|
422
476
|
if (typeof result === 'string') {
|
|
423
477
|
throw new Error(result);
|
|
424
478
|
}
|
|
@@ -566,7 +620,7 @@ class ConfigPrompter {
|
|
|
566
620
|
return validationResult;
|
|
567
621
|
}
|
|
568
622
|
this.telemetryCollector.startTiming('applicationListLoadingTime');
|
|
569
|
-
this.targetApps = await (0, adp_tooling_1.loadApps)(this.abapProvider, this.isCustomerBase, this.
|
|
623
|
+
this.targetApps = await (0, adp_tooling_1.loadApps)(this.abapProvider, this.isCustomerBase, this.supportedProject);
|
|
570
624
|
this.telemetryCollector.setBatch({ numberOfApplications: this.targetApps.length });
|
|
571
625
|
this.telemetryCollector.endTiming('applicationListLoadingTime');
|
|
572
626
|
this.isLoginSuccessful = true;
|
|
@@ -612,7 +666,7 @@ class ConfigPrompter {
|
|
|
612
666
|
return validationResult;
|
|
613
667
|
}
|
|
614
668
|
this.telemetryCollector.startTiming('applicationListLoadingTime');
|
|
615
|
-
this.targetApps = await (0, adp_tooling_1.loadApps)(this.abapProvider, this.isCustomerBase, this.
|
|
669
|
+
this.targetApps = await (0, adp_tooling_1.loadApps)(this.abapProvider, this.isCustomerBase, this.supportedProject);
|
|
616
670
|
this.telemetryCollector.setBatch({ numberOfApplications: this.targetApps.length });
|
|
617
671
|
this.telemetryCollector.endTiming('applicationListLoadingTime');
|
|
618
672
|
return true;
|
|
@@ -629,6 +683,8 @@ class ConfigPrompter {
|
|
|
629
683
|
*/
|
|
630
684
|
async validateAppData(app) {
|
|
631
685
|
try {
|
|
686
|
+
// Reset the flag when we are selecting a new application from the list.
|
|
687
|
+
this.isApplicationSupported = false;
|
|
632
688
|
const sourceManifest = new adp_tooling_1.SourceManifest(this.abapProvider, app.id, this.logger);
|
|
633
689
|
const isSupported = await (0, adp_tooling_1.isAppSupported)(this.abapProvider, app.id, this.logger);
|
|
634
690
|
if (isSupported) {
|
|
@@ -677,6 +733,10 @@ class ConfigPrompter {
|
|
|
677
733
|
else if (this.supportedProject === adp_tooling_1.SupportedProject.ON_PREM) {
|
|
678
734
|
this.selectedProjectType = axios_extension_1.AdaptationProjectType.ON_PREMISE;
|
|
679
735
|
}
|
|
736
|
+
else if (this.supportedProject === adp_tooling_1.SupportedProject.CLOUD_READY_AND_ON_PREM &&
|
|
737
|
+
(0, feature_toggle_1.isInternalFeaturesSettingEnabled)()) {
|
|
738
|
+
this.selectedProjectType = axios_extension_1.AdaptationProjectType.ON_PREMISE;
|
|
739
|
+
}
|
|
680
740
|
}
|
|
681
741
|
catch (error) {
|
|
682
742
|
this.handleSystemError(error);
|
|
@@ -752,6 +812,21 @@ class ConfigPrompter {
|
|
|
752
812
|
throw new Error((0, i18n_1.t)('error.appDoesNotSupportFlexibility'));
|
|
753
813
|
}
|
|
754
814
|
}
|
|
815
|
+
/**
|
|
816
|
+
* Validates the project type prompt.
|
|
817
|
+
*
|
|
818
|
+
* @param {AdaptationProjectType} projectType - The selected project type.
|
|
819
|
+
* @param {SourceApplication} application - The selected application.
|
|
820
|
+
* @returns {Promise<string|boolean>} A promise that resolves to true if valid, or an error message string if validation fails.
|
|
821
|
+
*/
|
|
822
|
+
async validateProjectTypePrompt(projectType, application) {
|
|
823
|
+
this.selectedProjectType = projectType;
|
|
824
|
+
const appValidationResult = await this.validateAppPrompt(application);
|
|
825
|
+
if (typeof appValidationResult === 'string') {
|
|
826
|
+
return appValidationResult;
|
|
827
|
+
}
|
|
828
|
+
return true;
|
|
829
|
+
}
|
|
755
830
|
/**
|
|
756
831
|
* Sets the support flags for given application.
|
|
757
832
|
*
|
|
@@ -766,6 +841,48 @@ class ConfigPrompter {
|
|
|
766
841
|
this.isV4AppInternalMode = (0, adp_tooling_1.isV4Application)(this.appManifest) && !this.isCustomerBase;
|
|
767
842
|
this.containsSyncViews = (0, adp_tooling_1.isSyncLoadedView)(this.appManifest?.['sap.ui5']);
|
|
768
843
|
}
|
|
844
|
+
/**
|
|
845
|
+
* Checks if the application is a released app on a mixed system that requires
|
|
846
|
+
* explicit project type selection by the user.
|
|
847
|
+
*
|
|
848
|
+
* @param {SourceApplication} application - The selected application.
|
|
849
|
+
* @returns {boolean} True if the application is released on a mixed system.
|
|
850
|
+
*/
|
|
851
|
+
isReleasedAppOnMixedSystem(application) {
|
|
852
|
+
return (application?.cloudDevAdaptationStatus === this.CLOUD_DEV_ADP_STATUS_RELEASED &&
|
|
853
|
+
this.supportedProject === adp_tooling_1.SupportedProject.CLOUD_READY_AND_ON_PREM);
|
|
854
|
+
}
|
|
855
|
+
/**
|
|
856
|
+
* Checks if the application is a classic (non-released) app on a mixed system
|
|
857
|
+
* that should default to on-premise project type.
|
|
858
|
+
*
|
|
859
|
+
* @param {SourceApplication} application - The selected application.
|
|
860
|
+
* @returns {boolean} True if the application is classic on a mixed system.
|
|
861
|
+
*/
|
|
862
|
+
isClassicAppOnMixedSystem(application) {
|
|
863
|
+
return (this.supportedProject === adp_tooling_1.SupportedProject.CLOUD_READY_AND_ON_PREM &&
|
|
864
|
+
application?.cloudDevAdaptationStatus === '');
|
|
865
|
+
}
|
|
866
|
+
/**
|
|
867
|
+
* Determines the project type prompt visibility. In case the user is external,
|
|
868
|
+
* the selected application is released and the system is mixed the prompt need to be visible.
|
|
869
|
+
*
|
|
870
|
+
* @param {SourceApplication} application - The selected application.
|
|
871
|
+
* @returns {boolean} True if the project type must be displayed.
|
|
872
|
+
*/
|
|
873
|
+
shouldDisplayProjectTypePrompt(application) {
|
|
874
|
+
return !(0, feature_toggle_1.isInternalFeaturesSettingEnabled)() && this.isReleasedAppOnMixedSystem(application);
|
|
875
|
+
}
|
|
876
|
+
/**
|
|
877
|
+
* Determines the project type classic label visibility. In case the user is external,
|
|
878
|
+
* the selected application is NOT released and the system is mixed the label need to be visible.
|
|
879
|
+
*
|
|
880
|
+
* @param {SourceApplication} application - The selected application.
|
|
881
|
+
* @returns {boolean} True if the project type classic label must be displayed.
|
|
882
|
+
*/
|
|
883
|
+
shouldDisplayProjectTypeClassicLabel(application) {
|
|
884
|
+
return !(0, feature_toggle_1.isInternalFeaturesSettingEnabled)() && this.isClassicAppOnMixedSystem(application);
|
|
885
|
+
}
|
|
769
886
|
}
|
|
770
887
|
exports.ConfigPrompter = ConfigPrompter;
|
|
771
888
|
//# sourceMappingURL=configuration.js.map
|
|
@@ -18,7 +18,7 @@ const getSystemAdditionalMessages = (flexUICapability, projectType) => {
|
|
|
18
18
|
}
|
|
19
19
|
if (projectType === axios_extension_1.AdaptationProjectType.CLOUD_READY) {
|
|
20
20
|
return {
|
|
21
|
-
message:
|
|
21
|
+
message: (0, i18n_1.t)('prompts.projectTypeCloudReadyLabel'),
|
|
22
22
|
severity: yeoman_ui_types_1.Severity.information
|
|
23
23
|
};
|
|
24
24
|
}
|
|
@@ -26,7 +26,7 @@ const getSystemAdditionalMessages = (flexUICapability, projectType) => {
|
|
|
26
26
|
if (isUIFlexSupported) {
|
|
27
27
|
return isDtaFolderDeploymentSupported
|
|
28
28
|
? {
|
|
29
|
-
message:
|
|
29
|
+
message: (0, i18n_1.t)('prompts.projectTypeClassicLabel'),
|
|
30
30
|
severity: yeoman_ui_types_1.Severity.information
|
|
31
31
|
}
|
|
32
32
|
: {
|
|
@@ -36,6 +36,8 @@ export declare enum configPromptNames {
|
|
|
36
36
|
password = "password",
|
|
37
37
|
storeCredentials = "storeCredentials",
|
|
38
38
|
projectType = "projectType",
|
|
39
|
+
projectTypeCli = "projectTypeCli",
|
|
40
|
+
projectTypeClassicLabel = "projectTypeClassicLabel",
|
|
39
41
|
application = "application",
|
|
40
42
|
appValidationCli = "appValidationCli",
|
|
41
43
|
fioriId = "fioriId",
|
|
@@ -69,6 +71,9 @@ export interface ProjectTypePromptOptions {
|
|
|
69
71
|
default?: string;
|
|
70
72
|
hide?: boolean;
|
|
71
73
|
}
|
|
74
|
+
export interface ProjectTypeClassicLabelPromptOptions {
|
|
75
|
+
hide?: boolean;
|
|
76
|
+
}
|
|
72
77
|
export interface ApplicationPromptOptions {
|
|
73
78
|
default?: string;
|
|
74
79
|
hide?: boolean;
|
|
@@ -93,6 +98,8 @@ export type ConfigPromptOptions = Partial<{
|
|
|
93
98
|
[configPromptNames.password]: PasswordPromptOptions;
|
|
94
99
|
[configPromptNames.storeCredentials]: StoreCredentialsPromptOptions;
|
|
95
100
|
[configPromptNames.projectType]: ProjectTypePromptOptions;
|
|
101
|
+
[configPromptNames.projectTypeCli]: CliValidationPromptOptions;
|
|
102
|
+
[configPromptNames.projectTypeClassicLabel]: ProjectTypeClassicLabelPromptOptions;
|
|
96
103
|
[configPromptNames.application]: ApplicationPromptOptions;
|
|
97
104
|
[configPromptNames.appValidationCli]: CliValidationPromptOptions;
|
|
98
105
|
[configPromptNames.fioriId]: FioriIdPromptOptions;
|
package/generators/app/types.js
CHANGED
|
@@ -12,6 +12,8 @@ var configPromptNames;
|
|
|
12
12
|
configPromptNames["password"] = "password";
|
|
13
13
|
configPromptNames["storeCredentials"] = "storeCredentials";
|
|
14
14
|
configPromptNames["projectType"] = "projectType";
|
|
15
|
+
configPromptNames["projectTypeCli"] = "projectTypeCli";
|
|
16
|
+
configPromptNames["projectTypeClassicLabel"] = "projectTypeClassicLabel";
|
|
15
17
|
configPromptNames["application"] = "application";
|
|
16
18
|
configPromptNames["appValidationCli"] = "appValidationCli";
|
|
17
19
|
configPromptNames["fioriId"] = "fioriId";
|
|
@@ -39,12 +39,13 @@
|
|
|
39
39
|
"extProjectSuggestion": "Do you want to create an extension project instead?",
|
|
40
40
|
"createExtProjectWithSyncViewsLabel": "Do you want to create an extension project instead? An extension project gives you the ability to create controller extensions for synchronous and asynchronous views.",
|
|
41
41
|
"createExtProjectContinueLabel": "Please select whether you want to continue.",
|
|
42
|
-
"projectTypeLabel": "Project Type",
|
|
43
42
|
"projectNameLabel": "Project Name",
|
|
44
43
|
"projectNameTooltip": "Enter the project name for your application variant.",
|
|
45
|
-
"projectTypeListLabel": "
|
|
44
|
+
"projectTypeListLabel": "Project Type",
|
|
46
45
|
"projectTypeCloudReadyName": "Cloud Ready",
|
|
47
|
-
"projectTypeOnPremName": "
|
|
46
|
+
"projectTypeOnPremName": "Classic",
|
|
47
|
+
"projectTypeClassicLabel": "Project Type: Classic",
|
|
48
|
+
"projectTypeCloudReadyLabel": "Project Type: Cloud Ready",
|
|
48
49
|
"appTitleLabel": "Application Title",
|
|
49
50
|
"appTitleTooltip": "Enter the application title for your application variant.",
|
|
50
51
|
"appTitleDefault": "App Variant Title",
|
|
@@ -92,7 +93,7 @@
|
|
|
92
93
|
"writingPhase": "An error occurred in the writing phase of the adaptation project generation. To see the error, view the logs.",
|
|
93
94
|
"telemetry": "An error occurred when sending telemetry data: {{- error}}. To see the error, view the logs.",
|
|
94
95
|
"updatingApp": "An error occurred when creating a new adaptation project. To see the error, view the logs.",
|
|
95
|
-
"cloudSystemsForInternalUsers": "You have selected a system that does not support
|
|
96
|
+
"cloudSystemsForInternalUsers": "You have selected a system that does not support Classic adaptation projects. Please select a supported system.",
|
|
96
97
|
"notDeployableNotFlexEnabledSystemError": "The system that you have selected is not an ABAP On-Premise system. Adaptation projects are only supported on those systems. Please choose an ABAP On-Premise system which supports flexibility and DTA_FOLDER deployment.",
|
|
97
98
|
"notDeployableSystemError": "The system that you have selected is not an ABAP On-Premise system which supports `DTA_FOLDER` deployment. Adaptation projects are only supported on those systems. Please choose an ABAP On-Premise system which supports `DTA_FOLDER` deployment.",
|
|
98
99
|
"notFlexEnabledError": "The system that you have selected is not an ABAP On-Premise system which supports flexibility. Adaptation projects are only supported on those systems. Please choose an ABAP On-Premise system which supports flexibility. If you continue, you will only be able to create an extension project.",
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"displayName": "SAPUI5 Adaptation Project",
|
|
4
4
|
"homepage": "https://help.sap.com/viewer/584e0bcbfd4a4aff91c815cefa0bce2d/Cloud/en-US/ada9567b767941aba8d49fdb4fdedea7.html",
|
|
5
5
|
"description": "Adaptation project allows you to create an app variant for an existing SAP Fiori elements-based or SAPUI5 freestyle application, without changing the original application.",
|
|
6
|
-
"version": "0.9.
|
|
6
|
+
"version": "0.9.41",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/SAP/open-ux-tools.git",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"i18next": "25.8.20",
|
|
31
31
|
"yeoman-generator": "5.10.0",
|
|
32
32
|
"uuid": "11.1.0",
|
|
33
|
-
"@sap-ux/adp-tooling": "0.18.
|
|
33
|
+
"@sap-ux/adp-tooling": "0.18.103",
|
|
34
34
|
"@sap-ux/axios-extension": "1.25.26",
|
|
35
35
|
"@sap-ux/btp-utils": "1.1.11",
|
|
36
36
|
"@sap-ux/feature-toggle": "0.3.7",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"fs-extra": "11.3.4",
|
|
58
58
|
"rimraf": "6.1.3",
|
|
59
59
|
"yeoman-test": "6.3.0",
|
|
60
|
-
"@sap-ux/deploy-config-sub-generator": "0.5.
|
|
60
|
+
"@sap-ux/deploy-config-sub-generator": "0.5.124"
|
|
61
61
|
},
|
|
62
62
|
"engines": {
|
|
63
63
|
"node": ">=20.x"
|