From e381929bc3c178160d1ad6d81390d30121d896ff Mon Sep 17 00:00:00 2001 From: Yanick Champoux Date: Thu, 28 Oct 2021 11:03:36 -0400 Subject: [PATCH] wip --- package.json | 4 ++++ src/commands/status.js | 51 ++++++++++++++++++++++++++++++++++++++++++ src/git-mikado.js | 6 +++++ 3 files changed, 61 insertions(+) create mode 100644 src/commands/status.js diff --git a/package.json b/package.json index fe6983d..c5aa4d0 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,13 @@ "license": "ISC", "dependencies": { "@gitgraph/node": "^0.1.18", + "chalk": "^4.1.2", + "columnify": "^1.5.4", "inquirer": "^7.3.3", "lodash": "^4.17.21", "simple-git": "^2.47.0", + "stringify-tree": "^1.1.1", + "updeep": "^1.2.1", "yargs": "^16.2.0", "yurnalist": "^2.1.0" } diff --git a/src/commands/status.js b/src/commands/status.js new file mode 100644 index 0000000..0fca834 --- /dev/null +++ b/src/commands/status.js @@ -0,0 +1,51 @@ +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 }, + } + } ) + ) + +} diff --git a/src/git-mikado.js b/src/git-mikado.js index 4a62c42..929bdfb 100644 --- a/src/git-mikado.js +++ b/src/git-mikado.js @@ -1,9 +1,15 @@ const yargs = require("yargs"); const new_branch = require("./commands/new_branch"); +const status = require("./commands/status"); yargs .scriptName("git-mikado") .showHelpOnFail(true) + .command( + "status", + "show status of all mikado branches", + status + ) .command( "new [branch]", "create new mikado branch",