UNPKG

@pega/custom-dx-components

Version:

Utility for building custom UI components

147 lines (123 loc) 4.25 kB
import inquirer from 'inquirer'; import chalk from 'chalk'; import { showVersion, getLibraryBased, addDebugLog, checkLibraryAndArchives, getLibraryArchivesVersions, getConfigDefaults, getLocalArchivedLibraryVersionData, getComponentsConfigs, cleanUpTemp } from '../../util.js'; import { getArchiveLibraryQuestions } from './helper.js'; export default async options => { const isLibraryBased = getLibraryBased(); if (!isLibraryBased) { console.log(`Command only supported for ${chalk.bold.green('library mode')} components.`); process.exit(); } await showVersion(); await checkLibraryAndArchives(); addDebugLog('listLibrary', '', '+'); await cleanUpTemp(); let organization; let library; const compDef = getConfigDefaults(); organization = compDef.organization; library = compDef.library; let libraryName; const currentVersion = compDef.buildVersion; let selectedVersion; let libVersions = []; let currentOrStore = ''; if (options.params.length >= 5) { libraryName = options.params[3]; selectedVersion = options.params[4]; if (options.params.length >= 6) { currentOrStore = options.params[5]; } try { libVersions = await getLibraryArchivesVersions(libraryName, ''); } catch (ex) {} } else { const questions = await getArchiveLibraryQuestions(); const answers = await inquirer.prompt(questions); ({ libraryName } = answers); try { libVersions = await getLibraryArchivesVersions(libraryName, ''); } catch (ex) {} if (libVersions.length > 0) { if (selectedVersion === undefined) { const libAnswers = await inquirer.prompt([ { name: 'libVersion', type: 'rawlist', message: 'Enter version', choices: libVersions } ]); selectedVersion = libAnswers.libVersion; } } } let data; // get built on from first component if exists let builtOn = '(date unavailable)'; if (libVersions.length > 0) { if (libraryName === compDef.currentOrgLib && selectedVersion === compDef.buildVersion) { console.log("\nYou've selected the current working library/version."); console.log('You can list current components or the last store of this library/version.'); if (currentOrStore === '') { const archAnswers = await inquirer.prompt([ { name: 'currentOrStore', type: 'rawlist', message: 'Select current or store', default: 'Current', choices: ['Current', 'Store'] } ]); currentOrStore = archAnswers.currentOrStore; } if (currentOrStore === 'Current') { data = await getComponentsConfigs(); builtOn = '(no date - current)'; } else { data = await getLocalArchivedLibraryVersionData(libraryName, selectedVersion); data = JSON.parse(data); if (data[0] && data[0].buildDate) { builtOn = data[0].buildDate; } } } else { data = await getLocalArchivedLibraryVersionData(libraryName, selectedVersion); data = JSON.parse(data); if (data[0] && data[0].buildDate) { builtOn = data[0].buildDate; } } if (data.length === 0) { console.log(chalk.bold.redBright(`No custom components in ${libraryName}/${selectedVersion}`)); process.exit(); } let libData = data.map(component => ({ Component: component.name, Label: component.label, Version: component.version, Type: component.type, 'Sub Type': component.subtype })); console.log(chalk.bold.blueBright(`\nList of ${libraryName}:${selectedVersion} components built on ${builtOn}.`)); console.table(libData, ['Component', 'Label', 'Version', 'Type', 'Sub Type']); } else { // No library with that name console.log(chalk.redBright(`No other library versions for ${libraryName} exist other than current library version.`)); console.log(chalk.redBright(`To see contents for the current library version, enter 'npm run list'.`)); addDebugLog('listLibrary', 'END', '-'); process.exit(); } addDebugLog('listLibrary', 'END', '-'); return true; };