[ACA-4231] Added a table format to the scan-env command (#6490)

This commit is contained in:
Thomas Hunter 2021-01-06 09:09:21 +00:00 committed by GitHub
parent f791a7aa98
commit 1f8082d8e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,9 @@
const { AlfrescoApiCompatibility, PeopleApi, NodesApi, GroupsApi, SitesApi, SearchApi } = require('@alfresco/js-api'); const { AlfrescoApiCompatibility, PeopleApi, NodesApi, GroupsApi, SitesApi, SearchApi } = require('@alfresco/js-api');
const program = require('commander'); const program = require('commander');
interface PeopleTally { enabled: number, disabled: number }
interface RowToPrint { label: string, value: number }
const MAX_ATTEMPTS = 10; const MAX_ATTEMPTS = 10;
const TIMEOUT = 60000; const TIMEOUT = 60000;
const MAX_PEOPLE_PER_PAGE = 100; const MAX_PEOPLE_PER_PAGE = 100;
@ -20,22 +23,42 @@ export default async function main(_args: string[]) {
await attemptLogin(); await attemptLogin();
const rowsToPrint: Array<RowToPrint> = [];
const peopleCount = await getPeopleCount(); const peopleCount = await getPeopleCount();
console.log('Active Users :', peopleCount.enabled); rowsToPrint.push({ label: 'Active Users', value: peopleCount.enabled });
console.log('Deactivated Users :', peopleCount.disabled); rowsToPrint.push({ label: 'Deactivated Users', value: peopleCount.disabled });
rowsToPrint.push({ label: "User's Home Folders", value: await getHomeFoldersCount() });
rowsToPrint.push({ label: 'Groups', value: await getGroupsCount() });
rowsToPrint.push({ label: 'Sites', value: await getSitesCount() });
rowsToPrint.push({ label: 'Files', value: await getFilesCount() });
const homeFoldersCount = await getHomeFoldersCount(); console.log(generateTable(rowsToPrint));
console.log("User's Home Folders :", homeFoldersCount);
const groupsCount = await getGroupsCount(); }
console.log('Groups :', groupsCount);
const sitesCount = await getSitesCount(); function generateTable(rowsToPrint: Array<RowToPrint>) {
console.log('Sites :', sitesCount); const columnWidths = rowsToPrint.reduce((maxWidths, row: RowToPrint) => {
return {
labelColumn: Math.max(maxWidths.labelColumn, row.label.length),
valueColumn: Math.max(maxWidths.valueColumn, row.value.toString().length)
};
}, { labelColumn: 12, valueColumn: 1 });
const horizontalLine = ''.padEnd(columnWidths.labelColumn + columnWidths.valueColumn + 5, '═');
const headerText = 'ENVIRONM'.padStart(Math.floor((columnWidths.labelColumn + columnWidths.valueColumn + 3) / 2), ' ')
+ 'ENT SCAN'.padEnd(Math.ceil((columnWidths.labelColumn + columnWidths.valueColumn + 3) / 2), ' ');
const filesCount = await getFilesCount(); const reset = '\x1b[0m', grey = '\x1b[90m', cyan = '\x1b[36m', yellow = '\x1b[93m', bright = '\x1b[1m';
console.log('Files :', filesCount);
let tableString = `${grey}${horizontalLine}${reset}
${grey} ${bright}${cyan}${headerText} ${grey}${reset}
${grey}${horizontalLine}${reset}`;
rowsToPrint.forEach(row => {
tableString += `\n${grey}${reset} ${row.label.padEnd(columnWidths.labelColumn, ' ')} ${yellow}${row.value.toString().padEnd(columnWidths.valueColumn, ' ')} ${grey}${reset}`;
});
tableString += `\n${grey}${horizontalLine}${reset}`;
return tableString;
} }
async function attemptLogin() { async function attemptLogin() {
@ -59,7 +82,6 @@ async function attemptLogin() {
} }
} }
interface PeopleTally { enabled: number, disabled: number }
async function getPeopleCount(skipCount: number = 0): Promise<PeopleTally> { async function getPeopleCount(skipCount: number = 0): Promise<PeopleTally> {
try { try {
const peopleApi = new PeopleApi(jsApiConnection); const peopleApi = new PeopleApi(jsApiConnection);