renovate 44.83.3 → 44.85.0
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.
- package/dist/config/presets/forgejo/index.js +3 -2
- package/dist/config/presets/forgejo/index.js.map +1 -1
- package/dist/config/presets/gitea/index.js +10 -3
- package/dist/config/presets/gitea/index.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/github-actions/extract.js +1 -33
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/github-actions/{community.js → known-actions.js} +62 -5
- package/dist/modules/manager/github-actions/known-actions.js.map +1 -0
- package/dist/modules/manager/github-actions/schema.js +2 -2
- package/dist/modules/manager/github-actions/schema.js.map +1 -1
- package/dist/modules/platform/api.js +6 -6
- package/dist/modules/platform/forgejo/index.js +21 -587
- package/dist/modules/platform/forgejo/index.js.map +1 -1
- package/dist/modules/platform/gitea/gitea-helper.js +90 -74
- package/dist/modules/platform/gitea/gitea-helper.js.map +1 -1
- package/dist/modules/platform/gitea/index.js +561 -529
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/gitea/labels.js +42 -0
- package/dist/modules/platform/gitea/labels.js.map +1 -0
- package/dist/modules/platform/gitea/pr-cache.js +66 -28
- package/dist/modules/platform/gitea/pr-cache.js.map +1 -1
- package/dist/modules/platform/gitea/schema.js +141 -5
- package/dist/modules/platform/gitea/schema.js.map +1 -1
- package/dist/modules/platform/gitea/utils.js +10 -8
- package/dist/modules/platform/gitea/utils.js.map +1 -1
- package/dist/util/cache/repository/types.d.ts +13 -8
- package/dist/util/http/forgejo.js +6 -35
- package/dist/util/http/forgejo.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/forgejo/index.js +1 -1
- package/dist/workers/repository/update/pr/changelog/forgejo/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/gitea/index.js +3 -3
- package/dist/workers/repository/update/pr/changelog/gitea/index.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
- package/dist/modules/manager/github-actions/community.js.map +0 -1
- package/dist/modules/platform/forgejo/forgejo-helper.js +0 -235
- package/dist/modules/platform/forgejo/forgejo-helper.js.map +0 -1
- package/dist/modules/platform/forgejo/pr-cache.js +0 -114
- package/dist/modules/platform/forgejo/pr-cache.js.map +0 -1
- package/dist/modules/platform/forgejo/schema.js +0 -149
- package/dist/modules/platform/forgejo/schema.js.map +0 -1
- package/dist/modules/platform/forgejo/utils.js +0 -115
- package/dist/modules/platform/forgejo/utils.js.map +0 -1
|
@@ -1,13 +1,149 @@
|
|
|
1
|
+
import { fromBase64 } from "../../../util/string.js";
|
|
2
|
+
import { DeepNullish, EmailAddress, LooseArray } from "../../../util/schema-utils/index.js";
|
|
3
|
+
import { LongCommitSha } from "../../../util/schema-utils/git.js";
|
|
1
4
|
import { z } from "zod/v4";
|
|
2
5
|
//#region lib/modules/platform/gitea/schema.ts
|
|
3
|
-
const
|
|
6
|
+
const ContentsCommon = z.object({
|
|
4
7
|
name: z.string(),
|
|
5
|
-
path: z.string()
|
|
6
|
-
|
|
8
|
+
path: z.string()
|
|
9
|
+
});
|
|
10
|
+
const ContentsFile = ContentsCommon.extend({
|
|
11
|
+
type: z.literal("file"),
|
|
7
12
|
content: z.string().nullable()
|
|
13
|
+
}).transform((input) => ({
|
|
14
|
+
...input,
|
|
15
|
+
contentString: input.content ? fromBase64(input.content) : ""
|
|
16
|
+
}));
|
|
17
|
+
const ContentsDir = ContentsCommon.extend({ type: z.literal("dir") });
|
|
18
|
+
const ContentsSymlink = ContentsCommon.extend({ type: z.literal("symlink") });
|
|
19
|
+
const ContentsSubmodule = ContentsCommon.extend({ type: z.literal("submodule") });
|
|
20
|
+
const RepoContents = z.discriminatedUnion("type", [
|
|
21
|
+
ContentsFile,
|
|
22
|
+
ContentsDir,
|
|
23
|
+
ContentsSymlink,
|
|
24
|
+
ContentsSubmodule
|
|
25
|
+
]);
|
|
26
|
+
const ContentsListResponse = z.array(RepoContents);
|
|
27
|
+
const User = DeepNullish(z.object({
|
|
28
|
+
id: z.number(),
|
|
29
|
+
email: EmailAddress.optional().catch(void 0),
|
|
30
|
+
full_name: z.string().optional(),
|
|
31
|
+
login: z.string()
|
|
32
|
+
}));
|
|
33
|
+
const RepoPermission = z.object({
|
|
34
|
+
admin: z.boolean(),
|
|
35
|
+
pull: z.boolean(),
|
|
36
|
+
push: z.boolean()
|
|
37
|
+
});
|
|
38
|
+
const PRMergeMethod = z.enum([
|
|
39
|
+
"fast-forward-only",
|
|
40
|
+
"merge",
|
|
41
|
+
"rebase",
|
|
42
|
+
"rebase-merge",
|
|
43
|
+
"squash"
|
|
44
|
+
]);
|
|
45
|
+
const Repo = DeepNullish(z.object({
|
|
46
|
+
id: z.number(),
|
|
47
|
+
allow_fast_forward_only_merge: z.boolean().default(false),
|
|
48
|
+
allow_merge_commits: z.boolean().default(false),
|
|
49
|
+
allow_rebase: z.boolean().default(false),
|
|
50
|
+
allow_rebase_explicit: z.boolean().default(false),
|
|
51
|
+
allow_squash_merge: z.boolean().default(false),
|
|
52
|
+
archived: z.boolean().optional(),
|
|
53
|
+
clone_url: z.string().optional(),
|
|
54
|
+
default_merge_style: PRMergeMethod.optional().catch(void 0),
|
|
55
|
+
external_tracker: z.unknown().optional(),
|
|
56
|
+
has_issues: z.boolean().optional().default(false),
|
|
57
|
+
has_pull_requests: z.boolean().optional(),
|
|
58
|
+
ssh_url: z.string().optional(),
|
|
59
|
+
default_branch: z.string(),
|
|
60
|
+
empty: z.boolean().optional(),
|
|
61
|
+
fork: z.boolean().optional(),
|
|
62
|
+
full_name: z.string(),
|
|
63
|
+
mirror: z.boolean().optional(),
|
|
64
|
+
owner: User,
|
|
65
|
+
permissions: RepoPermission
|
|
66
|
+
}));
|
|
67
|
+
const Label = DeepNullish(z.object({
|
|
68
|
+
id: z.number(),
|
|
69
|
+
name: z.string(),
|
|
70
|
+
description: z.string().optional(),
|
|
71
|
+
color: z.string().optional()
|
|
72
|
+
}));
|
|
73
|
+
const PRState = z.enum([
|
|
74
|
+
"open",
|
|
75
|
+
"closed",
|
|
76
|
+
"all"
|
|
77
|
+
]);
|
|
78
|
+
const IssueState = z.enum([
|
|
79
|
+
"open",
|
|
80
|
+
"closed",
|
|
81
|
+
"all"
|
|
82
|
+
]);
|
|
83
|
+
const PartialRepo = z.object({ full_name: z.string() });
|
|
84
|
+
const PR = DeepNullish(z.object({
|
|
85
|
+
number: z.number(),
|
|
86
|
+
state: PRState,
|
|
87
|
+
title: z.string(),
|
|
88
|
+
body: z.string(),
|
|
89
|
+
mergeable: z.boolean(),
|
|
90
|
+
merged: z.boolean().optional(),
|
|
91
|
+
created_at: z.string(),
|
|
92
|
+
updated_at: z.string(),
|
|
93
|
+
closed_at: z.string().optional(),
|
|
94
|
+
diff_url: z.string().optional(),
|
|
95
|
+
base: z.object({ ref: z.string() }).optional(),
|
|
96
|
+
head: z.object({
|
|
97
|
+
label: z.string(),
|
|
98
|
+
sha: LongCommitSha,
|
|
99
|
+
repo: PartialRepo.optional()
|
|
100
|
+
}).optional(),
|
|
101
|
+
assignee: User.optional(),
|
|
102
|
+
assignees: z.array(User).optional(),
|
|
103
|
+
user: User.optional(),
|
|
104
|
+
labels: z.array(Label).optional()
|
|
105
|
+
}));
|
|
106
|
+
const NullablePR = PR.nullable();
|
|
107
|
+
const PRList = LooseArray(NullablePR);
|
|
108
|
+
const Issue = DeepNullish(z.object({
|
|
109
|
+
number: z.number(),
|
|
110
|
+
state: IssueState.optional(),
|
|
111
|
+
title: z.string(),
|
|
112
|
+
body: z.string(),
|
|
113
|
+
assignees: z.array(User).optional(),
|
|
114
|
+
labels: z.array(Label).optional()
|
|
115
|
+
}));
|
|
116
|
+
const Comment = z.object({
|
|
117
|
+
id: z.number(),
|
|
118
|
+
body: z.string()
|
|
119
|
+
});
|
|
120
|
+
const CommitStatusType = z.enum([
|
|
121
|
+
"pending",
|
|
122
|
+
"success",
|
|
123
|
+
"error",
|
|
124
|
+
"failure",
|
|
125
|
+
"warning",
|
|
126
|
+
"unknown"
|
|
127
|
+
]).catch("unknown");
|
|
128
|
+
const CommitStatus = DeepNullish(z.object({
|
|
129
|
+
id: z.number(),
|
|
130
|
+
status: CommitStatusType,
|
|
131
|
+
context: z.string(),
|
|
132
|
+
description: z.string().optional(),
|
|
133
|
+
target_url: z.string().optional(),
|
|
134
|
+
created_at: z.string()
|
|
135
|
+
}));
|
|
136
|
+
const Commit = z.object({ id: z.string() });
|
|
137
|
+
z.object({
|
|
138
|
+
name: z.string(),
|
|
139
|
+
commit: Commit
|
|
140
|
+
});
|
|
141
|
+
const RepoSearchResults = z.object({
|
|
142
|
+
ok: z.boolean(),
|
|
143
|
+
data: z.array(Repo)
|
|
8
144
|
});
|
|
9
|
-
const
|
|
145
|
+
const Version = z.object({ version: z.string() });
|
|
10
146
|
//#endregion
|
|
11
|
-
export { ContentsListResponse,
|
|
147
|
+
export { Comment, Commit, CommitStatus, CommitStatusType, ContentsListResponse, Issue, IssueState, Label, NullablePR, PR, PRList, PRMergeMethod, PRState, Repo, RepoContents, RepoPermission, RepoSearchResults, User, Version };
|
|
12
148
|
|
|
13
149
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/platform/gitea/schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\
|
|
1
|
+
{"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/platform/gitea/schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { LongCommitSha } from '../../../util/schema-utils/git.ts';\nimport {\n DeepNullish,\n EmailAddress,\n LooseArray,\n} from '../../../util/schema-utils/index.ts';\nimport { fromBase64 } from '../../../util/string.ts';\n\nconst ContentsCommon = z.object({\n name: z.string(),\n path: z.string(),\n});\n\nconst ContentsFile = ContentsCommon.extend({\n type: z.literal('file'),\n content: z.string().nullable(),\n}).transform((input) => ({\n ...input,\n contentString: input.content ? fromBase64(input.content) : '',\n}));\n\nconst ContentsDir = ContentsCommon.extend({ type: z.literal('dir') });\nconst ContentsSymlink = ContentsCommon.extend({ type: z.literal('symlink') });\nconst ContentsSubmodule = ContentsCommon.extend({\n type: z.literal('submodule'),\n});\n\nexport const RepoContents = z.discriminatedUnion('type', [\n ContentsFile,\n ContentsDir,\n ContentsSymlink,\n ContentsSubmodule,\n]);\nexport type RepoContents = z.infer<typeof RepoContents>;\n\nexport const ContentsListResponse = z.array(RepoContents);\n\nexport const User = DeepNullish(\n z.object({\n id: z.number(),\n // catch empty strings which are returned if an organization has no email\n email: EmailAddress.optional().catch(undefined),\n full_name: z.string().optional(),\n login: z.string(),\n }),\n);\nexport type User = z.infer<typeof User>;\n\nexport const RepoPermission = z.object({\n admin: z.boolean(),\n pull: z.boolean(),\n push: z.boolean(),\n});\nexport type RepoPermission = z.infer<typeof RepoPermission>;\n\nexport const PRMergeMethod = z.enum([\n 'fast-forward-only',\n 'merge',\n 'rebase',\n 'rebase-merge',\n 'squash',\n]);\nexport type PRMergeMethod = z.infer<typeof PRMergeMethod>;\n\n// Lenient Repo schema - only validates fields Renovate reads, most are optional\nexport const Repo = DeepNullish(\n z.object({\n id: z.number(),\n allow_fast_forward_only_merge: z.boolean().default(false),\n allow_merge_commits: z.boolean().default(false),\n allow_rebase: z.boolean().default(false),\n allow_rebase_explicit: z.boolean().default(false),\n allow_squash_merge: z.boolean().default(false),\n archived: z.boolean().optional(),\n clone_url: z.string().optional(),\n // catch unknown merge methods e.g. `manually-merged`\n default_merge_style: PRMergeMethod.optional().catch(undefined),\n external_tracker: z.unknown().optional(),\n has_issues: z.boolean().optional().default(false),\n has_pull_requests: z.boolean().optional(),\n ssh_url: z.string().optional(),\n default_branch: z.string(),\n empty: z.boolean().optional(),\n fork: z.boolean().optional(),\n full_name: z.string(),\n mirror: z.boolean().optional(),\n owner: User,\n permissions: RepoPermission,\n }),\n);\nexport type Repo = z.infer<typeof Repo>;\n\nexport const Label = DeepNullish(\n z.object({\n id: z.number(),\n name: z.string(),\n description: z.string().optional(),\n color: z.string().optional(),\n }),\n);\nexport type Label = z.infer<typeof Label>;\n\nexport const PRState = z.enum(['open', 'closed', 'all']);\nexport type PRState = z.infer<typeof PRState>;\n\nexport const IssueState = z.enum(['open', 'closed', 'all']);\nexport type IssueState = z.infer<typeof IssueState>;\n\n// Lenient partial repo schema for embedded repo references in PRs (only full_name is read)\nconst PartialRepo = z.object({\n full_name: z.string(),\n});\n\nexport const PR = DeepNullish(\n z.object({\n number: z.number(),\n state: PRState,\n title: z.string(),\n body: z.string(),\n mergeable: z.boolean(),\n merged: z.boolean().optional(),\n created_at: z.string(),\n updated_at: z.string(),\n closed_at: z.string().optional(),\n diff_url: z.string().optional(),\n base: z\n .object({\n ref: z.string(),\n })\n .optional(),\n head: z\n .object({\n label: z.string(),\n sha: LongCommitSha,\n repo: PartialRepo.optional(),\n })\n .optional(),\n assignee: User.optional(),\n assignees: z.array(User).optional(),\n user: User.optional(),\n labels: z.array(Label).optional(),\n }),\n);\nexport type PR = z.infer<typeof PR>;\n\n// TODO remove when the TEMPORARY_ERROR in pr-cache.ts is no longer needed\nexport const NullablePR = PR.nullable();\n\nexport const PRList = LooseArray(NullablePR);\n\nexport const Issue = DeepNullish(\n z.object({\n number: z.number(),\n state: IssueState.optional(),\n title: z.string(),\n body: z.string(),\n assignees: z.array(User).optional(),\n labels: z.array(Label).optional(),\n }),\n);\nexport type Issue = z.infer<typeof Issue>;\n\nexport const Comment = z.object({\n id: z.number(),\n body: z.string(),\n});\nexport type Comment = z.infer<typeof Comment>;\n\nexport const CommitStatusType = z\n .enum(['pending', 'success', 'error', 'failure', 'warning', 'unknown'])\n .catch('unknown');\nexport type CommitStatusType = z.infer<typeof CommitStatusType>;\n\nexport const CommitStatus = DeepNullish(\n z.object({\n id: z.number(),\n status: CommitStatusType,\n context: z.string(),\n description: z.string().optional(),\n target_url: z.string().optional(),\n created_at: z.string(),\n }),\n);\nexport type CommitStatus = z.infer<typeof CommitStatus>;\n\nexport const Commit = z.object({\n id: z.string(),\n});\nexport type Commit = z.infer<typeof Commit>;\n\nexport const Branch = z.object({\n name: z.string(),\n commit: Commit,\n});\nexport type Branch = z.infer<typeof Branch>;\n\nexport const RepoSearchResults = z.object({\n ok: z.boolean(),\n data: z.array(Repo),\n});\n\nexport const Version = z.object({\n version: z.string(),\n});\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CONFIG_GIT_URL_UNAVAILABLE
|
|
1
|
+
import { CONFIG_GIT_URL_UNAVAILABLE } from "../../../constants/error-messages.js";
|
|
2
2
|
import { regEx } from "../../../util/regex.js";
|
|
3
3
|
import { coerceArray } from "../../../util/array.js";
|
|
4
4
|
import { logger } from "../../../logger/index.js";
|
|
@@ -13,14 +13,14 @@ function smartLinks(body) {
|
|
|
13
13
|
function trimTrailingApiPath(url) {
|
|
14
14
|
return url?.replace(regEx(/api\/v1\/?$/g), "");
|
|
15
15
|
}
|
|
16
|
-
function getRepoUrl(repo, gitUrl, endpoint) {
|
|
16
|
+
function getRepoUrl(repo, gitUrl, endpoint, hostType) {
|
|
17
17
|
if (gitUrl === "ssh") {
|
|
18
18
|
if (!repo.ssh_url) throw new Error(CONFIG_GIT_URL_UNAVAILABLE);
|
|
19
19
|
logger.debug(`Using SSH URL: ${repo.ssh_url}`);
|
|
20
20
|
return repo.ssh_url;
|
|
21
21
|
}
|
|
22
22
|
const opts = find({
|
|
23
|
-
hostType
|
|
23
|
+
hostType,
|
|
24
24
|
url: endpoint
|
|
25
25
|
});
|
|
26
26
|
if (gitUrl === "endpoint") {
|
|
@@ -48,10 +48,14 @@ function getMergeMethod(strategy) {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
const API_PATH = "/api/v1";
|
|
51
|
+
/** Human readable name of each platform, used in log messages. */
|
|
52
|
+
const platformDisplayName = {
|
|
53
|
+
gitea: "Gitea",
|
|
54
|
+
forgejo: "Forgejo"
|
|
55
|
+
};
|
|
51
56
|
const DRAFT_PREFIX = "WIP: ";
|
|
52
57
|
const reconfigurePrRegex = regEx(/reconfigure$/);
|
|
53
58
|
function toRenovatePR(data, author) {
|
|
54
|
-
if (!data) return null;
|
|
55
59
|
if (!data.base?.ref || !data.head?.label || !data.head?.sha || !data.head?.repo?.full_name) {
|
|
56
60
|
logger.trace(`Skipping Pull Request #${data.number} due to missing base and/or head branch`);
|
|
57
61
|
return null;
|
|
@@ -65,7 +69,7 @@ function toRenovatePR(data, author) {
|
|
|
65
69
|
isDraft = true;
|
|
66
70
|
}
|
|
67
71
|
return {
|
|
68
|
-
labels: coerceArray(data
|
|
72
|
+
labels: coerceArray(data.labels).map((l) => l.name),
|
|
69
73
|
number: data.number,
|
|
70
74
|
state: data.merged ? "merged" : data.state,
|
|
71
75
|
title,
|
|
@@ -109,10 +113,8 @@ function isAllowed(style, repo) {
|
|
|
109
113
|
case "squash": return repo.allow_squash_merge;
|
|
110
114
|
case "fast-forward-only": return repo.allow_fast_forward_only_merge;
|
|
111
115
|
}
|
|
112
|
-
logger.debug("Repo has unknown merge style - aborting renovation");
|
|
113
|
-
throw new Error(REPOSITORY_BLOCKED);
|
|
114
116
|
}
|
|
115
117
|
//#endregion
|
|
116
|
-
export { API_PATH, DRAFT_PREFIX, getMergeMethod, getRepoUrl, isAllowed, smartLinks, toRenovatePR, trimTrailingApiPath, usableRepo };
|
|
118
|
+
export { API_PATH, DRAFT_PREFIX, getMergeMethod, getRepoUrl, isAllowed, platformDisplayName, smartLinks, toRenovatePR, trimTrailingApiPath, usableRepo };
|
|
117
119
|
|
|
118
120
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["hostRules.find"],"sources":["../../../../lib/modules/platform/gitea/utils.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport type { MergeStrategy } from '../../../config/types.ts';\nimport {
|
|
1
|
+
{"version":3,"file":"utils.js","names":["hostRules.find"],"sources":["../../../../lib/modules/platform/gitea/utils.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport type { MergeStrategy } from '../../../config/types.ts';\nimport { CONFIG_GIT_URL_UNAVAILABLE } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport { getPrBodyStruct } from '../pr-body.ts';\nimport type { GitUrlOption, Pr } from '../types.ts';\nimport type { PR, PRMergeMethod, Repo } from './schema.ts';\nimport type { GiteaPlatformKey } from './types.ts';\n\nexport function smartLinks(body: string): string {\n return body\n ?.replace(regEx(/\\]\\(\\.\\.\\/issues\\//g), '](issues/')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](pulls/');\n}\n\nexport function trimTrailingApiPath(url: string): string {\n return url?.replace(regEx(/api\\/v1\\/?$/g), '');\n}\n\nexport function getRepoUrl(\n repo: Repo,\n gitUrl: GitUrlOption | undefined,\n endpoint: string,\n hostType: string,\n): string {\n if (gitUrl === 'ssh') {\n if (!repo.ssh_url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n logger.debug(`Using SSH URL: ${repo.ssh_url}`);\n return repo.ssh_url;\n }\n\n // Find options for current host and determine Git endpoint\n const opts = hostRules.find({\n hostType,\n url: endpoint,\n });\n\n if (gitUrl === 'endpoint') {\n const url = parseUrl(endpoint);\n if (!url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n url.username = opts.token ?? '';\n url.pathname = `${url.pathname}${repo.full_name}.git`;\n logger.debug(\n { url: url.toString() },\n 'using URL based on configured endpoint',\n );\n return url.toString();\n }\n\n if (!repo.clone_url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n\n logger.debug(`Using HTTP URL: ${repo.clone_url}`);\n const repoUrl = parseUrl(repo.clone_url);\n if (!repoUrl) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n repoUrl.username = opts.token ?? '';\n return repoUrl.toString();\n}\n\nexport function getMergeMethod(\n strategy: MergeStrategy | undefined,\n): PRMergeMethod | null {\n switch (strategy) {\n case 'fast-forward':\n return 'rebase';\n case 'merge-commit':\n return 'merge';\n case 'rebase':\n return 'rebase-merge';\n case 'squash':\n return strategy;\n case 'auto':\n default:\n return null;\n }\n}\n\nexport const API_PATH = '/api/v1';\n\n/** Human readable name of each platform, used in log messages. */\nexport const platformDisplayName = {\n gitea: 'Gitea',\n forgejo: 'Forgejo',\n} as const satisfies Record<GiteaPlatformKey, string>;\n\nexport const DRAFT_PREFIX = 'WIP: ';\nconst reconfigurePrRegex = regEx(/reconfigure$/);\n\nexport function toRenovatePR(data: PR, author: string | null): Pr | null {\n if (\n !data.base?.ref ||\n !data.head?.label ||\n !data.head?.sha ||\n !data.head?.repo?.full_name\n ) {\n logger.trace(\n `Skipping Pull Request #${data.number} due to missing base and/or head branch`,\n );\n return null;\n }\n\n const createdBy = data.user?.login;\n if (\n createdBy &&\n author &&\n !reconfigurePrRegex.test(data.head.label) &&\n createdBy !== author\n ) {\n return null;\n }\n\n let title = data.title;\n let isDraft = false;\n if (title.startsWith(DRAFT_PREFIX)) {\n title = title.substring(DRAFT_PREFIX.length);\n isDraft = true;\n }\n const labels = coerceArray(data.labels).map((l) => l.name);\n\n return {\n labels,\n number: data.number,\n state: data.merged ? 'merged' : data.state,\n title,\n isDraft,\n bodyStruct: getPrBodyStruct(data.body),\n sha: data.head.sha,\n sourceBranch: data.head.label,\n targetBranch: data.base.ref,\n sourceRepo: data.head.repo.full_name,\n createdAt: data.created_at,\n cannotMergeReason: data.mergeable\n ? undefined\n : `pr.mergeable=\"${data.mergeable}\"`,\n hasAssignees: !!(data.assignee?.login ?? isNonEmptyArray(data.assignees)),\n };\n}\n\n/**\n * Check if a repository is usable.\n * A repo isn't usable if one of the following conditions is met:\n * - The repo is a `mirror`\n * - We don't have pull or push permissions\n * - Pull requests are disabled\n * @param repo Repo to check\n * @returns `true` if the repository is usable, `false` otherwise\n */\nexport function usableRepo(repo: Repo): boolean {\n if (repo.mirror === true) {\n return false;\n }\n\n if (repo.permissions.pull === false || repo.permissions.push === false) {\n logger.debug(\n `Skipping repository ${repo.full_name} because of missing pull or push permissions`,\n );\n return false;\n }\n\n if (repo.has_pull_requests === false) {\n logger.debug(\n `Skipping repository ${repo.full_name} because pull requests are disabled`,\n );\n return false;\n }\n return true;\n}\n\nexport function isAllowed(style: PRMergeMethod, repo: Repo): boolean {\n switch (style) {\n case 'merge':\n return repo.allow_merge_commits;\n case 'rebase':\n return repo.allow_rebase;\n case 'rebase-merge':\n return repo.allow_rebase_explicit;\n case 'squash':\n return repo.allow_squash_merge;\n case 'fast-forward-only':\n return repo.allow_fast_forward_only_merge;\n }\n}\n"],"mappings":";;;;;;;;;AAaA,SAAgB,WAAW,MAAsB;CAC/C,OAAO,MACH,QAAQ,MAAM,qBAAqB,GAAG,WAAW,CAAC,CACnD,QAAQ,MAAM,mBAAmB,GAAG,UAAU;AACnD;AAEA,SAAgB,oBAAoB,KAAqB;CACvD,OAAO,KAAK,QAAQ,MAAM,cAAc,GAAG,EAAE;AAC/C;AAEA,SAAgB,WACd,MACA,QACA,UACA,UACQ;CACR,IAAI,WAAW,OAAO;EACpB,IAAI,CAAC,KAAK,SACR,MAAM,IAAI,MAAM,0BAA0B;EAE5C,OAAO,MAAM,kBAAkB,KAAK,SAAS;EAC7C,OAAO,KAAK;CACd;CAGA,MAAM,OAAOA,KAAe;EAC1B;EACA,KAAK;CACP,CAAC;CAED,IAAI,WAAW,YAAY;EACzB,MAAM,MAAM,SAAS,QAAQ;EAC7B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,0BAA0B;EAE5C,IAAI,WAAW,KAAK,SAAS;EAC7B,IAAI,WAAW,GAAG,IAAI,WAAW,KAAK,UAAU;EAChD,OAAO,MACL,EAAE,KAAK,IAAI,SAAS,EAAE,GACtB,wCACF;EACA,OAAO,IAAI,SAAS;CACtB;CAEA,IAAI,CAAC,KAAK,WACR,MAAM,IAAI,MAAM,0BAA0B;CAG5C,OAAO,MAAM,mBAAmB,KAAK,WAAW;CAChD,MAAM,UAAU,SAAS,KAAK,SAAS;CACvC,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,0BAA0B;CAE5C,QAAQ,WAAW,KAAK,SAAS;CACjC,OAAO,QAAQ,SAAS;AAC1B;AAEA,SAAgB,eACd,UACsB;CACtB,QAAQ,UAAR;EACE,KAAK,gBACH,OAAO;EACT,KAAK,gBACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,UACH,OAAO;EAET,SACE,OAAO;CACX;AACF;AAEA,MAAa,WAAW;;AAGxB,MAAa,sBAAsB;CACjC,OAAO;CACP,SAAS;AACX;AAEA,MAAa,eAAe;AAC5B,MAAM,qBAAqB,MAAM,cAAc;AAE/C,SAAgB,aAAa,MAAU,QAAkC;CACvE,IACE,CAAC,KAAK,MAAM,OACZ,CAAC,KAAK,MAAM,SACZ,CAAC,KAAK,MAAM,OACZ,CAAC,KAAK,MAAM,MAAM,WAClB;EACA,OAAO,MACL,0BAA0B,KAAK,OAAO,wCACxC;EACA,OAAO;CACT;CAEA,MAAM,YAAY,KAAK,MAAM;CAC7B,IACE,aACA,UACA,CAAC,mBAAmB,KAAK,KAAK,KAAK,KAAK,KACxC,cAAc,QAEd,OAAO;CAGT,IAAI,QAAQ,KAAK;CACjB,IAAI,UAAU;CACd,IAAI,MAAM,WAAA,OAAuB,GAAG;EAClC,QAAQ,MAAM,UAAU,CAAmB;EAC3C,UAAU;CACZ;CAGA,OAAO;EACL,QAHa,YAAY,KAAK,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,IAG9C;EACL,QAAQ,KAAK;EACb,OAAO,KAAK,SAAS,WAAW,KAAK;EACrC;EACA;EACA,YAAY,gBAAgB,KAAK,IAAI;EACrC,KAAK,KAAK,KAAK;EACf,cAAc,KAAK,KAAK;EACxB,cAAc,KAAK,KAAK;EACxB,YAAY,KAAK,KAAK,KAAK;EAC3B,WAAW,KAAK;EAChB,mBAAmB,KAAK,YACpB,KAAA,IACA,iBAAiB,KAAK,UAAU;EACpC,cAAc,CAAC,EAAE,KAAK,UAAU,SAAS,gBAAgB,KAAK,SAAS;CACzE;AACF;;;;;;;;;;AAWA,SAAgB,WAAW,MAAqB;CAC9C,IAAI,KAAK,WAAW,MAClB,OAAO;CAGT,IAAI,KAAK,YAAY,SAAS,SAAS,KAAK,YAAY,SAAS,OAAO;EACtE,OAAO,MACL,uBAAuB,KAAK,UAAU,6CACxC;EACA,OAAO;CACT;CAEA,IAAI,KAAK,sBAAsB,OAAO;EACpC,OAAO,MACL,uBAAuB,KAAK,UAAU,oCACxC;EACA,OAAO;CACT;CACA,OAAO;AACT;AAEA,SAAgB,UAAU,OAAsB,MAAqB;CACnE,QAAQ,OAAR;EACE,KAAK,SACH,OAAO,KAAK;EACd,KAAK,UACH,OAAO,KAAK;EACd,KAAK,gBACH,OAAO,KAAK;EACd,KAAK,UACH,OAAO,KAAK;EACd,KAAK,qBACH,OAAO,KAAK;CAChB;AACF"}
|
|
@@ -121,6 +121,16 @@ interface BranchCache {
|
|
|
121
121
|
prTitle?: string;
|
|
122
122
|
result?: string;
|
|
123
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Repository cache shared by the platforms which speak the Gitea API.
|
|
126
|
+
*/
|
|
127
|
+
interface GiteaLikePlatformCache {
|
|
128
|
+
/**
|
|
129
|
+
* To avoid circular dependency problem, we use `unknown` type here.
|
|
130
|
+
*/
|
|
131
|
+
pullRequestsCache?: unknown;
|
|
132
|
+
orgs?: Record<string, boolean>;
|
|
133
|
+
}
|
|
124
134
|
interface RepoCacheData {
|
|
125
135
|
configFileName?: string;
|
|
126
136
|
httpCache?: Record<string, unknown>;
|
|
@@ -131,13 +141,8 @@ interface RepoCacheData {
|
|
|
131
141
|
scan?: Record<string, BaseBranchCache>;
|
|
132
142
|
lastPlatformAutomergeFailure?: string;
|
|
133
143
|
platform?: {
|
|
134
|
-
forgejo?:
|
|
135
|
-
|
|
136
|
-
orgs?: Record<string, boolean>;
|
|
137
|
-
};
|
|
138
|
-
gitea?: {
|
|
139
|
-
pullRequestsCache?: unknown;
|
|
140
|
-
};
|
|
144
|
+
forgejo?: GiteaLikePlatformCache;
|
|
145
|
+
gitea?: GiteaLikePlatformCache;
|
|
141
146
|
github?: {
|
|
142
147
|
/**
|
|
143
148
|
* To avoid circular dependency problem, we use `unknown` type here.
|
|
@@ -173,5 +178,5 @@ interface RepoCacheConfig {
|
|
|
173
178
|
repoFingerprint: string;
|
|
174
179
|
}
|
|
175
180
|
//#endregion
|
|
176
|
-
export { BaseBranchCache, BranchCache, BranchUpgradeCache, OnboardingBranchCache, PrCache, ReconfigureBranchCache, RepoCache, RepoCacheConfig, RepoCacheData };
|
|
181
|
+
export { BaseBranchCache, BranchCache, BranchUpgradeCache, GiteaLikePlatformCache, OnboardingBranchCache, PrCache, ReconfigureBranchCache, RepoCache, RepoCacheConfig, RepoCacheData };
|
|
177
182
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1,50 +1,21 @@
|
|
|
1
1
|
import { regEx } from "../regex.js";
|
|
2
|
-
import {
|
|
3
|
-
import { isArray, isPlainObject } from "@sindresorhus/is";
|
|
2
|
+
import { GiteaHttp } from "./gitea.js";
|
|
4
3
|
//#region lib/util/http/forgejo.ts
|
|
5
4
|
let baseUrl;
|
|
6
5
|
function setBaseUrl(newBaseUrl) {
|
|
7
6
|
baseUrl = newBaseUrl.replace(regEx(/\/*$/), "/");
|
|
8
7
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var ForgejoHttp = class extends HttpBase {
|
|
8
|
+
/**
|
|
9
|
+
* Forgejo speaks the Gitea API, so the client only differs in its default
|
|
10
|
+
* `hostType` and in the base url, which is kept separate from Gitea's.
|
|
11
|
+
*/
|
|
12
|
+
var ForgejoHttp = class extends GiteaHttp {
|
|
15
13
|
get baseUrl() {
|
|
16
14
|
return baseUrl;
|
|
17
15
|
}
|
|
18
16
|
constructor(hostType, options) {
|
|
19
17
|
super(hostType ?? "forgejo", options);
|
|
20
18
|
}
|
|
21
|
-
extraOptions() {
|
|
22
|
-
return super.extraOptions().concat(["paginate"]);
|
|
23
|
-
}
|
|
24
|
-
async requestJsonUnsafe(method, options) {
|
|
25
|
-
const resolvedUrl = this.resolveUrl(options.url, options.httpOptions);
|
|
26
|
-
const opts = {
|
|
27
|
-
...options,
|
|
28
|
-
url: resolvedUrl
|
|
29
|
-
};
|
|
30
|
-
const res = await super.requestJsonUnsafe(method, opts);
|
|
31
|
-
const pc = getPaginationContainer(res.body);
|
|
32
|
-
if (opts.httpOptions?.paginate && pc) {
|
|
33
|
-
delete opts.httpOptions.cacheProvider;
|
|
34
|
-
opts.httpOptions.memCache = false;
|
|
35
|
-
delete opts.httpOptions.paginate;
|
|
36
|
-
const total = parseInt(res.headers["x-total-count"], 10);
|
|
37
|
-
let nextPage = parseInt(resolvedUrl.searchParams.get("page") ?? "1", 10);
|
|
38
|
-
while (total && pc.length < total) {
|
|
39
|
-
nextPage += 1;
|
|
40
|
-
resolvedUrl.searchParams.set("page", nextPage.toString());
|
|
41
|
-
const nextPc = getPaginationContainer((await super.requestJsonUnsafe(method, opts)).body);
|
|
42
|
-
if (nextPc === null) break;
|
|
43
|
-
pc.push(...nextPc);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return res;
|
|
47
|
-
}
|
|
48
19
|
};
|
|
49
20
|
//#endregion
|
|
50
21
|
export { ForgejoHttp, setBaseUrl };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forgejo.js","names":[],"sources":["../../../lib/util/http/forgejo.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"forgejo.js","names":[],"sources":["../../../lib/util/http/forgejo.ts"],"sourcesContent":["import { regEx } from '../regex.ts';\nimport { GiteaHttp } from './gitea.ts';\nimport type { HttpOptions } from './types.ts';\n\nlet baseUrl: string;\n\nexport function setBaseUrl(newBaseUrl: string): void {\n baseUrl = newBaseUrl.replace(regEx(/\\/*$/), '/'); // TODO #12875\n}\n\n/**\n * Forgejo speaks the Gitea API, so the client only differs in its default\n * `hostType` and in the base url, which is kept separate from Gitea's.\n */\nexport class ForgejoHttp extends GiteaHttp {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(hostType?: string, options?: HttpOptions) {\n super(hostType ?? 'forgejo', options);\n }\n}\n"],"mappings":";;;AAIA,IAAI;AAEJ,SAAgB,WAAW,YAA0B;CACnD,UAAU,WAAW,QAAQ,MAAM,MAAM,GAAG,GAAG;AACjD;;;;;AAMA,IAAa,cAAb,cAAiC,UAAU;CACzC,IAAuB,UAA8B;EACnD,OAAO;CACT;CAEA,YAAY,UAAmB,SAAuB;EACpD,MAAM,YAAY,WAAW,OAAO;CACtC;AACF"}
|
|
@@ -2,7 +2,7 @@ import { fromBase64 } from "../../../../../../util/string.js";
|
|
|
2
2
|
import { logger } from "../../../../../../logger/index.js";
|
|
3
3
|
import { ForgejoHttp } from "../../../../../../util/http/forgejo.js";
|
|
4
4
|
import { Releases } from "../../../../../../modules/datasource/forgejo-releases/schema.js";
|
|
5
|
-
import { ContentsListResponse, RepoContents } from "../../../../../../modules/platform/
|
|
5
|
+
import { ContentsListResponse, RepoContents } from "../../../../../../modules/platform/gitea/schema.js";
|
|
6
6
|
import { compareChangelogFilePath } from "../common.js";
|
|
7
7
|
import changelogFilenameRegex from "changelog-filename-regex";
|
|
8
8
|
//#region lib/workers/repository/update/pr/changelog/forgejo/index.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../../lib/workers/repository/update/pr/changelog/forgejo/index.ts"],"sourcesContent":["import changelogFilenameRegex from 'changelog-filename-regex';\nimport { logger } from '../../../../../../logger/index.ts';\nimport { Releases } from '../../../../../../modules/datasource/forgejo-releases/schema.ts';\nimport {\n ContentsListResponse,\n RepoContents,\n} from '../../../../../../modules/platform/
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../../lib/workers/repository/update/pr/changelog/forgejo/index.ts"],"sourcesContent":["import changelogFilenameRegex from 'changelog-filename-regex';\nimport { logger } from '../../../../../../logger/index.ts';\nimport { Releases } from '../../../../../../modules/datasource/forgejo-releases/schema.ts';\nimport {\n ContentsListResponse,\n RepoContents,\n} from '../../../../../../modules/platform/gitea/schema.ts';\nimport { ForgejoHttp } from '../../../../../../util/http/forgejo.ts';\nimport { fromBase64 } from '../../../../../../util/string.ts';\nimport { compareChangelogFilePath } from '../common.ts';\nimport type {\n ChangeLogFile,\n ChangeLogNotes,\n ChangeLogProject,\n ChangeLogRelease,\n} from '../types.ts';\n\nexport const id = 'forgejo-changelog';\nconst http = new ForgejoHttp(id);\n\nexport async function getReleaseNotesMd(\n repository: string,\n apiBaseUrl: string,\n sourceDirectory?: string,\n): Promise<ChangeLogFile | null> {\n logger.trace('forgejo.getReleaseNotesMd()');\n const apiPrefix = `${apiBaseUrl}repos/${repository}/contents`;\n\n const sourceDir = sourceDirectory ? `/${sourceDirectory}` : '';\n const tree = (\n await http.getJson(\n `${apiPrefix}${sourceDir}`,\n {\n paginate: false, // no pagination yet\n },\n ContentsListResponse,\n )\n ).body;\n const allFiles = tree.filter((f) => f.type === 'file');\n let files: RepoContents[] = [];\n if (!files.length) {\n files = allFiles.filter((f) => changelogFilenameRegex.test(f.name));\n }\n if (!files.length) {\n logger.trace('no changelog file found');\n return null;\n }\n\n const { path: changelogFile } = files\n .sort((a, b) => compareChangelogFilePath(a.path, b.path))\n .shift()!;\n /* istanbul ignore if */\n if (files.length !== 0) {\n logger.debug(\n `Multiple candidates for changelog file, using ${changelogFile}`,\n );\n }\n\n const fileRes = await http.getJson(\n `${apiPrefix}/${changelogFile}`,\n RepoContents,\n );\n // istanbul ignore if: should never happen\n if (fileRes.body.type !== 'file' || !fileRes.body.content) {\n logger.debug(`Missing content for changelog file, using ${changelogFile}`);\n return null;\n }\n const changelogMd = `${fromBase64(fileRes.body.content)}\\n#\\n##`;\n\n return { changelogFile, changelogMd };\n}\n\nexport async function getReleaseList(\n project: ChangeLogProject,\n _release: ChangeLogRelease,\n): Promise<ChangeLogNotes[]> {\n logger.trace('forgejo.getReleaseNotesMd()');\n const apiUrl = `${project.apiBaseUrl}repos/${project.repository}/releases`;\n\n const res = await http.getJson(\n `${apiUrl}?draft=false`,\n {\n paginate: true,\n },\n Releases,\n );\n return res.body.map((release) => ({\n url: `${project.baseUrl}${project.repository}/releases/tag/${release.tag_name}`,\n notesSourceUrl: apiUrl,\n name: release.name,\n body: release.body,\n tag: release.tag_name,\n }));\n}\n"],"mappings":";;;;;;;;AAiBA,MAAa,KAAK;AAClB,MAAM,OAAO,IAAI,YAAY,EAAE;AAE/B,eAAsB,kBACpB,YACA,YACA,iBAC+B;CAC/B,OAAO,MAAM,6BAA6B;CAC1C,MAAM,YAAY,GAAG,WAAW,QAAQ,WAAW;CAEnD,MAAM,YAAY,kBAAkB,IAAI,oBAAoB;CAU5D,MAAM,YARJ,MAAM,KAAK,QACT,GAAG,YAAY,aACf,EACE,UAAU,MACZ,GACA,oBACF,EAAA,CACA,KACoB,QAAQ,MAAM,EAAE,SAAS,MAAM;CACrD,IAAI,QAAwB,CAAC;CAC7B,IAAI,CAAC,MAAM,QACT,QAAQ,SAAS,QAAQ,MAAM,uBAAuB,KAAK,EAAE,IAAI,CAAC;CAEpE,IAAI,CAAC,MAAM,QAAQ;EACjB,OAAO,MAAM,yBAAyB;EACtC,OAAO;CACT;CAEA,MAAM,EAAE,MAAM,kBAAkB,MAC7B,MAAM,GAAG,MAAM,yBAAyB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CACxD,MAAM;;CAET,IAAI,MAAM,WAAW,GACnB,OAAO,MACL,iDAAiD,eACnD;CAGF,MAAM,UAAU,MAAM,KAAK,QACzB,GAAG,UAAU,GAAG,iBAChB,YACF;;CAEA,IAAI,QAAQ,KAAK,SAAS,UAAU,CAAC,QAAQ,KAAK,SAAS;EACzD,OAAO,MAAM,6CAA6C,eAAe;EACzE,OAAO;CACT;CAGA,OAAO;EAAE;EAAe,aAAA,GAFD,WAAW,QAAQ,KAAK,OAAO,EAAE;CAEpB;AACtC;AAEA,eAAsB,eACpB,SACA,UAC2B;CAC3B,OAAO,MAAM,6BAA6B;CAC1C,MAAM,SAAS,GAAG,QAAQ,WAAW,QAAQ,QAAQ,WAAW;CAShE,QAAO,MAPW,KAAK,QACrB,GAAG,OAAO,eACV,EACE,UAAU,KACZ,GACA,QACF,EAAA,CACW,KAAK,KAAK,aAAa;EAChC,KAAK,GAAG,QAAQ,UAAU,QAAQ,WAAW,gBAAgB,QAAQ;EACrE,gBAAgB;EAChB,MAAM,QAAQ;EACd,MAAM,QAAQ;EACd,KAAK,QAAQ;CACf,EAAE;AACJ"}
|
|
@@ -2,8 +2,8 @@ import { fromBase64 } from "../../../../../../util/string.js";
|
|
|
2
2
|
import { logger } from "../../../../../../logger/index.js";
|
|
3
3
|
import { GiteaHttp } from "../../../../../../util/http/gitea.js";
|
|
4
4
|
import { Releases } from "../../../../../../modules/datasource/gitea-releases/schema.js";
|
|
5
|
+
import { ContentsListResponse, RepoContents } from "../../../../../../modules/platform/gitea/schema.js";
|
|
5
6
|
import { compareChangelogFilePath } from "../common.js";
|
|
6
|
-
import { ContentsListResponse, ContentsResponse } from "../../../../../../modules/platform/gitea/schema.js";
|
|
7
7
|
import changelogFilenameRegex from "changelog-filename-regex";
|
|
8
8
|
//#region lib/workers/repository/update/pr/changelog/gitea/index.ts
|
|
9
9
|
const id = "gitea-changelog";
|
|
@@ -22,9 +22,9 @@ async function getReleaseNotesMd(repository, apiBaseUrl, sourceDirectory) {
|
|
|
22
22
|
const { path: changelogFile } = files.sort((a, b) => compareChangelogFilePath(a.path, b.path)).shift();
|
|
23
23
|
/* istanbul ignore if */
|
|
24
24
|
if (files.length !== 0) logger.debug(`Multiple candidates for changelog file, using ${changelogFile}`);
|
|
25
|
-
const fileRes = await http.getJson(`${apiPrefix}/${changelogFile}`,
|
|
25
|
+
const fileRes = await http.getJson(`${apiPrefix}/${changelogFile}`, RepoContents);
|
|
26
26
|
// istanbul ignore if: should never happen
|
|
27
|
-
if (!fileRes.body.content) {
|
|
27
|
+
if (fileRes.body.type !== "file" || !fileRes.body.content) {
|
|
28
28
|
logger.debug(`Missing content for changelog file, using ${changelogFile}`);
|
|
29
29
|
return null;
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../../lib/workers/repository/update/pr/changelog/gitea/index.ts"],"sourcesContent":["import changelogFilenameRegex from 'changelog-filename-regex';\nimport { logger } from '../../../../../../logger/index.ts';\nimport { Releases } from '../../../../../../modules/datasource/gitea-releases/schema.ts';\nimport {\n ContentsListResponse,\n
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../../lib/workers/repository/update/pr/changelog/gitea/index.ts"],"sourcesContent":["import changelogFilenameRegex from 'changelog-filename-regex';\nimport { logger } from '../../../../../../logger/index.ts';\nimport { Releases } from '../../../../../../modules/datasource/gitea-releases/schema.ts';\nimport {\n ContentsListResponse,\n RepoContents,\n} from '../../../../../../modules/platform/gitea/schema.ts';\nimport { GiteaHttp } from '../../../../../../util/http/gitea.ts';\nimport { fromBase64 } from '../../../../../../util/string.ts';\nimport { compareChangelogFilePath } from '../common.ts';\nimport type {\n ChangeLogFile,\n ChangeLogNotes,\n ChangeLogProject,\n ChangeLogRelease,\n} from '../types.ts';\n\nexport const id = 'gitea-changelog';\nconst http = new GiteaHttp(id);\n\nexport async function getReleaseNotesMd(\n repository: string,\n apiBaseUrl: string,\n sourceDirectory?: string,\n): Promise<ChangeLogFile | null> {\n logger.trace('gitea.getReleaseNotesMd()');\n const apiPrefix = `${apiBaseUrl}repos/${repository}/contents`;\n\n const sourceDir = sourceDirectory ? `/${sourceDirectory}` : '';\n const tree = (\n await http.getJson(\n `${apiPrefix}${sourceDir}`,\n {\n paginate: false, // no pagination yet\n },\n ContentsListResponse,\n )\n ).body;\n const allFiles = tree.filter((f) => f.type === 'file');\n let files: RepoContents[] = [];\n if (!files.length) {\n files = allFiles.filter((f) => changelogFilenameRegex.test(f.name));\n }\n if (!files.length) {\n logger.trace('no changelog file found');\n return null;\n }\n\n const { path: changelogFile } = files\n .sort((a, b) => compareChangelogFilePath(a.path, b.path))\n .shift()!;\n /* istanbul ignore if */\n if (files.length !== 0) {\n logger.debug(\n `Multiple candidates for changelog file, using ${changelogFile}`,\n );\n }\n\n const fileRes = await http.getJson(\n `${apiPrefix}/${changelogFile}`,\n RepoContents,\n );\n // istanbul ignore if: should never happen\n if (fileRes.body.type !== 'file' || !fileRes.body.content) {\n logger.debug(`Missing content for changelog file, using ${changelogFile}`);\n return null;\n }\n const changelogMd = `${fromBase64(fileRes.body.content)}\\n#\\n##`;\n\n return { changelogFile, changelogMd };\n}\n\nexport async function getReleaseList(\n project: ChangeLogProject,\n _release: ChangeLogRelease,\n): Promise<ChangeLogNotes[]> {\n logger.trace('gitea.getReleaseNotesMd()');\n const apiUrl = `${project.apiBaseUrl}repos/${project.repository}/releases`;\n\n const res = await http.getJson(\n `${apiUrl}?draft=false`,\n {\n paginate: true,\n },\n Releases,\n );\n return res.body.map((release) => ({\n url: `${project.baseUrl}${project.repository}/releases/tag/${release.tag_name}`,\n notesSourceUrl: apiUrl,\n name: release.name,\n body: release.body,\n tag: release.tag_name,\n }));\n}\n"],"mappings":";;;;;;;;AAiBA,MAAa,KAAK;AAClB,MAAM,OAAO,IAAI,UAAU,EAAE;AAE7B,eAAsB,kBACpB,YACA,YACA,iBAC+B;CAC/B,OAAO,MAAM,2BAA2B;CACxC,MAAM,YAAY,GAAG,WAAW,QAAQ,WAAW;CAEnD,MAAM,YAAY,kBAAkB,IAAI,oBAAoB;CAU5D,MAAM,YARJ,MAAM,KAAK,QACT,GAAG,YAAY,aACf,EACE,UAAU,MACZ,GACA,oBACF,EAAA,CACA,KACoB,QAAQ,MAAM,EAAE,SAAS,MAAM;CACrD,IAAI,QAAwB,CAAC;CAC7B,IAAI,CAAC,MAAM,QACT,QAAQ,SAAS,QAAQ,MAAM,uBAAuB,KAAK,EAAE,IAAI,CAAC;CAEpE,IAAI,CAAC,MAAM,QAAQ;EACjB,OAAO,MAAM,yBAAyB;EACtC,OAAO;CACT;CAEA,MAAM,EAAE,MAAM,kBAAkB,MAC7B,MAAM,GAAG,MAAM,yBAAyB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CACxD,MAAM;;CAET,IAAI,MAAM,WAAW,GACnB,OAAO,MACL,iDAAiD,eACnD;CAGF,MAAM,UAAU,MAAM,KAAK,QACzB,GAAG,UAAU,GAAG,iBAChB,YACF;;CAEA,IAAI,QAAQ,KAAK,SAAS,UAAU,CAAC,QAAQ,KAAK,SAAS;EACzD,OAAO,MAAM,6CAA6C,eAAe;EACzE,OAAO;CACT;CAGA,OAAO;EAAE;EAAe,aAAA,GAFD,WAAW,QAAQ,KAAK,OAAO,EAAE;CAEpB;AACtC;AAEA,eAAsB,eACpB,SACA,UAC2B;CAC3B,OAAO,MAAM,2BAA2B;CACxC,MAAM,SAAS,GAAG,QAAQ,WAAW,QAAQ,QAAQ,WAAW;CAShE,QAAO,MAPW,KAAK,QACrB,GAAG,OAAO,eACV,EACE,UAAU,KACZ,GACA,QACF,EAAA,CACW,KAAK,KAAK,aAAa;EAChC,KAAK,GAAG,QAAQ,UAAU,QAAQ,WAAW,gBAAgB,QAAQ;EACrE,gBAAgB;EAChB,MAAM,QAAQ;EACd,MAAM,QAAQ;EACd,KAAK,QAAQ;CACf,EAAE;AACJ"}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.
|
|
3
|
+
"title": "JSON schema for Renovate 44.85.0 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.
|
|
5
|
+
"x-renovate-version": "44.85.0",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"community.js","names":["condaVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/community.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nimport { regEx } from '../../../util/regex.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { GithubReleaseAttachmentsDatasource } from '../../datasource/github-release-attachments/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport * as condaVersioning from '../../versioning/conda/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type { ActionSchema, CommunityActionConfig } from './types.ts';\n\nexport function actionSchema(\n name: string,\n { withSchema, ...cfg }: CommunityActionConfig,\n): ActionSchema {\n return z\n .object({\n uses: matchAction(name),\n with: withSchema ?? VersionVal,\n })\n .transform(({ with: deps }) =>\n deps.map((dep) => {\n const merged = { ...cfg, ...dep };\n merged.depName ??= merged.packageName;\n return merged;\n }),\n );\n}\n\nfunction matchAction(action: string): z.ZodString {\n return z\n .string()\n .regex(regEx(`(?:https?://[^/]+/)?${RegExp.escape(action)}(?:@.+)?$`));\n}\n\nfunction parseValue(\n currentValue: string | undefined,\n isInvalid?: (val: string) => boolean,\n): PackageDependency {\n if (!currentValue) {\n return {\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n depType: 'uses-with',\n };\n }\n if (isInvalid?.(currentValue) === true) {\n return {\n skipStage: 'extract',\n skipReason: 'invalid-version',\n depType: 'uses-with',\n currentValue,\n };\n }\n return { currentValue, depType: 'uses-with' };\n}\n\n/**\n * A single dependency, versioned by the given `with:` input.\n *\n * @param isInvalid should return `true` if the version is invalid and should be skipped\n */\nfunction valSchema(\n key: string,\n isInvalid?: (val: string) => boolean,\n): ActionSchema {\n return z\n .object({ [key]: z.string().optional() })\n .transform((val) => [parseValue(val[key], isInvalid)]);\n}\n\nconst VersionVal = valSchema('version');\n\nconst InstallBinaryWith: ActionSchema = z\n .object({ repo: z.string(), tag: z.string() })\n .transform(({ repo, tag }) => [{ packageName: repo, ...parseValue(tag) }]);\n\nconst sha256Regex = regEx(/^[a-f0-9]{64}$/);\nconst MiseWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n sha256: z.string().optional(),\n })\n .transform(({ version, sha256 }) => [\n {\n ...parseValue(version),\n ...(sha256 && sha256Regex.test(sha256) ? { currentDigest: sha256 } : {}),\n },\n ]);\n\n// Runtimes installable by `pnpm/setup`, keyed by the name used in its\n// `runtime:` input. `bun` and `deno` reuse the datasources of their respective\n// `setup-*` actions below.\nconst pnpmRuntimes: Record<string, PackageDependency | undefined> = {\n node: { datasource: NodeVersionDatasource.id, packageName: 'node' },\n bun: { datasource: NpmDatasource.id, packageName: 'bun' },\n deno: { datasource: NpmDatasource.id, packageName: 'deno' },\n};\n\nfunction parsePnpmRuntime(runtime: string | undefined): PackageDependency[] {\n if (!runtime) {\n return [];\n }\n\n // `<name>` or `<name>@<version>`, matching pnpm's `packageManager` field syntax\n const [name, version] = runtime.split('@');\n const cfg = pnpmRuntimes[name];\n if (!cfg) {\n return [\n {\n packageName: name || runtime,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'invalid-name',\n },\n ];\n }\n\n return [{ ...cfg, ...parseValue(version) }];\n}\n\nconst PnpmSetupWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n runtime: z.string().optional(),\n })\n .transform(({ version, runtime }) => [\n parseValue(version),\n ...parsePnpmRuntime(runtime),\n ]);\n\nconst renovateGithubActionDefaultImage = 'ghcr.io/renovatebot/renovate';\nconst RenovateGithubActionWith: ActionSchema = z\n .object({\n 'renovate-version': z.string().optional(),\n 'renovate-image': z.string().optional(),\n })\n .transform(({ 'renovate-version': version, 'renovate-image': image }) => {\n const [packageName, currentDigest] = (\n image ?? renovateGithubActionDefaultImage\n ).split('@');\n return [\n {\n packageName,\n ...(currentDigest ? { currentDigest } : {}),\n ...parseValue(version),\n },\n ];\n });\n\n/**\n * Community contributed actions with known version input schemas.\n */\nexport const communityActions: Record<string, CommunityActionConfig> = {\n // https://github.com/aquasecurity/setup-trivy\n 'aquasecurity/setup-trivy': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/aquasecurity/trivy-action\n 'aquasecurity/trivy-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/astral-sh/setup-uv\n 'astral-sh/setup-uv': {\n datasource: GithubReleasesDatasource.id,\n versioning: npmVersioning.id,\n packageName: 'astral-sh/uv',\n },\n 'azure/setup-helm': {\n datasource: GithubReleasesDatasource.id,\n depName: 'helm',\n packageName: 'helm/helm',\n },\n // https://github.com/azure/setup-helm\n 'denoland/setup-deno': {\n datasource: NpmDatasource.id,\n packageName: 'deno',\n withSchema: valSchema('deno-version'),\n },\n // https://github.com/docker/setup-buildx-action\n 'docker/setup-buildx-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'buildx',\n packageName: 'docker/buildx',\n },\n // https://github.com/docker/setup-compose-action\n 'docker/setup-compose-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'docker/compose',\n },\n // https://github.com/docker/setup-docker-action\n 'docker/setup-docker-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'docker',\n packageName: 'moby/moby',\n extractVersion: '^docker-(?<version>.+)$',\n },\n // https://github.com/dtolnay/rust-toolchain\n 'dtolnay/rust-toolchain': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: valSchema('toolchain'),\n },\n // https://github.com/expo/expo-github-action\n 'expo/expo-github-action': {\n datasource: NpmDatasource.id,\n packageName: 'eas-cli',\n withSchema: valSchema('eas-version'),\n },\n 'golangci/golangci-lint-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'golangci/golangci-lint',\n },\n // https://github.com/helm/chart-testing-action\n 'helm/chart-testing-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'chart-testing',\n packageName: 'helm/chart-testing',\n },\n 'jakebailey/pyright-action': {\n datasource: NpmDatasource.id,\n packageName: 'pyright',\n withSchema: valSchema('version', (val) => val === 'PATH'),\n },\n 'jaxxstorm/action-install-gh-release': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'jdx/mise-action': {\n datasource: GithubReleaseAttachmentsDatasource.id,\n packageName: 'jdx/mise',\n withSchema: MiseWith,\n },\n 'oven-sh/setup-bun': {\n datasource: NpmDatasource.id,\n packageName: 'bun',\n withSchema: valSchema('bun-version'),\n },\n 'pdm-project/setup-pdm': {\n datasource: PypiDatasource.id,\n packageName: 'pdm',\n },\n 'pnpm/action-setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n },\n 'pnpm/setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n withSchema: PnpmSetupWith,\n },\n 'prefix-dev/setup-pixi': {\n datasource: GithubReleasesDatasource.id,\n versioning: condaVersioning.id,\n packageName: 'prefix-dev/pixi',\n withSchema: valSchema('pixi-version'),\n },\n // https://github.com/pypa/hatch/tree/install\n 'pypa/hatch': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pypa/hatch',\n // Strip hatch- prefix from release tags\n extractVersion: '^hatch-(?<version>.+)$',\n },\n // https://github.com/renovatebot/github-action\n 'renovatebot/github-action': {\n datasource: DockerDatasource.id,\n packageName: '', // determined from `renovate-image` input, if set\n withSchema: RenovateGithubActionWith,\n },\n 'ruby/setup-ruby': {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby',\n withSchema: valSchema('ruby-version'),\n },\n 'sigoden/install-binary': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'sigstore/cosign-installer': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n withSchema: valSchema('cosign-release'),\n },\n 'UpCloudLtd/upcloud-cli-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'UpCloudLtd/upcloud-cli',\n },\n 'zizmorcore/zizmor-action': {\n datasource: DockerDatasource.id,\n packageName: 'ghcr.io/zizmorcore/zizmor',\n },\n};\n"],"mappings":"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"}
|