Skip to content

Commit b825a34

Browse files
helios2003Shurtu-galasyncapi-bot
authored
feat: add the flag for disabling optimizations (#1447)
* fixes in ignore flag * add flexibility to the ignore flag * give option for schema everytime --------- Co-authored-by: Ashish Padhy <[email protected]> Co-authored-by: asyncapi-bot <[email protected]>
1 parent 7e5be9b commit b825a34

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

src/commands/optimize.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ export enum Optimizations {
1818
MOVE_ALL_TO_COMPONENTS='move-all-to-components',
1919
}
2020

21+
export enum DisableOptimizations {
22+
SCHEMA='schema'
23+
}
24+
2125
export enum Outputs {
2226
TERMINAL='terminal',
2327
NEW_FILE='new-file',
@@ -27,13 +31,15 @@ export default class Optimize extends Command {
2731
static description = 'optimize asyncapi specification file';
2832
isInteractive = false;
2933
selectedOptimizations?: Optimizations[];
34+
disableOptimizations?: DisableOptimizations[];
3035
outputMethod?: Outputs;
3136

3237
static examples = [
3338
'asyncapi optimize ./asyncapi.yaml',
3439
'asyncapi optimize ./asyncapi.yaml --no-tty',
3540
'asyncapi optimize ./asyncapi.yaml --optimization=remove-components --optimization=reuse-components --optimization=move-all-to-components --no-tty',
3641
'asyncapi optimize ./asyncapi.yaml --optimization=remove-components --output=terminal --no-tty',
42+
'asyncapi optimize ./asyncapi.yaml --ignore=schema'
3743
];
3844

3945
static flags = optimizeFlags();
@@ -74,6 +80,7 @@ export default class Optimize extends Command {
7480
}
7581
this.isInteractive = !flags['no-tty'];
7682
this.selectedOptimizations = flags.optimization as Optimizations[];
83+
this.disableOptimizations = flags.ignore as DisableOptimizations[];
7784
this.outputMethod = flags.output as Outputs;
7885
this.metricsMetadata.optimized = false;
7986

@@ -93,7 +100,11 @@ export default class Optimize extends Command {
93100
moveAllToComponents: this.selectedOptimizations.includes(Optimizations.MOVE_ALL_TO_COMPONENTS),
94101
removeComponents: this.selectedOptimizations.includes(Optimizations.REMOVE_COMPONENTS),
95102
reuseComponents: this.selectedOptimizations.includes(Optimizations.REUSE_COMPONENTS)
96-
}, output: Output.YAML});
103+
},
104+
disableOptimizationFor: {
105+
schema: this.disableOptimizations.includes(DisableOptimizations.SCHEMA)
106+
},
107+
output: Output.YAML});
97108

98109
this.collectMetricsData(report);
99110

@@ -178,6 +189,13 @@ export default class Optimize extends Command {
178189
this.showOptimizations(report.reuseComponents);
179190
choices.push({name: 'reuse components', value: Optimizations.REUSE_COMPONENTS});
180191
}
192+
193+
if (this.disableOptimizations?.includes(DisableOptimizations.SCHEMA)) {
194+
choices.push({name: 'Do not ignore schema', value: DisableOptimizations.SCHEMA});
195+
} else {
196+
choices.push({name: 'Ignore schema', value: DisableOptimizations.SCHEMA});
197+
}
198+
181199
const optimizationRes = await inquirer.prompt([{
182200
name: 'optimization',
183201
message: 'select the type of optimization that you want to apply:',
@@ -186,6 +204,14 @@ export default class Optimize extends Command {
186204
choices
187205
}]);
188206

207+
if (optimizationRes.optimization.includes('schema')) {
208+
if (this.disableOptimizations?.includes(DisableOptimizations.SCHEMA)) {
209+
this.disableOptimizations = this.disableOptimizations?.filter(opt => opt !== DisableOptimizations.SCHEMA);
210+
} else {
211+
this.disableOptimizations = [...(this.disableOptimizations || []), DisableOptimizations.SCHEMA];
212+
}
213+
}
214+
189215
this.selectedOptimizations = optimizationRes.optimization;
190216

191217
const outputRes = await inquirer.prompt([{

src/core/flags/optimize.flags.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ export enum Optimizations {
77
MOVE_ALL_TO_COMPONENTS='move-all-to-components',
88
}
99

10+
export enum DisableOptimizations {
11+
SCHEMA='schema',
12+
}
13+
1014
export enum Outputs {
1115
TERMINAL='terminal',
1216
NEW_FILE='new-file',
@@ -17,6 +21,7 @@ export const optimizeFlags = () => {
1721
return {
1822
help: Flags.help({ char: 'h' }),
1923
optimization: Flags.string({char: 'p', default: Object.values(Optimizations), options: Object.values(Optimizations), multiple: true, description: 'select the type of optimizations that you want to apply.'}),
24+
ignore: Flags.string({char: 'i', default: [], options: Object.values(DisableOptimizations), multiple: true, description: 'list of components to be ignored from the optimization process'}),
2025
output: Flags.string({char: 'o', default: Outputs.TERMINAL, options: Object.values(Outputs), description: 'select where you want the output.'}),
2126
'no-tty': Flags.boolean({ description: 'do not use an interactive terminal', default: false }),
2227
};

0 commit comments

Comments
 (0)