Merge pull request #8 from Photowall/7-in-testserver-status-view-would-be-nice-with-a-clickable-link-to-the-testserver

7 in testserver status view would be nice with a clickable link to the testserver
This commit is contained in:
Arwid Thornström
2022-10-25 10:24:29 +02:00
committed by GitHub
4 changed files with 3627 additions and 3298 deletions
+194 -20
View File
@@ -1,12 +1,12 @@
{
"name": "pwcli",
"version": "0.0.1",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "pwcli",
"version": "0.0.1",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"@lenne.tech/gluegun-menu": "^0.0.5",
@@ -16,7 +16,8 @@
"enquirer": "^2.3.6",
"gluegun": "latest",
"lodash.snakecase": "^4.1.1",
"terminal-table-output": "^1.3.2"
"strip-ansi": "^7.0.1",
"terminal-table-output": "^1.4.0"
},
"bin": {
"pwcli": "bin/pwcli"
@@ -578,6 +579,18 @@
"node": ">=4"
}
},
"node_modules/@jest/core/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"dependencies": {
"ansi-regex": "^4.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/@jest/core/node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -1764,6 +1777,14 @@
"node": ">=8"
}
},
"node_modules/char-regex": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz",
"integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==",
"engines": {
"node": ">=12.20"
}
},
"node_modules/ci-info": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
@@ -1890,6 +1911,18 @@
"wrap-ansi": "^5.1.0"
}
},
"node_modules/cliui/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"dependencies": {
"ansi-regex": "^4.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/clone": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
@@ -5995,6 +6028,17 @@
"node": ">=4"
}
},
"node_modules/ora/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dependencies": {
"ansi-regex": "^4.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/ora/node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -7138,6 +7182,18 @@
"node": ">=6"
}
},
"node_modules/string-width/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"dependencies": {
"ansi-regex": "^4.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/string.prototype.trimend": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
@@ -7167,15 +7223,28 @@
}
},
"node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"license": "MIT",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
"integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
"dependencies": {
"ansi-regex": "^4.1.0"
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=6"
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/strip-ansi/node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/strip-bom": {
@@ -7227,10 +7296,27 @@
"license": "MIT"
},
"node_modules/terminal-table-output": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/terminal-table-output/-/terminal-table-output-1.3.2.tgz",
"integrity": "sha1-tc1vKJUvVoS3ScPVgit3DK5vR+I=",
"license": "ISC"
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/terminal-table-output/-/terminal-table-output-1.4.0.tgz",
"integrity": "sha512-Qr1KywqH2BrkmXXgakBl3159I/Xh7W5M2bBm/KAtV58T7EpAZIGjMNrJ3abr01oYhdMaZQ63FyEgnKEFc87zFQ==",
"dependencies": {
"string-length": "^5.0.1"
}
},
"node_modules/terminal-table-output/node_modules/string-length": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz",
"integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==",
"dependencies": {
"char-regex": "^2.0.0",
"strip-ansi": "^7.0.1"
},
"engines": {
"node": ">=12.20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/test-exclude": {
"version": "5.2.3",
@@ -7952,6 +8038,18 @@
"node": ">=6"
}
},
"node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"dependencies": {
"ansi-regex": "^4.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -8463,6 +8561,15 @@
"supports-color": "^5.3.0"
}
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -9373,6 +9480,11 @@
}
}
},
"char-regex": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz",
"integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw=="
},
"ci-info": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
@@ -9466,6 +9578,17 @@
"string-width": "^3.1.0",
"strip-ansi": "^5.2.0",
"wrap-ansi": "^5.1.0"
},
"dependencies": {
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"clone": {
@@ -12497,6 +12620,14 @@
"supports-color": "^5.3.0"
}
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"requires": {
"ansi-regex": "^4.1.0"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -13316,6 +13447,17 @@
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
},
"dependencies": {
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"string.prototype.trimend": {
@@ -13339,11 +13481,18 @@
}
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
"integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
"requires": {
"ansi-regex": "^4.1.0"
"ansi-regex": "^6.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
}
}
},
"strip-bom": {
@@ -13379,9 +13528,23 @@
"dev": true
},
"terminal-table-output": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/terminal-table-output/-/terminal-table-output-1.3.2.tgz",
"integrity": "sha1-tc1vKJUvVoS3ScPVgit3DK5vR+I="
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/terminal-table-output/-/terminal-table-output-1.4.0.tgz",
"integrity": "sha512-Qr1KywqH2BrkmXXgakBl3159I/Xh7W5M2bBm/KAtV58T7EpAZIGjMNrJ3abr01oYhdMaZQ63FyEgnKEFc87zFQ==",
"requires": {
"string-length": "^5.0.1"
},
"dependencies": {
"string-length": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz",
"integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==",
"requires": {
"char-regex": "^2.0.0",
"strip-ansi": "^7.0.1"
}
}
}
},
"test-exclude": {
"version": "5.2.3",
@@ -13919,6 +14082,17 @@
"ansi-styles": "^3.2.0",
"string-width": "^3.0.0",
"strip-ansi": "^5.0.0"
},
"dependencies": {
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"wrappy": {
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "pwcli",
"version": "0.0.1",
"version": "1.0.0",
"description": "pwcli CLI",
"private": true,
"types": "build/types/types.d.ts",
@@ -38,7 +38,8 @@
"enquirer": "^2.3.6",
"gluegun": "latest",
"lodash.snakecase": "^4.1.1",
"terminal-table-output": "^1.3.2"
"strip-ansi": "^7.0.1",
"terminal-table-output": "^1.4.0"
},
"devDependencies": {
"@types/jest": "^24.0.18",
@@ -1,4 +1,5 @@
import { GluegunMenuToolbox } from '@lenne.tech/gluegun-menu'
import chalk = require('chalk');
import { defaultMenuSettings } from '../../../../globals';
const tto = require('terminal-table-output').create();
@@ -54,24 +55,62 @@ module.exports = {
const status = (status: string) => {
switch(status) {
case 'NO_STATUS':
return ` (❓) `;
return `(${chalk.red.bold('?')})`;
case 'UPDATE_FAILED':
case 'CREATE_FAILED':
return ` (💔) `;
return `(${chalk.red.bold('FAILED')})`;
case 'UPDATE_IN_PROGRESS':
case 'CREATE_IN_PROGRESS':
return ` (🟡) `;
return `(${chalk.yellow.bold('IN PROGRESS')})`;
case 'UPDATE_COMPLETE':
case 'CREATE_COMPLETE':
return ` (🟢) `;
return `(${chalk.greenBright('OK')})`;
}
}
const stackUrl = (stackname: string) => {
return `https://test-${stackname.split('photowall-test-')[1]}.photowall-test.com/us`;
};
const ellipsis = (a: string, max: number) => {
return a.length > max ? a.substr(0, max) + '..' : a;
};
const timeSince = (date: number) => {
const now = Date.now();
var seconds = Math.floor((now - date) / 1000);
var interval = seconds / 31536000;
if (interval > 1) {
return Math.floor(interval) + " years";
}
interval = seconds / 2592000;
if (interval > 1) {
return `${chalk.red(Math.floor(interval) + " months")}`;
}
interval = seconds / 86400;
if (interval > 1) {
const days = Math.floor(interval);
return `${chalk[days >= 14 ? 'yellow' : 'green'](days + " days")}`;
}
interval = seconds / 3600;
if (interval > 1) {
return `${chalk.green(Math.floor(interval) + " hours")}`;
}
interval = seconds / 60;
if (interval > 1) {
return `${chalk.green(Math.floor(interval) + " minutes")}`;
}
return Math.floor(seconds) + " seconds";
}
tto.line('-');
tto.pushrow(['| status', 'stack', 'branch', 'updated'])
tto.pushrow(['| status', 'stack', 'branch', 'time since update', 'url'])
.line('-');
for (const stack of curratedStacks) {
tto.pushrow([status(stack.status), stack.name, stack.branch, stack.updated]);
const t = new Date(stack.updated);
tto.pushrow([status(stack.status), stack.name, ellipsis(stack.branch, 24), timeSince(t.getTime()), stackUrl(stack.name)]);
}
tto.print(true);
+3385 -3270
View File
File diff suppressed because it is too large Load Diff