Skip to content

Commit bc32806

Browse files
committed
refactor: introduce getProjectContext abstraction
1 parent af29586 commit bc32806

File tree

5 files changed

+27
-24
lines changed

5 files changed

+27
-24
lines changed

lib/fail.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import got from "got";
44
import _debug from "debug";
55
const debug = _debug("semantic-release:gitlab");
66
import resolveConfig from "./resolve-config.js";
7-
import getProjectPath from "./get-project-path.js";
87
import getFailComment from "./get-fail-comment.js";
8+
import getProjectContext from "./get-project-context.js";
99

1010
export default async (pluginConfig, context) => {
1111
const {
@@ -25,9 +25,8 @@ export default async (pluginConfig, context) => {
2525
assignee,
2626
retryLimit,
2727
} = resolveConfig(pluginConfig, context);
28-
const projectPath = getProjectPath(context, gitlabUrl, repositoryUrl);
29-
const encodedProjectPath = encodeURIComponent(projectPath);
30-
const projectApiUrl = urlJoin(gitlabApiUrl, `/projects/${encodedProjectPath}`);
28+
const { encodedProjectPath, projectApiUrl } = getProjectContext(context, gitlabUrl, gitlabApiUrl, repositoryUrl);
29+
3130
const apiOptions = {
3231
headers: { "PRIVATE-TOKEN": gitlabToken },
3332
retry: { limit: retryLimit },

lib/get-project-context.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import urlJoin from "url-join";
2+
3+
import getProjectPath from "./get-project-path.js";
4+
5+
export default (context, gitlabUrl, gitlabApiUrl, repositoryUrl) => {
6+
const projectPath = getProjectPath(context, gitlabUrl, repositoryUrl);
7+
const encodedProjectPath = encodeURIComponent(projectPath);
8+
const projectApiUrl = urlJoin(gitlabApiUrl, `/projects/${encodedProjectPath}`);
9+
return {
10+
projectPath,
11+
encodedProjectPath,
12+
projectApiUrl,
13+
};
14+
};

lib/publish.js

+4-8
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import got from "got";
99
import _debug from "debug";
1010
const debug = _debug("semantic-release:gitlab");
1111
import resolveConfig from "./resolve-config.js";
12-
import getProjectPath from "./get-project-path.js";
1312
import getAssets from "./glob-assets.js";
1413
import { RELEASE_NAME } from "./definitions/constants.js";
14+
import getProjectContext from "./get-project-context.js";
1515

1616
const isUrlScheme = (value) => /^(https|http|ftp):\/\//.test(value);
1717

@@ -27,9 +27,8 @@ export default async (pluginConfig, context) => {
2727
context
2828
);
2929
const assetsList = [];
30-
const projectPath = getProjectPath(context, gitlabUrl, repositoryUrl);
31-
const encodedProjectPath = encodeURIComponent(projectPath);
32-
const projectApiUrl = urlJoin(gitlabApiUrl, `/projects/${encodedProjectPath}`);
30+
const { projectPath, projectApiUrl } = getProjectContext(context, gitlabUrl, gitlabApiUrl, repositoryUrl);
31+
3332
const encodedGitTag = encodeURIComponent(gitTag);
3433
const encodedVersion = encodeURIComponent(version);
3534
const apiOptions = {
@@ -131,10 +130,7 @@ export default async (pluginConfig, context) => {
131130
}
132131

133132
// https://docs.gitlab.com/ee/user/packages/generic_packages/#download-package-file
134-
const url = urlJoin(
135-
projectApiUrl,
136-
`packages/generic/release/${encodedVersion}/${encodedLabel}`
137-
);
133+
const url = urlJoin(projectApiUrl, `packages/generic/release/${encodedVersion}/${encodedLabel}`);
138134

139135
assetsList.push({ label, alt: "release", url, type: "package", filepath });
140136

lib/success.js

+3-8
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import got from "got";
44
import _debug from "debug";
55
const debug = _debug("semantic-release:gitlab");
66
import resolveConfig from "./resolve-config.js";
7-
import getProjectPath from "./get-project-path.js";
7+
import getProjectContext from "./get-project-context.js";
88
import getSuccessComment from "./get-success-comment.js";
99

1010
export default async (pluginConfig, context) => {
@@ -17,9 +17,7 @@ export default async (pluginConfig, context) => {
1717
} = context;
1818
const { gitlabToken, gitlabUrl, gitlabApiUrl, successComment, successCommentCondition, proxy, retryLimit } =
1919
resolveConfig(pluginConfig, context);
20-
const projectPath = getProjectPath(context, gitlabUrl, repositoryUrl);
21-
const encodedProjectPath = encodeURIComponent(projectPath);
22-
const projectApiUrl = urlJoin(gitlabApiUrl, `/projects/${encodedProjectPath}`);
20+
const { projectApiUrl } = getProjectContext(context, gitlabUrl, gitlabApiUrl, repositoryUrl);
2321
const apiOptions = {
2422
headers: { "PRIVATE-TOKEN": gitlabToken },
2523
retry: { limit: retryLimit },
@@ -78,10 +76,7 @@ Using 'false' for 'successComment' is deprecated and will be removed in a future
7876
};
7977

8078
const getRelatedMergeRequests = async (commitHash) => {
81-
const relatedMergeRequestsEndpoint = urlJoin(
82-
projectApiUrl,
83-
`repository/commits/${commitHash}/merge_requests`
84-
);
79+
const relatedMergeRequestsEndpoint = urlJoin(projectApiUrl, `repository/commits/${commitHash}/merge_requests`);
8580
debug("Getting MRs from %s", relatedMergeRequestsEndpoint);
8681
const relatedMergeRequests = await got
8782
.get(relatedMergeRequestsEndpoint, {

lib/verify.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import { isString, isPlainObject, isNil, isArray } from "lodash-es";
2-
import urlJoin from "url-join";
32
import got from "got";
43
import _debug from "debug";
54
const debug = _debug("semantic-release:gitlab");
65
import AggregateError from "aggregate-error";
76
import resolveConfig from "./resolve-config.js";
8-
import getProjectPath from "./get-project-path.js";
7+
import getProjectContext from "./get-project-context.js";
98
import getError from "./get-error.js";
109

1110
const isNonEmptyString = (value) => isString(value) && value.trim();
@@ -32,7 +31,7 @@ export default async (pluginConfig, context) => {
3231
logger,
3332
} = context;
3433
const { gitlabToken, gitlabUrl, gitlabApiUrl, proxy, ...options } = resolveConfig(pluginConfig, context);
35-
const projectPath = getProjectPath(context, gitlabUrl, repositoryUrl);
34+
const { projectPath, projectApiUrl } = getProjectContext(context, gitlabUrl, gitlabApiUrl, repositoryUrl);
3635

3736
debug("apiUrl: %o", gitlabApiUrl);
3837
debug("projectPath: %o", projectPath);
@@ -64,7 +63,7 @@ export default async (pluginConfig, context) => {
6463
({
6564
permissions: { project_access: projectAccess, group_access: groupAccess },
6665
} = await got
67-
.get(urlJoin(gitlabApiUrl, `/projects/${encodeURIComponent(projectPath)}`), {
66+
.get(projectApiUrl, {
6867
headers: { "PRIVATE-TOKEN": gitlabToken },
6968
...proxy,
7069
})

0 commit comments

Comments
 (0)