diff --git a/lib/config/presets/index.spec.ts b/lib/config/presets/index.spec.ts index eaeb3c418d791d1b314668444b7e347fdce145dc..f900f01e12d95ca720bdf6424078601a705a6c70 100644 --- a/lib/config/presets/index.spec.ts +++ b/lib/config/presets/index.spec.ts @@ -455,6 +455,37 @@ describe('config/presets/index', () => { packageTag: '1.2.3', }); }); + + it('parses local with subdirectory and branch/tag with a slash', () => { + expect( + presets.parsePreset( + 'local>PROJECT/repository//path/to/preset#feature/branch' + ) + ).toEqual({ + packageName: 'PROJECT/repository', + params: undefined, + presetName: 'preset', + presetPath: 'path/to', + presetSource: 'local', + packageTag: 'feature/branch', + }); + }); + + it('parses local with sub preset and branch/tag with a slash', () => { + expect( + presets.parsePreset( + 'local>PROJECT/repository:preset/subpreset#feature/branch' + ) + ).toEqual({ + packageName: 'PROJECT/repository', + params: undefined, + presetName: 'preset/subpreset', + presetPath: undefined, + presetSource: 'local', + packageTag: 'feature/branch', + }); + }); + it('parses no prefix as local', () => { expect(presets.parsePreset('some/repo')).toEqual({ packageName: 'some/repo', diff --git a/lib/config/presets/index.ts b/lib/config/presets/index.ts index 4dc90acb3a3acd202057b76b2a801f01bda5a494..2728aac0717bf2325d739c5eca7c1243dfbcda63 100644 --- a/lib/config/presets/index.ts +++ b/lib/config/presets/index.ts @@ -37,10 +37,10 @@ const presetSources: Record<string, PresetApi> = { }; const nonScopedPresetWithSubdirRegex = regEx( - /^(?<packageName>~?[\w\-./]+?)\/\/(?:(?<presetPath>[\w\-./]+)\/)?(?<presetName>[\w\-.]+)(?:#(?<packageTag>[\w\-.]+?))?$/ + /^(?<packageName>~?[\w\-./]+?)\/\/(?:(?<presetPath>[\w\-./]+)\/)?(?<presetName>[\w\-.]+)(?:#(?<packageTag>[\w\-./]+?))?$/ ); const gitPresetRegex = regEx( - /^(?<packageName>[\w\-. /]+)(?::(?<presetName>[\w\-.+/]+))?(?:#(?<packageTag>[\w\-.]+?))?$/ + /^(?<packageName>[\w\-. /]+)(?::(?<presetName>[\w\-.+/]+))?(?:#(?<packageTag>[\w\-./]+?))?$/ ); export function replaceArgs(