diff --git a/packages/bruno-converters/src/opencollection/types.ts b/packages/bruno-converters/src/opencollection/types.ts index 07d5d6848..0750407a2 100644 --- a/packages/bruno-converters/src/opencollection/types.ts +++ b/packages/bruno-converters/src/opencollection/types.ts @@ -204,6 +204,9 @@ export interface BrunoConfig { passphrase?: string; }>; }; + scripts?: { + additionalContextRoots?: string[]; + }; } export interface BrunoCollectionRoot { diff --git a/packages/bruno-filestore/src/formats/yml/parseCollection.ts b/packages/bruno-filestore/src/formats/yml/parseCollection.ts index 8fe96a7c4..79ae725bc 100644 --- a/packages/bruno-filestore/src/formats/yml/parseCollection.ts +++ b/packages/bruno-filestore/src/formats/yml/parseCollection.ts @@ -38,6 +38,20 @@ const parseCollection = (ymlString: string): ParsedCollection => { } } + // bruno-specific script extensions + const brunoExtensions = oc.extensions?.bruno as any; + if (Array.isArray(brunoExtensions?.scripts?.additionalContextRoots)) { + const sanitizedRoots = brunoExtensions.scripts.additionalContextRoots + .filter((item: any) => typeof item === 'string'); + + if (sanitizedRoots.length > 0) { + brunoConfig.scripts = { + ...brunoConfig.scripts, + additionalContextRoots: sanitizedRoots + }; + } + } + // protobuf if (oc.config?.protobuf) { brunoConfig.protobuf = { diff --git a/packages/bruno-filestore/src/formats/yml/stringifyCollection.ts b/packages/bruno-filestore/src/formats/yml/stringifyCollection.ts index 44663ce24..432fba7ed 100644 --- a/packages/bruno-filestore/src/formats/yml/stringifyCollection.ts +++ b/packages/bruno-filestore/src/formats/yml/stringifyCollection.ts @@ -220,6 +220,16 @@ const stringifyCollection = (collectionRoot: any, brunoConfig: any): string => { } as any; } + // bruno-specific script extensions + if (brunoConfig.scripts?.additionalContextRoots?.length) { + if (!oc.extensions.bruno) { + oc.extensions.bruno = {}; + } + (oc.extensions.bruno as any).scripts = { + additionalContextRoots: brunoConfig.scripts.additionalContextRoots + }; + } + return stringifyYml(oc); } catch (error) { console.error('Error stringifying opencollection.yml:', error);