52 lines
1.5 KiB
JavaScript
52 lines
1.5 KiB
JavaScript
const Git = require('simple-git');
|
|
const inquirer = require('inquirer');
|
|
const report = require('yurnalist');
|
|
const _ = require('lodash');
|
|
const u = require('updeep');
|
|
const columnify = require('columnify');
|
|
const chalk = require('chalk');
|
|
|
|
module.exports = async (yargs) => {
|
|
const config = (await Git().listConfig('local')).all;
|
|
|
|
let tree = Object.entries(config).reduce(
|
|
(accum, [key,value]) => u.updateIn(key,value,accum), {}
|
|
);
|
|
|
|
const branches = {};
|
|
|
|
const current = (await Git().raw('branch','--show-current')).replace("\n",'');
|
|
|
|
for( const branch in tree.branch ) {
|
|
const entry = tree.branch[branch];
|
|
|
|
if( 'mikado-done' in entry ) {
|
|
|
|
let deps = entry['mikado-dependency'];
|
|
if(!Array.isArray(deps)) deps = [ deps ].filter(x=>x);
|
|
|
|
branches[branch] = {
|
|
bullet: branch === current ? '*': ' ',
|
|
dependencies: deps.length > 0 ? deps.map( dep => chalk.magenta(dep) ): '',
|
|
name: chalk.blue.bold(branch),
|
|
upstream: entry['mikado-upstream'],
|
|
base: chalk.cyan.italic(entry['mikado-base'] ?? ''),
|
|
done: entry['mikado-done'],
|
|
}
|
|
}
|
|
}
|
|
|
|
console.log( "\nMikado status\n" );
|
|
|
|
console.log(
|
|
columnify( Object.values(branches), {
|
|
showHeaders: false,
|
|
columns: [ 'bullet', 'name', 'base', 'dependencies' ],
|
|
config: {
|
|
base: { minWidth: 10 },
|
|
}
|
|
} )
|
|
)
|
|
|
|
}
|