mirror of
https://github.com/RamonGebben/mergify.git
synced 2026-03-10 08:51:18 +00:00
Updated API's because fetching all merge requests on Gitlab doesn't make sense
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
# Mergify
|
||||
A very *very* simple cli to check merge requests on Gitlab.
|
||||
|
||||
> NOTE: Only works for hosted Gitlab
|
||||
A very simple cli to check merge requests on Gitlab.
|
||||
|
||||
## Install
|
||||
|
||||
@@ -25,8 +23,8 @@ Just grab up the help menu by using `mergify --help` and you will be presented w
|
||||
Options:
|
||||
|
||||
-V, --version output the version number
|
||||
-a --all Get all merge request
|
||||
-m --me Get all open merge request assigned to you
|
||||
-a --assigned Get all open merge request assigned to you
|
||||
-s --submitted Get all open merge request submitted to you
|
||||
-c --configure Setup or update required config
|
||||
-h, --help output usage information
|
||||
```
|
||||
|
||||
44
index.js
44
index.js
@@ -5,6 +5,7 @@ const program = require('commander');
|
||||
const R = require('ramda');
|
||||
const chalk = require('chalk');
|
||||
const inquirer = require('inquirer');
|
||||
const { Spinner } = require('cli-spinner');
|
||||
const pack = require('./package.json');
|
||||
const { getMergeRequests } = require('./lib/getMergeRequests');
|
||||
const { printMergeRequest } = require('./lib/printMergeRequest');
|
||||
@@ -14,37 +15,45 @@ const { readConfig } = require('./lib/readConfig');
|
||||
const simplifyMergeRequest = R.pick([
|
||||
'title',
|
||||
'id',
|
||||
'iid',
|
||||
'target_branch',
|
||||
'source_branch',
|
||||
'state',
|
||||
'author',
|
||||
'assignee',
|
||||
'web_url'
|
||||
'web_url',
|
||||
'merge_status',
|
||||
]);
|
||||
|
||||
const getAll = async () => {
|
||||
console.log('#getAll')
|
||||
const mergeRequests = await getMergeRequests();
|
||||
const simplifiedMergeRequest = R.map(simplifyMergeRequest)(mergeRequests);
|
||||
simplifiedMergeRequest
|
||||
.forEach(printMergeRequest);
|
||||
};
|
||||
const spinner = new Spinner('Processing.. %s');
|
||||
spinner.setSpinnerString('|/-\\');
|
||||
|
||||
const getAllAssigned = async ({ userId }) => {
|
||||
console.log('#getAllAssigned', userId)
|
||||
const mergeRequests = await getMergeRequests();
|
||||
spinner.start();
|
||||
const params = {
|
||||
assignee_id: userId,
|
||||
};
|
||||
|
||||
const mergeRequests = await getMergeRequests(params);
|
||||
spinner.stop();
|
||||
|
||||
const simplifiedMergeRequest = R.map(simplifyMergeRequest)(mergeRequests);
|
||||
simplifiedMergeRequest
|
||||
.filter(({ state, assignee: { id: assignee } }) => state !== 'merged' && assignee === userId)
|
||||
.filter(({ state, assignee: { id: assignee } }) => state === 'opened')
|
||||
.forEach(printMergeRequest);
|
||||
}
|
||||
|
||||
const getAllSubmitted = async ({ userId }) => {
|
||||
console.log('#getAllSubmitted', userId)
|
||||
const mergeRequests = await getMergeRequests();
|
||||
spinner.start();
|
||||
const params = {
|
||||
author_id: userId,
|
||||
};
|
||||
|
||||
const mergeRequests = await getMergeRequests(params);
|
||||
spinner.stop();
|
||||
const simplifiedMergeRequest = R.map(simplifyMergeRequest)(mergeRequests);
|
||||
simplifiedMergeRequest
|
||||
.filter(({ state, author: { id: author } }) => author === userId && state !== 'merged')
|
||||
.filter(({ state, author: { id: author } }) => state !== 'merged')
|
||||
.forEach(printMergeRequest);
|
||||
}
|
||||
|
||||
@@ -82,12 +91,7 @@ program
|
||||
|
||||
const options = [
|
||||
{
|
||||
trigger: '-a --all',
|
||||
description: 'Get all merge request',
|
||||
fn: getAll
|
||||
},
|
||||
{
|
||||
trigger: '-m --me',
|
||||
trigger: '-a --assigned',
|
||||
description: 'Get all open merge request assigned to you',
|
||||
fn: getAllAssigned
|
||||
},
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
const queryString = require('query-string');
|
||||
const { doFetch } = require('../doFetch');
|
||||
|
||||
async function getMergeRequests(id) {
|
||||
return doFetch('/merge_requests');
|
||||
async function getMergeRequests(params) {
|
||||
const stringified = queryString.stringify(params);
|
||||
return doFetch(`/merge_requests?scope=all&${stringified}`);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
const chalk = require('chalk');
|
||||
const { pathOr } = require('ramda');
|
||||
|
||||
const states = {
|
||||
merged: chalk.blue,
|
||||
@@ -6,22 +7,37 @@ const states = {
|
||||
opened: chalk.green,
|
||||
};
|
||||
|
||||
const statuses = {
|
||||
cannot_be_merged: chalk.red,
|
||||
unchecked: chalk.gray,
|
||||
can_be_merged: chalk.green,
|
||||
}
|
||||
|
||||
const getUsername = pathOr('Unknown', ['username']);
|
||||
|
||||
const printMergeRequest = ({
|
||||
iid,
|
||||
title,
|
||||
state,
|
||||
author: { username: author },
|
||||
assignee: { username: assignee },
|
||||
author,
|
||||
assignee,
|
||||
source_branch,
|
||||
target_branch,
|
||||
web_url,
|
||||
merge_status,
|
||||
}) => {
|
||||
console.log(
|
||||
`
|
||||
${`[${states[state](state)}]`}
|
||||
${title}
|
||||
Branch: ${chalk.cyan(source_branch)}
|
||||
Assignee: ${chalk.cyan(assignee)}
|
||||
Author: ${chalk.cyan(author)}
|
||||
${chalk.gray(web_url)}`,
|
||||
const authorName = getUsername(author);
|
||||
const assigneeName = getUsername(assignee);
|
||||
|
||||
console.log(`
|
||||
${`[${states[state](state)}|${statuses[merge_status](merge_status.replace(/_/g, ' '))}]`}
|
||||
!${iid}: ${title}
|
||||
Assignee: ${chalk.cyan(assigneeName)}
|
||||
Author: ${chalk.cyan(authorName)}
|
||||
Source: ${chalk.green(source_branch)}
|
||||
Target: ${chalk.magenta(target_branch)}
|
||||
|
||||
${chalk.gray(web_url)}`,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"chalk": "^2.3.2",
|
||||
"cli-spinner": "^0.2.8",
|
||||
"commander": "^2.15.1",
|
||||
"inquirer": "^5.2.0",
|
||||
"node-fetch": "^2.1.2",
|
||||
"query-string": "^6.0.0",
|
||||
"ramda": "^0.25.0"
|
||||
},
|
||||
"name": "@pindakaasman/mergify",
|
||||
|
||||
15
yarn.lock
15
yarn.lock
@@ -522,6 +522,10 @@ cli-cursor@^2.1.0:
|
||||
dependencies:
|
||||
restore-cursor "^2.0.0"
|
||||
|
||||
cli-spinner@^0.2.8:
|
||||
version "0.2.8"
|
||||
resolved "https://registry.yarnpkg.com/cli-spinner/-/cli-spinner-0.2.8.tgz#8169d9ffae870676445e6ee4397e95a7a15bd805"
|
||||
|
||||
cli-width@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
|
||||
@@ -2503,6 +2507,13 @@ qs@~6.5.1:
|
||||
version "6.5.1"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
|
||||
|
||||
query-string@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.0.0.tgz#8b8f39447b73e8290d6f5e3581779218e9171142"
|
||||
dependencies:
|
||||
decode-uri-component "^0.2.0"
|
||||
strict-uri-encode "^2.0.0"
|
||||
|
||||
ramda@^0.25.0:
|
||||
version "0.25.0"
|
||||
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9"
|
||||
@@ -2936,6 +2947,10 @@ stealthy-require@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
|
||||
|
||||
strict-uri-encode@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
|
||||
|
||||
string-length@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
|
||||
|
||||
Reference in New Issue
Block a user