@ -5,6 +5,9 @@ const chalk = require('chalk')
const minimist = require ( 'minimist' )
const table = require ( 'text-table' )
const ms = require ( 'ms' )
const printf = require ( 'printf' )
require ( 'epipebomb' ) ( )
const supportsColor = require ( 'supports-color' )
// Ours
const strlen = require ( '../lib/strlen' )
@ -33,6 +36,9 @@ const argv = minimist(process.argv.slice(2), {
const subcommand = argv . _ [ 0 ]
const grayWidth = 10
const underlineWidth = 11
// Options
const help = ( ) => {
console . log ( `
@ -185,54 +191,81 @@ async function run({ token, config: { currentTeam, user } }) {
const aliases = await alias . ls ( )
aliases . sort ( ( a , b ) => new Date ( b . created ) - new Date ( a . created ) )
const current = new Date ( )
const header = [
[ '' , 'id' , 'source' , 'url' , 'created' ] . map ( s => chalk . dim ( s ) )
]
const text = list . length === 0
? null
: table (
header . concat (
aliases . map ( _ alias => {
const _ url = chalk . underline ( ` https:// ${ _ alias . alias } ` )
const target = _ alias . deploymentId
let _ sourceUrl
if ( urls . get ( target ) ) {
_ sourceUrl = chalk . underline ( ` https:// ${ urls . get ( target ) } ` )
} else if ( _ alias . rules ) {
_ sourceUrl = chalk . gray ( ` [ ${ _ alias . rules . length } custom rule ${ _ alias . rules . length > 1 ? 's' : '' } ] ` )
} else {
_ sourceUrl = chalk . gray ( '<null>' )
}
const time = chalk . gray (
ms ( current - new Date ( _ alias . created ) ) + ' ago'
)
return [
'' ,
// We default to `''` because some early aliases didn't
// have an uid associated
_ alias . uid === null ? '' : _ alias . uid ,
_ sourceUrl ,
_ url ,
time
]
} )
) ,
{
align : [ 'l' , 'r' , 'l' , 'l' ] ,
hsep : ' ' . repeat ( 2 ) ,
stringLength : strlen
}
const sourceUrlLength =
aliases . reduce ( ( acc , i ) => {
return Math . max (
acc ,
( i . deploymentId && urls . get ( i . deploymentId ) . length ) || 0
)
} , 0 ) + 9
const aliasLength =
aliases . reduce ( ( acc , i ) => {
return Math . max ( acc , ( i . alias && i . alias . length ) || 0 )
} , 0 ) + 8
const elapsed_ = ms ( new Date ( ) - start_ )
console . log ( ` > ${ aliases . length } alias ${ aliases . length === 1 ? '' : 'es' } found ${ chalk . gray ( ` [ ${ elapsed_ } ] ` ) } under ${ chalk . bold ( ( currentTeam && currentTeam . slug ) || user . username || user . email ) } ` )
if ( text ) {
console . log ( '\n' + text + '\n' )
console . log ( )
if ( supportsColor ) {
const urlSpecHeader = ` %- ${ sourceUrlLength + 1 } s `
const aliasSpecHeader = ` %- ${ aliasLength + 1 } s `
console . log (
printf (
` ${ chalk . gray ( urlSpecHeader + ' ' + aliasSpecHeader + ' %5s' ) } ` ,
'source' ,
'url' ,
'age'
)
)
} else {
const urlSpecHeader = ` %- ${ sourceUrlLength } s `
const aliasSpecHeader = ` %- ${ aliasLength } s `
console . log (
printf (
` ${ urlSpecHeader } ${ aliasSpecHeader } %5s ` ,
'source' ,
'url' ,
'age'
)
)
}
let text = ''
aliases . forEach ( _ alias => {
let urlSpec = sourceUrlLength
let aliasSpec = aliasLength
let ageSpec = 5
const _ url = chalk . underline ( ` https:// ${ _ alias . alias } ` )
const target = _ alias . deploymentId
let _ sourceUrl
if ( supportsColor ) {
aliasSpec += underlineWidth
ageSpec += grayWidth
}
if ( urls . get ( target ) ) {
_ sourceUrl = chalk . underline ( ` https:// ${ urls . get ( target ) } ` )
if ( supportsColor ) {
urlSpec += grayWidth
}
} else if ( _ alias . rules ) {
_ sourceUrl = chalk . gray ( ` [ ${ _ alias . rules . length } custom rule ${ _ alias . rules . length > 1 ? 's' : '' } ] ` )
if ( supportsColor ) {
urlSpec += underlineWidth
}
} else {
_ sourceUrl = chalk . gray ( '<null>' )
}
const time = chalk . gray ( ms ( current - new Date ( _ alias . created ) ) )
text += printf (
` %- ${ urlSpec } s %- ${ aliasSpec } s % ${ ageSpec } s \n ` ,
_ sourceUrl ,
_ url ,
time
)
} )
console . log ( text )
break
}
case 'rm' :
@ -311,7 +344,6 @@ async function run({ token, config: { currentTeam, user } }) {
currentTeam ,
user
)
break
}
if ( argv . rules ) {