12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- "use strict";
- const path = require("path");
- const { URL } = require("whatwg-url");
- const log = require("npmlog");
- const fetch = require("node-fetch");
- class GitLabClient {
- constructor(baseUrl = "https://gitlab.com/api/v4", token) {
- this.baseUrl = baseUrl;
- this.token = token;
- }
- createRelease({ owner, repo, name, tag_name: tagName, body }) {
- const releasesUrl = this.releasesUrl(owner, repo, "releases");
- log.silly("Requesting GitLab releases", releasesUrl);
- return fetch(releasesUrl, {
- method: "post",
- body: JSON.stringify({ name, tag_name: tagName, description: body }),
- headers: {
- "PRIVATE-TOKEN": this.token,
- "Content-Type": "application/json",
- },
- }).then(({ ok, status, statusText }) => {
- if (!ok) {
- log.error("gitlab", `Failed to create release\nRequest returned ${status} ${statusText}`);
- } else {
- log.silly("gitlab", "Created release successfully.");
- }
- });
- }
- releasesUrl(namespace, project) {
- return new URL(
- `${this.baseUrl}/${path.join("projects", encodeURIComponent(`${namespace}/${project}`), "releases")}`
- ).toString();
- }
- }
- module.exports.GitLabClient = GitLabClient;
|