From 8153ca99ee8b0c720d0d912593f7c1c24a8b523e Mon Sep 17 00:00:00 2001 From: iCrawl Date: Mon, 24 Apr 2023 20:19:40 +0200 Subject: [PATCH] ci: update formatting tag --- packages/actions/__tests__/formatTag.test.ts | 5 +++++ packages/actions/src/formatTag/action.yml | 2 ++ packages/actions/src/formatTag/formatTag.ts | 15 ++++++++++----- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/actions/__tests__/formatTag.test.ts b/packages/actions/__tests__/formatTag.test.ts index 95bc5d810..898349c4a 100644 --- a/packages/actions/__tests__/formatTag.test.ts +++ b/packages/actions/__tests__/formatTag.test.ts @@ -21,6 +21,11 @@ describe('Format Tag', () => { test('GIVEN tag with no prefix THEN return tag', () => { expect(formatTag('13.5.1')).toEqual({ isSubpackage: false, package: 'discord.js', semver: '13.5.1' }); expect(formatTag('13.7.0')).toEqual({ isSubpackage: false, package: 'discord.js', semver: '13.7.0' }); + expect(formatTag('create-discord-bot@1.0.0')).toEqual({ + isSubpackage: false, + package: 'create-discord-bot', + semver: '1.0.0', + }); }); test('GIVEN no or invalid tag THEN return null', () => { diff --git a/packages/actions/src/formatTag/action.yml b/packages/actions/src/formatTag/action.yml index 004beb5d5..7953d5e8c 100644 --- a/packages/actions/src/formatTag/action.yml +++ b/packages/actions/src/formatTag/action.yml @@ -5,6 +5,8 @@ inputs: description: 'The input tag' required: true outputs: + subpackage: + description: 'Whether this tag is a subpackage tag' package: description: 'The package string that was extracted from this tag' semver: diff --git a/packages/actions/src/formatTag/formatTag.ts b/packages/actions/src/formatTag/formatTag.ts index 9f43a2cc4..cd4e53132 100644 --- a/packages/actions/src/formatTag/formatTag.ts +++ b/packages/actions/src/formatTag/formatTag.ts @@ -1,12 +1,17 @@ export function formatTag(tag: string) { - // eslint-disable-next-line unicorn/no-unsafe-regex, prefer-named-capture-group - const parsed = /(^@.*\/(?.*)@v?)?(?\d+.\d+.\d+)-?.*/.exec(tag); + // eslint-disable-next-line unicorn/no-unsafe-regex + const parsed = /(?:^@.*\/(?.*)@v?)?(?\d+.\d+.\d+)-?.*/.exec(tag); + const parsedPackage = /(?.*)@v?-?.*/.exec(tag); if (parsed?.groups) { + const isSubpackage = typeof parsed.groups.package === 'string'; + const pkg = isSubpackage ? parsed.groups.package : parsedPackage?.groups?.package ?? 'discord.js'; + const semver = parsed.groups.semver; + return { - isSubpackage: typeof parsed.groups.package === 'string', - package: parsed.groups.package ?? 'discord.js', - semver: parsed.groups.semver, + isSubpackage, + package: pkg, + semver, }; }