Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions bin/skello
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
#!/usr/bin/env node
var chalk = require('chalk');
var getenv = require('getenv');
var semver = require('semver');
var version = process.versions.node;

var supportedVersions = [
const chalk = require('chalk');
const getenv = require('getenv');
const semver = require('semver');
const version = process.versions.node;

const supportedVersions = [
{ range: '>=10.13.0 <11.0.0', name: 'Active LTS' },
{ range: '>=12.0.0', name: 'Current Release' },
];
var isSupported = supportedVersions.some(function(supported) {
const isSupported = supportedVersions.some(function(supported) {
return semver.satisfies(version, supported.range);
});

if (isSupported) {
require('../index.js');
} else {
var versionInfo = supportedVersions
const versionInfo = supportedVersions
.map(function(supported) {
return '* ' + supported.range + ' (' + supported.name + ')';
})
Expand Down
38 changes: 16 additions & 22 deletions commands/apps.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
const cliSelect = require('cli-select');
const inquirer = require('inquirer');
const chalk = require('chalk');
const openInBrowser = require('open');
const ora = require('ora');
const figures = require('figures');
const moment = require('moment');
const _ = require('lodash');
const currentBranchName = require('current-git-branch');
Expand Down Expand Up @@ -60,24 +59,18 @@ function handle(args) {
async function list() {
const values = await getAppInfos();

console.log(`${chalk.red.bold('?')} Please choose an app to open:`);

cliSelect({
values: values,
valueRenderer: (value, selected) => {
if (selected) {
return `${chalk.blue.bold.underline(value.text)}`;
}

return `${value.text}`;
},
selected: chalk.blue(figures.circleFilled),
unselected: figures.circle,
}).then(response => {
console.log(`Opening ${response.value.pullRequest.head.ref} in browser...`);
openInBrowser(response.value.url);
inquirer
.prompt({
message: 'Please choose an app to open:',
name: 'app',
type: 'list',
choices: values.map(app => ({ name: app.text, value: app })),
pageSize: 20
})
.catch(error => null)
.then(answers => {
console.log(`Opening ${answers.app.pullRequest.head.ref} in browser...`);
openInBrowser(answers.app.url);
});
}

/*
Expand Down Expand Up @@ -128,7 +121,7 @@ async function openAppByBranchName(branchName) {
const app = apps.find(a => a.id === reviewApp.app.id);

if (app) {
openInBrowser(app.web_url);
openInBrowser(app.web_url);
} else {
console.log('Can\'t open review app.')
}
Expand Down Expand Up @@ -159,7 +152,8 @@ async function getAppInfos() {
const isMerged = pullRequest.merged_at !== null;
const isClosed = pullRequest.closed_at !== null;

const text = `[${pullRequest.head.ref}] - Author: ${pullRequest.user.login} | Head: ${pullRequest.base.ref}`;
const commitRef = chalk.blue(`[${pullRequest.head.ref}]`);
const text = `${commitRef} Author: ${pullRequest.user.login} | Head: ${pullRequest.base.ref}`;

if (isMerged) text += ' [Merged]';
if (isClosed) text += ' [Closed]';
Expand All @@ -180,4 +174,4 @@ module.exports = {
NAME,
helpText,
handle,
};
};
54 changes: 28 additions & 26 deletions commands/pulls.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
const chalk = require('chalk');
const fetch = require('node-fetch');
const figures = require('figures');
const cliSelect = require('cli-select');
const inquirer = require('inquirer');
const ora = require('ora');
const openInBrowser = require('open');
const { parseSorter } = require('../utils/cli.js');
Expand Down Expand Up @@ -60,25 +59,20 @@ async function list(sorter) {
if (sorter.direction === 'desc') pullRequests.reverse();
}

cliSelect({
values: pullRequests,
valueRenderer: (value, selected) => {
const text = pullRequestText(value);

if (selected) {
return `${chalk.blue(text)}`;
}

return `${text}`;
},
selected: chalk.blue(figures.circleFilled),
unselected: figures.circle,
}).then((response) => {
const link = response.value._links.html.href;

console.log(`Opening ${link} in browser...`);
openInBrowser(link);
}).catch(error => null);
inquirer
.prompt({
type: 'list',
name: 'pull_request',
choices: pullRequests.map(pr => ({ name: getPullRequestName(pr), value: pr })),
message: 'Select pull request:',
pageSize: 50
})
.then(answers => {
const link = answers.pull_request.html_url;

console.log(`Opening ${link} in browser...`);
openInBrowser(link);
});
}

async function getPullRequests() {
Expand All @@ -95,7 +89,7 @@ async function getPullRequests() {

let count = 1;

for (var i = pullRequestIds.length - 1; i >= 0; i--) {
for (let i = pullRequestIds.length - 1; i >= 0; i--) {
spinner.prefixText = `[${count}/${pullRequestCount}] `;
const pullRequest = await GithubService.getPullRequest(pullRequestIds[i]);
count++;
Expand All @@ -107,15 +101,23 @@ async function getPullRequests() {
return pullRequests;
}

function pullRequestText(pullRequest) {
/**
* @return name to display in menu
*/
function getPullRequestName(pullRequest) {
const messageMaxLength = 60;
const additions = chalk.green(`+${pullRequest.additions}`);
const deletions = chalk.red(`+${pullRequest.deletions}`);
const files = `files: ${pullRequest.changed_files}`;
return `${pullRequest.title} ${files} ${additions} ${deletions}`
const files = `${pullRequest.changed_files} file${pullRequest.changed_files > 1 ? 's' : ''}`;

const commitMessage = pullRequest.title.length > messageMaxLength
? pullRequest.title.substr(0, messageMaxLength) + '…'
: pullRequest.title;
return `${commitMessage} - ${chalk.blue(pullRequest.user.login)} - ${files}, ${additions} ${deletions}`
}

module.exports = {
NAME,
helpText,
handle,
};
};
Loading