actions-up 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,20 +49,76 @@ async function checkUpdates(actions, token) {
49
49
  let stableRelease = allReleases.find((currentRelease) => !currentRelease.isPrerelease);
50
50
  release = stableRelease ?? allReleases[0] ?? null;
51
51
  }
52
- if (!release) {
53
- let tags = await client.getAllTags(owner, repo, 30);
54
- if (tags.length > 0) {
55
- let semverTag = tags.find((tag) => /^v?\d+(?:\.\d+){0,2}/u.test(tag.tag));
56
- let latestTag = semverTag ?? tags[0];
57
- if (latestTag) return [...results, {
58
- version: latestTag.tag,
59
- sha: latestTag.sha,
60
- actionName
61
- }];
62
- }
63
- }
64
52
  if (release) {
65
53
  let { version, sha } = release;
54
+ let considerTags = false;
55
+ {
56
+ let normalized = normalizeVersion(version);
57
+ let hasVersion = Boolean(version && version.trim() !== "");
58
+ let majorOnly = hasVersion && /^v?\d+$/u.test(version.trim());
59
+ let valid = semver.valid(normalized);
60
+ considerTags = !hasVersion || majorOnly || !valid;
61
+ }
62
+ if (considerTags) {
63
+ let tags$1 = await client.getAllTags(owner, repo, 30);
64
+ if (tags$1.length > 0) {
65
+ let semverCandidates = tags$1.filter((tag) => isSemverLike(tag.tag)).map((tag) => ({
66
+ v: semver.valid(normalizeVersion(tag.tag)),
67
+ raw: tag
68
+ }));
69
+ if (semverCandidates.length > 0) {
70
+ semverCandidates.sort((a, b) => {
71
+ let cmp = semver.rcompare(a.v, b.v);
72
+ if (cmp !== 0) return cmp;
73
+ let aSpecific = /\d+\.\d+/u.test(a.raw.tag) ? 1 : 0;
74
+ let bSpecific = /\d+\.\d+/u.test(b.raw.tag) ? 1 : 0;
75
+ return bSpecific - aSpecific;
76
+ });
77
+ let best = semverCandidates[0].raw;
78
+ let releaseSem = semver.valid(normalizeVersion(version) ?? void 0);
79
+ if (!releaseSem || semver.gt(semverCandidates[0].v, releaseSem) || semver.eq(semverCandidates[0].v, releaseSem) && /\d+\.\d+/u.test(best.tag)) {
80
+ let tagVersion = best.tag;
81
+ let tagSha = best.sha?.length ? best.sha : null;
82
+ if (!tagSha && tagVersion) try {
83
+ tagSha = await client.getTagSha(owner, repo, tagVersion);
84
+ } catch {}
85
+ return [...results, {
86
+ version: tagVersion,
87
+ sha: tagSha,
88
+ actionName
89
+ }];
90
+ }
91
+ }
92
+ }
93
+ }
94
+ if (!sha && version) try {
95
+ sha = await client.getTagSha(owner, repo, version);
96
+ } catch {}
97
+ return [...results, {
98
+ actionName,
99
+ version,
100
+ sha
101
+ }];
102
+ }
103
+ let tags = await client.getAllTags(owner, repo, 30);
104
+ if (tags.length > 0) {
105
+ let semverCandidates = tags.filter((tag) => isSemverLike(tag.tag)).map((tag) => ({
106
+ v: semver.valid(normalizeVersion(tag.tag)),
107
+ raw: tag
108
+ }));
109
+ let best;
110
+ if (semverCandidates.length > 0) {
111
+ semverCandidates.sort((a, b) => {
112
+ let cmp = semver.rcompare(a.v, b.v);
113
+ if (cmp !== 0) return cmp;
114
+ let aSpecific = /\d+\.\d+/u.test(a.raw.tag) ? 1 : 0;
115
+ let bSpecific = /\d+\.\d+/u.test(b.raw.tag) ? 1 : 0;
116
+ return bSpecific - aSpecific;
117
+ });
118
+ best = semverCandidates[0].raw;
119
+ } else best = tags[0];
120
+ let version = best.tag;
121
+ let sha = best.sha?.length ? best.sha : null;
66
122
  if (!sha && version) try {
67
123
  sha = await client.getTagSha(owner, repo, version);
68
124
  } catch {}
package/dist/package.js CHANGED
@@ -1,2 +1,2 @@
1
- const version = "1.3.0";
1
+ const version = "1.3.1";
2
2
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "actions-up",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Interactive CLI tool to update GitHub Actions to latest versions with SHA pinning",
5
5
  "keywords": [
6
6
  "github-actions",