From 909073e1c290d92f190916a6c47a82cf9333e6b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Maseda=20Mui=C3=B1o?= Date: Thu, 10 Nov 2022 10:39:51 +0000 Subject: [PATCH 1/6] Add filters for pre and release --- test/images.test.js | 127 +++++++++++++++++++++++++++++++++++++- utils/ImagesCalculator.js | 92 +++++++++++++++++++++++++-- 2 files changed, 213 insertions(+), 6 deletions(-) diff --git a/test/images.test.js b/test/images.test.js index c381695..8bfff04 100644 --- a/test/images.test.js +++ b/test/images.test.js @@ -1,7 +1,130 @@ -//const ImagesCalculator = require("../utils/ImagesCalculator.js") +const ImagesCalculator = require("../utils/ImagesCalculator.js") -test('Images calculator works with normal images', () => { +function mockRelease({tag_name, created_at, prerelease}){ + return { + + "url": "https://api.github.com/repos/octocat/Hello-World/releases/1", + "html_url": "https://github.com/octocat/Hello-World/releases/v1.0.0", + "assets_url": "https://api.github.com/repos/octocat/Hello-World/releases/1/assets", + "upload_url": "https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}", + "tarball_url": "https://api.github.com/repos/octocat/Hello-World/tarball/v1.0.0", + "zipball_url": "https://api.github.com/repos/octocat/Hello-World/zipball/v1.0.0", + "id": 1, + "node_id": "MDc6UmVsZWFzZTE=", + tag_name, + "target_commitish": "master", + "name": "v1.0.0", + "body": "Description of the release", + "draft": false, + prerelease, + created_at, + "published_at": "2013-02-27T19:35:32Z", + "author": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + } +} + +test('Images calculator works with filter for prereleases', () => { + + const MOCK_OCKTOKIT = { + + rest: { + + repos: { + + async listReleases(){ + + return { + + data: [ + + mockRelease({tag_name: "v1.0.2-pre", prerelease: true, created_at: "2013-02-25T19:35:32Z"}), + mockRelease({tag_name: "v2.0", prerelease: false, created_at: "2013-02-27T19:35:32Z"}), + mockRelease({tag_name: "v1.0.5-pre", prerelease: true, created_at: "2013-02-27T19:35:32Z"}), + mockRelease({tag_name: "v0.0.5-pre", prerelease: true, created_at: "2013-01-27T19:35:32Z"}), + + ] + } + + } + + } + + } + + } + + ImagesCalculator({ + + action_type: "last_prerelease_v1.0.x", + + }, MOCK_OCKTOKIT, true) + + .then(tag => expect(tag === "v1.0.5-pre")) + + .catch(e => console.error(e)) + }) +test('Images calculator works with filter for releases', () => { + + const MOCK_OCKTOKIT = { + + rest: { + + repos: { + + async listReleases(){ + + return { + + data: [ + + mockRelease({tag_name: "v2.1", prerelease: false, created_at: "2013-02-28T19:35:32Z"}), + mockRelease({tag_name: "v1.0.2-pre", prerelease: true, created_at: "2013-02-25T19:35:32Z"}), + mockRelease({tag_name: "v2.0", prerelease: false, created_at: "2013-02-27T19:35:32Z"}), + mockRelease({tag_name: "v1.0.5-pre", prerelease: true, created_at: "2013-02-27T19:35:32Z"}), + mockRelease({tag_name: "v0.0.5-pre", prerelease: true, created_at: "2013-01-27T19:35:32Z"}), + + ] + } + + } + + } + + } + + } + + ImagesCalculator({ + + action_type: "last_release_v2.x", + + }, MOCK_OCKTOKIT, true) + + .then(tag => expect(tag === "v2.1")) + + .catch(e => console.error(e)) + +}) diff --git a/utils/ImagesCalculator.js b/utils/ImagesCalculator.js index dad0197..e8fe171 100644 --- a/utils/ImagesCalculator.js +++ b/utils/ImagesCalculator.js @@ -1,8 +1,18 @@ const github = require("@actions/github") -module.exports = async function({action_type, flavour="default"}, ctx){ +// String regexps +const FILTERED_RELEASE = new RegExp(/^last_release_(\w+)/) - const image = await __calculateImage(action_type, ctx) +const FILTERED_PRERELEASE = new RegExp(/^last_prerelease_(\w+)/) + +// Utility function to escape special chars and compile into a RegExp dynamically +function utilRegEscape(string) { + return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') +}; + +module.exports = async function({action_type, flavour="default"}, ctx, mock){ + + const image = await __calculateImage(action_type, ctx, mock) if(flavour){ return `${image}_${flavour}` @@ -13,9 +23,9 @@ module.exports = async function({action_type, flavour="default"}, ctx){ } - function __calculateImage(action_type, ctx){ + function __calculateImage(action_type, ctx, mock){ - const octokit = github.getOctokit(ctx.github_token) + const octokit = (mock) ? ctx : github.getOctokit(ctx.github_token) switch(action_type){ @@ -24,6 +34,12 @@ module.exports = async function({action_type, flavour="default"}, ctx){ case "last_release": return __last_release(octokit, ctx) default: + if(FILTERED_PRERELEASE.test(action_type)){ + return __last_prerelease_filtered(octokit, ctx, action_type) + } + else if(FILTERED_RELEASE.test(action_type)){ + return __last_release_filtered(octokit, ctx, action_type) + } if(action_type.match(/^branch_/)){ return __last_branch_commit(action_type, octokit, ctx) @@ -73,6 +89,74 @@ module.exports = async function({action_type, flavour="default"}, ctx){ } + function __last_release_filtered(octokit, ctx, action_type){ + + // we prepare the filter + // is a regexp with the special part of .x replaced with .+ (any char) + // thus last_prerelease_1.x => /^1.\.+/ + const filter_reg = new RegExp('^' + utilRegEscape(action_type.replace(/last_release_/, '').replace(/x/, ''))) + + return __getReleases(octokit, ctx) + + .then(rr => rr.data.filter(r => !r.prerelease)) // by prereleases + + // match the filter + .then((releases) => { + + return releases.filter(r => filter_reg.test(r.tag_name)) + + }) + + .then(releases => __sortReleasesByTime(releases)[0]) // order by time (get the latest) + + .then(release => release.tag_name) // get the tag name + + } + + function __last_prerelease_filtered(octokit, ctx, action_type){ + + // we prepare the filter + // is a regexp with the special part of .x replaced with .+ (any char) + // thus last_prerelease_1.x => /^1.\.+/ + const filter_reg = new RegExp('^' + utilRegEscape(action_type.replace(/last_prerelease_/, '').replace(/x/, ''))) + + return __getReleases(octokit, ctx) + + .then(rr => rr.data.filter(r => r.prerelease)) // by prereleases + + // match the filter + .then((prereleases) => { + + return prereleases.filter(pr => filter_reg.test(pr.tag_name)) + + }) + + .then(prereleases => __sortReleasesByTime(prereleases)[0]) // order by time (get the latest) + + .then(prerelease => prerelease.tag_name) // get the tag name + } + + function __getReleases(octokit, ctx){ + + return octokit.rest.repos.listReleases({ + + owner: ctx.owner, + + repo: ctx.repo + + }) + } + + function __sortReleasesByTime(releases){ + + return releases.sort((a, b) => { + + return Date.parse(a.created_at) <= Date.parse(b.created_at) + + }) + + } + function __last_branch_commit(branch, octokit, ctx){ return octokit.rest.repos.getBranch({ From 1c746249f6406acd30fc94379324a248e1b341a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Maseda=20Mui=C3=B1o?= Date: Thu, 10 Nov 2022 10:42:05 +0000 Subject: [PATCH 2/6] Order prereleases by time --- utils/ImagesCalculator.js | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/utils/ImagesCalculator.js b/utils/ImagesCalculator.js index e8fe171..54edf50 100644 --- a/utils/ImagesCalculator.js +++ b/utils/ImagesCalculator.js @@ -70,23 +70,14 @@ module.exports = async function({action_type, flavour="default"}, ctx, mock){ function __last_prerelease(octokit, ctx){ - return octokit.rest.repos.listReleases({ - - owner: ctx.owner, + return __getReleases(octokit, ctx) - repo: ctx.repo + .then(rr => rr.data.filter(r => r.prerelease)) // by prereleases - }).then((rr) => { - - return rr.data.filter(r => r.prerelease)[0] + .then(prereleases => __sortReleasesByTime(prereleases)[0]) // order by time (get the latest) - }).then((r) => { - - if( r ) return r.tag_name + .then(prerelease => prerelease ? prerelease.tag_name: name) // get the tag name - return null - }) - } function __last_release_filtered(octokit, ctx, action_type){ From ce7c234d22d6d359978e1fa1db664d16e580bc86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Maseda=20Mui=C3=B1o?= Date: Fri, 11 Nov 2022 09:32:47 +0000 Subject: [PATCH 3/6] Fix problems on tests and linter --- test/images.test.js | 98 +++++++++++++----- utils/ImagesCalculator.js | 205 +++++++++++++++++++------------------- 2 files changed, 175 insertions(+), 128 deletions(-) diff --git a/test/images.test.js b/test/images.test.js index 8bfff04..861d66d 100644 --- a/test/images.test.js +++ b/test/images.test.js @@ -44,6 +44,50 @@ function mockRelease({tag_name, created_at, prerelease}){ } } +test("Images calculator works with prereleases", async () => { + + const MOCK_OCKTOKIT = { + + rest: { + + repos: { + + async listReleases(){ + + return { + + data: [ + + mockRelease({tag_name: "v1.0.2-pre", prerelease: true, created_at: "2013-02-25T19:35:32Z"}), + mockRelease({tag_name: "v2.0", prerelease: false, created_at: "2013-02-27T19:35:32Z"}), + mockRelease({tag_name: "v1.0.5-pre", prerelease: true, created_at: "2013-02-27T19:35:32Z"}), + mockRelease({tag_name: "v1.0.5-pre-1", prerelease: true, created_at: "2013-02-25T19:45:32Z"}), + mockRelease({tag_name: "v0.0.5-pre", prerelease: true, created_at: "2013-01-27T19:35:32Z"}), + + ] + } + + } + + } + + } + + } + + return ImagesCalculator({ + + action_type: "last_prerelease", + + }, MOCK_OCKTOKIT, true) + + .then(tag => expect(tag).toEqual("v1.0.5-pre_default")) + + .catch(e => console.error(e)) + + +}) + test('Images calculator works with filter for prereleases', () => { const MOCK_OCKTOKIT = { @@ -54,17 +98,17 @@ test('Images calculator works with filter for prereleases', () => { async listReleases(){ - return { + return { - data: [ + data: [ - mockRelease({tag_name: "v1.0.2-pre", prerelease: true, created_at: "2013-02-25T19:35:32Z"}), - mockRelease({tag_name: "v2.0", prerelease: false, created_at: "2013-02-27T19:35:32Z"}), - mockRelease({tag_name: "v1.0.5-pre", prerelease: true, created_at: "2013-02-27T19:35:32Z"}), - mockRelease({tag_name: "v0.0.5-pre", prerelease: true, created_at: "2013-01-27T19:35:32Z"}), + mockRelease({tag_name: "v1.0.2-pre", prerelease: true, created_at: "2013-02-25T19:35:32Z"}), + mockRelease({tag_name: "v2.0", prerelease: false, created_at: "2013-02-27T19:35:32Z"}), + mockRelease({tag_name: "v1.0.5-pre", prerelease: true, created_at: "2013-02-27T19:35:32Z"}), + mockRelease({tag_name: "v0.0.5-pre", prerelease: true, created_at: "2013-01-27T19:35:32Z"}), - ] - } + ] + } } @@ -75,15 +119,15 @@ test('Images calculator works with filter for prereleases', () => { } ImagesCalculator({ - + action_type: "last_prerelease_v1.0.x", - + }, MOCK_OCKTOKIT, true) - .then(tag => expect(tag === "v1.0.5-pre")) + .then(tag => expect(tag).toEqual("v1.0.5-pre_default")) + + .catch(e => console.error(e)) - .catch(e => console.error(e)) - }) test('Images calculator works with filter for releases', () => { @@ -96,18 +140,18 @@ test('Images calculator works with filter for releases', () => { async listReleases(){ - return { + return { - data: [ + data: [ - mockRelease({tag_name: "v2.1", prerelease: false, created_at: "2013-02-28T19:35:32Z"}), - mockRelease({tag_name: "v1.0.2-pre", prerelease: true, created_at: "2013-02-25T19:35:32Z"}), - mockRelease({tag_name: "v2.0", prerelease: false, created_at: "2013-02-27T19:35:32Z"}), - mockRelease({tag_name: "v1.0.5-pre", prerelease: true, created_at: "2013-02-27T19:35:32Z"}), - mockRelease({tag_name: "v0.0.5-pre", prerelease: true, created_at: "2013-01-27T19:35:32Z"}), + mockRelease({tag_name: "v2.1", prerelease: false, created_at: "2013-02-28T19:35:32Z"}), + mockRelease({tag_name: "v1.0.2-pre", prerelease: true, created_at: "2013-02-25T19:35:32Z"}), + mockRelease({tag_name: "v2.0", prerelease: false, created_at: "2013-02-27T19:35:32Z"}), + mockRelease({tag_name: "v1.0.5-pre", prerelease: true, created_at: "2013-02-27T19:35:32Z"}), + mockRelease({tag_name: "v0.0.5-pre", prerelease: true, created_at: "2013-01-27T19:35:32Z"}), - ] - } + ] + } } @@ -118,13 +162,13 @@ test('Images calculator works with filter for releases', () => { } ImagesCalculator({ - + action_type: "last_release_v2.x", - + }, MOCK_OCKTOKIT, true) - .then(tag => expect(tag === "v2.1")) + .then(tag => expect(tag).toEqual("v2.1_default")) + + .catch(e => console.error(e)) - .catch(e => console.error(e)) - }) diff --git a/utils/ImagesCalculator.js b/utils/ImagesCalculator.js index 54edf50..3cc5ea6 100644 --- a/utils/ImagesCalculator.js +++ b/utils/ImagesCalculator.js @@ -7,8 +7,8 @@ const FILTERED_PRERELEASE = new RegExp(/^last_prerelease_(\w+)/) // Utility function to escape special chars and compile into a RegExp dynamically function utilRegEscape(string) { - return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') -}; + return string.replace(/[-/^$*+?.()|[\]{}]/g, '\\$&') +} module.exports = async function({action_type, flavour="default"}, ctx, mock){ @@ -23,148 +23,151 @@ module.exports = async function({action_type, flavour="default"}, ctx, mock){ } - function __calculateImage(action_type, ctx, mock){ - - const octokit = (mock) ? ctx : github.getOctokit(ctx.github_token) - - switch(action_type){ - - case "last_prerelease": - return __last_prerelease(octokit, ctx) - case "last_release": - return __last_release(octokit, ctx) - default: - if(FILTERED_PRERELEASE.test(action_type)){ - return __last_prerelease_filtered(octokit, ctx, action_type) - } - else if(FILTERED_RELEASE.test(action_type)){ - return __last_release_filtered(octokit, ctx, action_type) - } - if(action_type.match(/^branch_/)){ - - return __last_branch_commit(action_type, octokit, ctx) - } - else{ - - return action_type - } - } - } - +function __calculateImage(action_type, ctx, mock){ - function __last_release(octokit, ctx){ + const octokit = (mock) ? ctx : github.getOctokit(ctx.github_token) - return octokit.rest.repos.getLatestRelease({ - - owner: ctx.owner, + switch(action_type){ - repo: ctx.repo + case "last_prerelease": + return __last_prerelease(octokit, ctx) + case "last_release": + return __last_release(octokit, ctx) + default: + if(FILTERED_PRERELEASE.test(action_type)){ + return __last_prerelease_filtered(octokit, ctx, action_type) + } + else if(FILTERED_RELEASE.test(action_type)){ + return __last_release_filtered(octokit, ctx, action_type) + } + if(action_type.match(/^branch_/)){ - }).then((r) => { - - return r.data.tag_name + return __last_branch_commit(action_type, octokit, ctx) + } + else{ - }) - + return action_type + } } +} - function __last_prerelease(octokit, ctx){ - return __getReleases(octokit, ctx) +function __last_release(octokit, ctx){ - .then(rr => rr.data.filter(r => r.prerelease)) // by prereleases + return octokit.rest.repos.getLatestRelease({ - .then(prereleases => __sortReleasesByTime(prereleases)[0]) // order by time (get the latest) + owner: ctx.owner, - .then(prerelease => prerelease ? prerelease.tag_name: name) // get the tag name + repo: ctx.repo - } + }).then((r) => { + + return r.data.tag_name - function __last_release_filtered(octokit, ctx, action_type){ + }) - // we prepare the filter - // is a regexp with the special part of .x replaced with .+ (any char) - // thus last_prerelease_1.x => /^1.\.+/ - const filter_reg = new RegExp('^' + utilRegEscape(action_type.replace(/last_release_/, '').replace(/x/, ''))) +} - return __getReleases(octokit, ctx) +function __last_prerelease(octokit, ctx){ - .then(rr => rr.data.filter(r => !r.prerelease)) // by prereleases - - // match the filter - .then((releases) => { + return __getReleases(octokit, ctx) - return releases.filter(r => filter_reg.test(r.tag_name)) + .then(rr => rr.data.filter(r => r.prerelease)) // by prereleases - }) + .then((prereleases) =>{ - .then(releases => __sortReleasesByTime(releases)[0]) // order by time (get the latest) + return __sortReleasesByTime(prereleases)[0] + }) // order by time (get the latest) - .then(release => release.tag_name) // get the tag name + .then(prerelease => prerelease ? prerelease.tag_name: null) // get the tag name - } +} - function __last_prerelease_filtered(octokit, ctx, action_type){ +function __last_release_filtered(octokit, ctx, action_type){ - // we prepare the filter - // is a regexp with the special part of .x replaced with .+ (any char) - // thus last_prerelease_1.x => /^1.\.+/ - const filter_reg = new RegExp('^' + utilRegEscape(action_type.replace(/last_prerelease_/, '').replace(/x/, ''))) + // we prepare the filter + // is a regexp with the special part of .x replaced with .+ (any char) + // thus last_prerelease_1.x => /^1.\.+/ + const filter_reg = new RegExp('^' + utilRegEscape(action_type.replace(/last_release_/, '').replace(/x/, ''))) - return __getReleases(octokit, ctx) + return __getReleases(octokit, ctx) - .then(rr => rr.data.filter(r => r.prerelease)) // by prereleases - - // match the filter - .then((prereleases) => { + .then(rr => rr.data.filter(r => !r.prerelease)) // by prereleases - return prereleases.filter(pr => filter_reg.test(pr.tag_name)) + // match the filter + .then((releases) => { - }) + return releases.filter(r => filter_reg.test(r.tag_name)) - .then(prereleases => __sortReleasesByTime(prereleases)[0]) // order by time (get the latest) + }) - .then(prerelease => prerelease.tag_name) // get the tag name - } + .then(releases => __sortReleasesByTime(releases)[0]) // order by time (get the latest) - function __getReleases(octokit, ctx){ + .then(release => release.tag_name) // get the tag name - return octokit.rest.repos.listReleases({ +} - owner: ctx.owner, +function __last_prerelease_filtered(octokit, ctx, action_type){ - repo: ctx.repo + // we prepare the filter + // is a regexp with the special part of .x replaced with .+ (any char) + // thus last_prerelease_1.x => /^1.\.+/ + const filter_reg = new RegExp('^' + utilRegEscape(action_type.replace(/last_prerelease_/, '').replace(/x/, ''))) - }) - } + return __getReleases(octokit, ctx) - function __sortReleasesByTime(releases){ + .then(rr => rr.data.filter(r => r.prerelease)) // by prereleases - return releases.sort((a, b) => { + // match the filter + .then((prereleases) => { - return Date.parse(a.created_at) <= Date.parse(b.created_at) + return prereleases.filter(pr => filter_reg.test(pr.tag_name)) }) - } + .then(prereleases => __sortReleasesByTime(prereleases)[0]) // order by time (get the latest) - function __last_branch_commit(branch, octokit, ctx){ + .then(prerelease => prerelease.tag_name) // get the tag name +} - return octokit.rest.repos.getBranch({ - - owner: ctx.owner, +function __getReleases(octokit, ctx){ - repo: ctx.repo, + return octokit.rest.repos.listReleases({ - branch: branch.replace(/^branch_/, "") - - }).then((b) => { - - // - // we only use the first 8 chars of the commit's SHA for tagging - // - return b.data.commit.sha.substring(0, 7) + owner: ctx.owner, - }) + repo: ctx.repo - } + }) +} + +function __sortReleasesByTime(releases){ + + return releases.sort((a, b) => { + + return Date.parse(a.created_at) <= Date.parse(b.created_at) ? 1 : -1 + + }) + +} + +function __last_branch_commit(branch, octokit, ctx){ + + return octokit.rest.repos.getBranch({ + + owner: ctx.owner, + + repo: ctx.repo, + + branch: branch.replace(/^branch_/, "") + + }).then((b) => { + + // + // we only use the first 8 chars of the commit's SHA for tagging + // + return b.data.commit.sha.substring(0, 7) + + }) + +} From 901e0915d0d9fa03dbbfafbb6c179fec95ba0fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Maseda=20Mui=C3=B1o?= Date: Fri, 18 Nov 2022 11:50:53 +0000 Subject: [PATCH 4/6] Add new validator for filters --- utils/ImagesCalculator.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/utils/ImagesCalculator.js b/utils/ImagesCalculator.js index 3cc5ea6..0b40668 100644 --- a/utils/ImagesCalculator.js +++ b/utils/ImagesCalculator.js @@ -5,6 +5,11 @@ const FILTERED_RELEASE = new RegExp(/^last_release_(\w+)/) const FILTERED_PRERELEASE = new RegExp(/^last_prerelease_(\w+)/) +// is the action a filter? +function isFilteredReleaseOrPrerelease(action_type){ + return new RegExp(/^(last_release_|last_prerelease_)/).test(action_type) +} + // Utility function to escape special chars and compile into a RegExp dynamically function utilRegEscape(string) { return string.replace(/[-/^$*+?.()|[\]{}]/g, '\\$&') @@ -31,14 +36,21 @@ function __calculateImage(action_type, ctx, mock){ case "last_prerelease": return __last_prerelease(octokit, ctx) + case "last_release": return __last_release(octokit, ctx) + default: - if(FILTERED_PRERELEASE.test(action_type)){ - return __last_prerelease_filtered(octokit, ctx, action_type) - } - else if(FILTERED_RELEASE.test(action_type)){ - return __last_release_filtered(octokit, ctx, action_type) + if(isFilteredReleaseOrPrerelease(action_type)){ + if(FILTERED_PRERELEASE.test(action_type)){ + return __last_prerelease_filtered(octokit, ctx, action_type) + } + else if(FILTERED_RELEASE.test(action_type)){ + return __last_release_filtered(octokit, ctx, action_type) + } + else{ + throw `Syntax error on action_type: ${action_type}` + } } if(action_type.match(/^branch_/)){ From e9423f3d559f15ede112bd4244e366141e8f86be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Maseda=20Mui=C3=B1o?= Date: Fri, 18 Nov 2022 12:06:01 +0000 Subject: [PATCH 5/6] Make regexp more restrictive --- utils/ImagesCalculator.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/ImagesCalculator.js b/utils/ImagesCalculator.js index 0b40668..954b39b 100644 --- a/utils/ImagesCalculator.js +++ b/utils/ImagesCalculator.js @@ -1,9 +1,9 @@ const github = require("@actions/github") // String regexps -const FILTERED_RELEASE = new RegExp(/^last_release_(\w+)/) +const FILTERED_RELEASE = new RegExp(/^last_release_(v)?\d+\.([\d\.-\w])*x/) -const FILTERED_PRERELEASE = new RegExp(/^last_prerelease_(\w+)/) +const FILTERED_PRERELEASE = new RegExp(/^last_prerelease_(v)?\d+\.([\d\.-\w])*x/) // is the action a filter? function isFilteredReleaseOrPrerelease(action_type){ From 4e26b67b3cf490eca9f8f72ef98dfc7962882f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Maseda=20Mui=C3=B1o?= Date: Fri, 18 Nov 2022 12:09:34 +0000 Subject: [PATCH 6/6] Fix lintering problems --- utils/ImagesCalculator.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/ImagesCalculator.js b/utils/ImagesCalculator.js index 954b39b..470a109 100644 --- a/utils/ImagesCalculator.js +++ b/utils/ImagesCalculator.js @@ -1,9 +1,9 @@ const github = require("@actions/github") // String regexps -const FILTERED_RELEASE = new RegExp(/^last_release_(v)?\d+\.([\d\.-\w])*x/) +const FILTERED_RELEASE = new RegExp(/^last_release_(v)?\d+\.([\d.-\w])*x/) -const FILTERED_PRERELEASE = new RegExp(/^last_prerelease_(v)?\d+\.([\d\.-\w])*x/) +const FILTERED_PRERELEASE = new RegExp(/^last_prerelease_(v)?\d+\.([\d.-\w])*x/) // is the action a filter? function isFilteredReleaseOrPrerelease(action_type){