t-comm
Version:
专业、稳定、纯粹的工具库
111 lines (106 loc) • 3.4 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tgit_helper = require('./helper.js');
require('axios');
/**
* 获取commit详情
* @param {object} options 输入配置
* @param {string} options.projectName 项目名称
* @param {string} options.commitId 提交hash
* @param {string} options.privateToken 密钥
* @param {string} [options.baseUrl] 自定义 API 基础路径
* @returns {Promise<object>} 请求Promise
* @example
*
* getOneCommitDetail({
* projectName: 't-comm',
* commitId: 'aaaa',
* privateToken: 'xxxxx',
* }).then((resp) => {
*
* })
*/
function getOneCommitDetail(_ref) {
var projectName = _ref.projectName,
commitId = _ref.commitId,
privateToken = _ref.privateToken,
baseUrl = _ref.baseUrl;
return new Promise(function (resolve) {
var url = "/api/v3/projects/".concat(encodeURIComponent(projectName), "/repository/commits/").concat(encodeURIComponent(commitId));
url = tgit_helper.resolveBaseUrl(baseUrl, url);
tgit_helper.instance({
url: url,
method: 'GET',
headers: {
'PRIVATE-TOKEN': privateToken
}
}).then(function (res) {
resolve(res.data);
})["catch"](function () {
resolve({});
});
});
}
/**
* 获取分支上的最新若干条 commit
*
* 对应工蜂 API:GET /api/v3/projects/:id/repository/commits
*
* 典型场景:通过 PUT files 接口更新文件后,该接口不返回 commit_id,
* 可用本函数回查真实的 commit sha。
*
* @param {object} options 输入配置
* @param {string | number} options.projectName 项目名称或项目 ID
* @param {string} [options.refName] 分支名或 commit sha,默认由后端使用默认分支
* @param {number} [options.perPage=1] 每页条数
* @param {number} [options.page] 页码
* @param {string} options.privateToken 密钥
* @param {string} [options.baseUrl] baseUrl
* @returns {Promise<Array<{ id: string; short_id: string; title?: string; message?: string; created_at?: string }>>} commit 列表
* @example
*
* // 拉取 master 分支最近 5 条 commit
* getLatestCommits({
* projectName: 'group/sub/repo',
* refName: 'master',
* perPage: 5,
* privateToken: 'xxxxx',
* }).then((list) => {
* console.log(list[0].id); // commit sha
* })
*/
function getLatestCommits(_ref2) {
var projectName = _ref2.projectName,
refName = _ref2.refName,
_ref2$perPage = _ref2.perPage,
perPage = _ref2$perPage === void 0 ? 1 : _ref2$perPage,
page = _ref2.page,
privateToken = _ref2.privateToken,
baseUrl = _ref2.baseUrl;
return new Promise(function (resolve, reject) {
if (!projectName) {
reject(new Error('projectName is required'));
return;
}
var url = tgit_helper.resolveBaseUrl(baseUrl, "/api/v3/projects/".concat(tgit_helper.encodeProject(projectName), "/repository/commits"));
var params = {
per_page: perPage
};
if (refName) params.ref_name = refName;
if (page !== undefined) params.page = page;
tgit_helper.instance({
url: url,
method: 'GET',
params: params,
headers: {
'PRIVATE-TOKEN': privateToken
}
}).then(function (res) {
resolve(res.data || []);
})["catch"](function (err) {
reject(err);
});
});
}
exports.getLatestCommits = getLatestCommits;
exports.getOneCommitDetail = getOneCommitDetail;