hana-cli
Version:
HANA Developer Command Line Interface
284 lines (254 loc) • 20.7 kB
JavaScript
// @ts-check
/**
* @module commandMetadata - Central registry for command documentation categories and relationships
*
* This file maps each command to:
* - Its documentation category (used in URLs)
* - Related commands (shown in "see also" section)
*
* Easy to maintain mapping for help output generation.
*/
export const commandMetadata = {
// Data Tools
import: { category: 'data-tools', relatedCommands: ['export', 'dataValidator'] },
imp: { category: 'data-tools', relatedCommands: ['export', 'dataValidator'] },
uploadData: { category: 'data-tools', relatedCommands: ['export', 'dataValidator'] },
uploaddata: { category: 'data-tools', relatedCommands: ['export', 'dataValidator'] },
export: { category: 'data-tools', relatedCommands: ['import', 'massExport'] },
exp: { category: 'data-tools', relatedCommands: ['import', 'massExport'] },
downloadData: { category: 'data-tools', relatedCommands: ['import', 'massExport'] },
downloaddata: { category: 'data-tools', relatedCommands: ['import', 'massExport'] },
compareData: { category: 'data-tools', relatedCommands: ['compareSchema', 'dataDiff'] },
compareSchema: { category: 'data-tools', relatedCommands: ['compareData', 'schemaClone'] },
dataDiff: { category: 'data-tools', relatedCommands: ['compareData', 'dataValidator'] },
dataValidator: { category: 'data-tools', relatedCommands: ['import', 'dataProfile'] },
dataProfile: { category: 'data-tools', relatedCommands: ['dataValidator', 'duplicateDetection'] },
dataSync: { category: 'data-tools', relatedCommands: ['import', 'export'] },
duplicateDetection: { category: 'data-tools', relatedCommands: ['dataProfile', 'dataValidator'] },
kafkaConnect: { category: 'data-tools', relatedCommands: ['dataSync', 'import'] },
dataLineage: { category: 'data-tools', relatedCommands: ['dataProfile', 'compareData'] },
dataMask: { category: 'data-tools', relatedCommands: ['dataValidator', 'import'] },
// Schema Tools
tables: { category: 'schema-tools', relatedCommands: ['inspectTable', 'tableGroups', 'schemas'] },
schemas: { category: 'schema-tools', relatedCommands: ['objects', 'schemaClone', 'tables'] },
schemaClone: { category: 'schema-tools', relatedCommands: ['schemas', 'tables', 'export'] },
views: { category: 'schema-tools', relatedCommands: ['inspectView', 'tables', 'procedures'] },
procedures: { category: 'schema-tools', relatedCommands: ['inspectProcedure', 'functions', 'views'] },
functions: { category: 'schema-tools', relatedCommands: ['inspectFunction', 'procedures', 'objects'] },
indexes: { category: 'schema-tools', relatedCommands: ['inspectIndex', 'tables', 'tableHotspots'] },
objects: { category: 'schema-tools', relatedCommands: ['schemas', 'tables', 'views'] },
sequences: { category: 'schema-tools', relatedCommands: ['tables', 'objects'] },
libraries: { category: 'schema-tools', relatedCommands: ['inspectLibrary', 'inspectLibMember'] },
synonyms: { category: 'schema-tools', relatedCommands: ['tables', 'views', 'procedures'] },
triggers: { category: 'schema-tools', relatedCommands: ['inspectTrigger', 'procedures', 'tables'] },
// Object Inspection
inspectTable: { category: 'object-inspection', relatedCommands: ['tables', 'inspectView', 'columnStats'] },
inspectView: { category: 'object-inspection', relatedCommands: ['views', 'inspectTable', 'inspectProcedure'] },
inspectProcedure: { category: 'object-inspection', relatedCommands: ['procedures', 'inspectFunction', 'callProcedure'] },
inspectFunction: { category: 'object-inspection', relatedCommands: ['functions', 'inspectProcedure'] },
inspectIndex: { category: 'object-inspection', relatedCommands: ['indexes', 'tables', 'tableHotspots'] },
inspectJWT: { category: 'object-inspection', relatedCommands: ['createJWT'] },
inspectLibrary: { category: 'object-inspection', relatedCommands: ['libraries', 'inspectLibMember'] },
inspectLibMember: { category: 'object-inspection', relatedCommands: ['libraries', 'inspectLibrary'] },
inspectTrigger: { category: 'object-inspection', relatedCommands: ['triggers', 'inspectProcedure', 'tables'] },
inspectTableUI: { category: 'object-inspection', relatedCommands: ['tables', 'inspectTable'] },
// Analysis Tools
calcViewAnalyzer: { category: 'analysis-tools', relatedCommands: ['views', 'erdDiagram'] },
erdDiagram: { category: 'analysis-tools', relatedCommands: ['calcViewAnalyzer', 'schemaClone', 'graphWorkspaces'] },
graphWorkspaces: { category: 'analysis-tools', relatedCommands: ['erdDiagram', 'objects'] },
privilegeAnalysis: { category: 'analysis-tools', relatedCommands: ['roles', 'users', 'grantChains'] },
grantChains: { category: 'analysis-tools', relatedCommands: ['privilegeAnalysis', 'privilegeError', 'roles'] },
privilegeError: { category: 'analysis-tools', relatedCommands: ['grantChains', 'privilegeAnalysis'] },
referentialCheck: { category: 'analysis-tools', relatedCommands: ['tables', 'compareData', 'dataValidator'] },
// Performance Monitoring
expensiveStatements: { category: 'performance-monitoring', relatedCommands: ['longRunning', 'queryPlan', 'blocking'] },
longRunning: { category: 'performance-monitoring', relatedCommands: ['expensiveStatements', 'deadlocks', 'blocking'] },
deadlocks: { category: 'performance-monitoring', relatedCommands: ['longRunning', 'blocking', 'healthCheck'] },
blocking: { category: 'performance-monitoring', relatedCommands: ['deadlocks', 'longRunning', 'connections'] },
queryPlan: { category: 'performance-monitoring', relatedCommands: ['querySimple', 'expensiveStatements'] },
querySimple: { category: 'performance-monitoring', relatedCommands: ['queryPlan', 'expensiveStatements'] },
querySimpleUI: { category: 'performance-monitoring', relatedCommands: ['querySimple'] },
columnStats: { category: 'performance-monitoring', relatedCommands: ['tables', 'inspectTable', 'tableHotspots'] },
tableHotspots: { category: 'performance-monitoring', relatedCommands: ['columnStats', 'indexes', 'inspectTable'] },
indexTest: { category: 'performance-monitoring', relatedCommands: ['indexes', 'tableHotspots'] },
memoryAnalysis: { category: 'performance-monitoring', relatedCommands: ['memoryLeaks', 'healthCheck', 'systemInfo'] },
memoryLeaks: { category: 'performance-monitoring', relatedCommands: ['memoryAnalysis', 'healthCheck'] },
fragmentationCheck: { category: 'performance-monitoring', relatedCommands: ['reclaim', 'healthCheck'] },
reclaim: { category: 'performance-monitoring', relatedCommands: ['fragmentationCheck', 'dataVolumes'] },
// Backup & Recovery
backup: { category: 'backup-recovery', relatedCommands: ['backupStatus', 'backupList', 'restore'] },
backupStatus: { category: 'backup-recovery', relatedCommands: ['backup', 'backupList', 'replicationStatus'] },
backupList: { category: 'backup-recovery', relatedCommands: ['backup', 'backupStatus', 'restore'] },
restore: { category: 'backup-recovery', relatedCommands: ['backup', 'backupList', 'backupStatus'] },
replicationStatus: { category: 'backup-recovery', relatedCommands: ['backupStatus', 'backup', 'healthCheck'] },
// System Information
systemInfo: { category: 'system-admin', relatedCommands: ['status', 'healthCheck', 'version'] },
systemInfoUI: { category: 'system-admin', relatedCommands: ['systemInfo', 'healthCheck'] },
status: { category: 'system-admin', relatedCommands: ['systemInfo', 'healthCheck', 'connections'] },
healthCheck: { category: 'system-admin', relatedCommands: ['systemInfo', 'status', 'diagnose'] },
version: { category: 'system-tools', relatedCommands: ['systemInfo', 'status'] },
diagnose: { category: 'system-admin', relatedCommands: ['healthCheck', 'systemInfo', 'status'] },
// Users & Roles
users: { category: 'security', relatedCommands: ['roles', 'inspectUser', 'massUsers'] },
roles: { category: 'security', relatedCommands: ['users', 'inspectUser', 'grantChains'] },
inspectUser: { category: 'security', relatedCommands: ['users', 'roles', 'pwdPolicy'] },
massUsers: { category: 'mass-operations', relatedCommands: ['users', 'roles', 'massGrant'] },
massGrant: { category: 'mass-operations', relatedCommands: ['massUsers', 'users', 'roles'] },
pwdPolicy: { category: 'security', relatedCommands: ['users', 'inspectUser'] },
createXSAAdmin: { category: 'security', relatedCommands: ['users', 'roles', 'createGroup'] },
createGroup: { category: 'security', relatedCommands: ['createXSAAdmin', 'users', 'roles'] },
dropGroup: { category: 'security', relatedCommands: ['createGroup', 'users', 'roles'] },
// Mass Operations
massExport: { category: 'mass-operations', relatedCommands: ['export', 'massDelete'] },
massDelete: { category: 'mass-operations', relatedCommands: ['massExport', 'massUpdate'] },
massUpdate: { category: 'mass-operations', relatedCommands: ['massDelete', 'massConvert'] },
massConvert: { category: 'mass-operations', relatedCommands: ['massUpdate', 'massRename'] },
massConvertUI: { category: 'mass-operations', relatedCommands: ['massConvert'] },
massRename: { category: 'mass-operations', relatedCommands: ['massConvert', 'massUpdate'] },
// Connection & Authentication
connect: { category: 'connection-auth', relatedCommands: ['connections', 'connectViaServiceKey', 'config'] },
connections: { category: 'connection-auth', relatedCommands: ['connect', 'connectViaServiceKey', 'status'] },
connectViaServiceKey: { category: 'connection-auth', relatedCommands: ['connect', 'connections', 'config'] },
config: { category: 'connection-auth', relatedCommands: ['connect', 'connections'] },
copy2DefaultEnv: { category: 'connection-auth', relatedCommands: ['connect', 'config', 'copy2Env'] },
copy2Env: { category: 'connection-auth', relatedCommands: ['connect', 'config', 'copy2Secrets'] },
copy2Secrets: { category: 'connection-auth', relatedCommands: ['connect', 'copy2Env'] },
createJWT: { category: 'connection-auth', relatedCommands: ['inspectJWT', 'connectViaServiceKey'] },
// BTP Integration
btp: { category: 'btp-integration', relatedCommands: ['btpInfo', 'btpTarget', 'btpSubs', 'hanaCloudInstances'] },
btpInfo: { category: 'btp-integration', relatedCommands: ['btp', 'btpTarget', 'btpSubs'] },
btpInfoUI: { category: 'btp-integration', relatedCommands: ['btpInfo', 'btp'] },
btpTarget: { category: 'btp-integration', relatedCommands: ['btp', 'btpInfo', 'btpSubs'] },
btpSubs: { category: 'btp-integration', relatedCommands: ['btp', 'btpInfo', 'hanaCloudInstances'] },
// HANA Cloud
hanaCloudInstances: { category: 'hana-cloud', relatedCommands: ['hanaCloudStart', 'hanaCloudStop', 'hanaCloudHDIInstances'] },
hanaCloudStart: { category: 'hana-cloud', relatedCommands: ['hanaCloudStop', 'hanaCloudInstances'] },
hanaCloudStop: { category: 'hana-cloud', relatedCommands: ['hanaCloudStart', 'hanaCloudInstances'] },
hanaCloudHDIInstances: { category: 'hana-cloud', relatedCommands: ['hanaCloudInstances', 'adminHDI'] },
hanaCloudHDIInstancesUI: { category: 'hana-cloud', relatedCommands: ['hanaCloudHDIInstances'] },
hanaCloudSchemaInstances: { category: 'hana-cloud', relatedCommands: ['hanaCloudInstances', 'schemas'] },
hanaCloudSchemaInstancesUI: { category: 'hana-cloud', relatedCommands: ['hanaCloudSchemaInstances'] },
hanaCloudSBSSInstances: { category: 'hana-cloud', relatedCommands: ['hanaCloudInstances'] },
hanaCloudSBSSInstancesUI: { category: 'hana-cloud', relatedCommands: ['hanaCloudSBSSInstances'] },
hanaCloudSecureStoreInstances: { category: 'hana-cloud', relatedCommands: ['hanaCloudInstances', 'certificates'] },
hanaCloudSecureStoreInstancesUI: { category: 'hana-cloud', relatedCommands: ['hanaCloudSecureStoreInstances'] },
hanaCloudUPSInstances: { category: 'hana-cloud', relatedCommands: ['hanaCloudInstances'] },
hanaCloudUPSInstancesUI: { category: 'hana-cloud', relatedCommands: ['hanaCloudUPSInstances'] },
// HDI Management
adminHDI: { category: 'hdi-management', relatedCommands: ['adminHDIGroup', 'hanaCloudHDIInstances'] },
adminHDIGroup: { category: 'hdi-management', relatedCommands: ['adminHDI', 'activateHDI'] },
activateHDI: { category: 'hdi-management', relatedCommands: ['adminHDI', 'adminHDIGroup', 'cds'] },
createModule: { category: 'developer-tools', relatedCommands: ['generateTestData', 'codeTemplate'] },
dropContainer: { category: 'hdi-management', relatedCommands: ['createContainer', 'containers'] },
createContainer: { category: 'hdi-management', relatedCommands: ['dropContainer', 'containers', 'createContainerUsers'] },
createContainerUsers: { category: 'hdi-management', relatedCommands: ['createContainer', 'users'] },
containers: { category: 'hdi-management', relatedCommands: ['createContainer', 'dropContainer', 'containersUI'] },
containersUI: { category: 'hdi-management', relatedCommands: ['containers'] },
// Development Tools
cds: { category: 'developer-tools', relatedCommands: ['activateHDI', 'generateDocs', 'codeTemplate'] },
codeTemplate: { category: 'developer-tools', relatedCommands: ['createModule', 'generateTestData'] },
generateTestData: { category: 'developer-tools', relatedCommands: ['codeTemplate', 'import', 'dataProfile'] },
generateDocs: { category: 'developer-tools', relatedCommands: ['viewDocs', 'helpDocu', 'readMe'] },
examples: { category: 'developer-tools', relatedCommands: ['viewDocs', 'interactive', 'kb'] },
callProcedure: { category: 'developer-tools', relatedCommands: ['inspectProcedure', 'procedures'] },
hdbsql: { category: 'developer-tools', relatedCommands: ['querySimple', 'callProcedure'] },
test: { category: 'developer-tools', relatedCommands: ['cds', 'activateHDI'] },
// Security
certificates: { category: 'security', relatedCommands: ['certificatesUI', 'encryptionStatus'] },
certificatesUI: { category: 'security', relatedCommands: ['certificates'] },
encryptionStatus: { category: 'security', relatedCommands: ['certificates', 'healthCheck'] },
securityScan: { category: 'security', relatedCommands: ['pwdPolicy', 'users', 'healthCheck'] },
auditLog: { category: 'security', relatedCommands: ['systemInfo', 'securityScan'] },
// System Tools & Utilities
hostInformation: { category: 'system-tools', relatedCommands: ['systemInfo', 'disks', 'ports'] },
disks: { category: 'system-tools', relatedCommands: ['hostInformation', 'dataVolumes', 'ports'] },
dataVolumes: { category: 'system-tools', relatedCommands: ['disks', 'fragmentationCheck', 'reclaim'] },
ports: { category: 'system-tools', relatedCommands: ['hostInformation', 'disks', 'systemInfo'] },
cacheStats: { category: 'system-tools', relatedCommands: ['memoryAnalysis', 'systemInfo'] },
alerts: { category: 'system-tools', relatedCommands: ['healthCheck', 'systemInfo'] },
// Database Utilities
spatialData: { category: 'system-tools', relatedCommands: ['tables', 'dataProfile'] },
ftIndexes: { category: 'schema-tools', relatedCommands: ['indexes', 'tables'] },
sdiTasks: { category: 'developer-tools', relatedCommands: ['dataSync', 'connections'] },
timeSeriesTools: { category: 'developer-tools', relatedCommands: ['tables', 'dataProfile'] },
workloadManagement: { category: 'system-admin', relatedCommands: ['status', 'longRunning', 'healthCheck'] },
traceContents: { category: 'system-tools', relatedCommands: ['traces', 'diagnose'] },
traces: { category: 'system-tools', relatedCommands: ['traceContents', 'healthCheck'] },
crashDumps: { category: 'system-tools', relatedCommands: ['diagnose', 'healthCheck'] },
xsaServices: { category: 'system-admin', relatedCommands: ['systemInfo', 'status'] },
// UI Commands
UI: { category: 'developer-tools', relatedCommands: ['readMeUI', 'helpDocu'] },
readMeUI: { category: 'developer-tools', relatedCommands: ['readMe', 'UI', 'openReadMe'] },
readMe: { category: 'developer-tools', relatedCommands: ['readMeUI', 'helpDocu', 'openReadMe'] },
openReadMe: { category: 'developer-tools', relatedCommands: ['readMe', 'helpDocu'] },
helpDocu: { category: 'developer-tools', relatedCommands: ['viewDocs', 'kb', 'readMe'] },
viewDocs: { category: 'developer-tools', relatedCommands: ['helpDocu', 'kb', 'examples'] },
kb: { category: 'developer-tools', relatedCommands: ['viewDocs', 'helpDocu', 'examples'] },
interactive: { category: 'developer-tools', relatedCommands: ['helpDocu', 'examples', 'kb'] },
openChangeLog: { category: 'system-tools', relatedCommands: ['changeLog', 'version'] },
changeLog: { category: 'system-tools', relatedCommands: ['changeLogUI', 'openChangeLog', 'version'] },
changeLogUI: { category: 'system-tools', relatedCommands: ['changeLog'] },
openDBExplorer: { category: 'schema-tools', relatedCommands: ['tables', 'schemas', 'objects'] },
openBAS: { category: 'developer-tools', relatedCommands: ['cds', 'activateHDI'] },
issue: { category: 'developer-tools', relatedCommands: ['diagnose', 'helpDocu'] },
mcpServerInstall: { category: 'developer-tools', relatedCommands: ['mcpServerStatus', 'helpDocu'] },
mcpServerStatus: { category: 'developer-tools', relatedCommands: ['mcpServerInstall', 'helpDocu'] },
// UI Feature Flags
features: { category: 'system-tools', relatedCommands: ['featuresUI', 'systemInfo'] },
featuresUI: { category: 'system-tools', relatedCommands: ['features'] },
featureUsage: { category: 'system-tools', relatedCommands: ['featureUsageUI', 'features'] },
featureUsageUI: { category: 'system-tools', relatedCommands: ['featureUsage'] },
// Table Utilities
tableGroups: { category: 'schema-tools', relatedCommands: ['tables', 'objects'] },
tablesUI: { category: 'schema-tools', relatedCommands: ['tables', 'inspectTable'] },
tablesPG: { category: 'schema-tools', relatedCommands: ['tables', 'tablesSQLite'] },
tablesSQLite: { category: 'schema-tools', relatedCommands: ['tables', 'tablesPG'] },
tableCopy: { category: 'mass-operations', relatedCommands: ['export', 'import', 'tables'] },
partitions: { category: 'schema-tools', relatedCommands: ['tables', 'inspectTable', 'tableHotspots'] },
// Data Type Tools
dataTypes: { category: 'schema-tools', relatedCommands: ['dataTypesUI', 'tables'] },
dataTypesUI: { category: 'schema-tools', relatedCommands: ['dataTypes'] },
// UI Variants
functionsUI: { category: 'schema-tools', relatedCommands: ['functions'] },
importUI: { category: 'data-tools', relatedCommands: ['import'] },
indexesUI: { category: 'schema-tools', relatedCommands: ['indexes'] },
schemasUI: { category: 'schema-tools', relatedCommands: ['schemas'] },
iniContents: { category: 'system-tools', relatedCommands: ['iniFiles', 'config'] },
iniFiles: { category: 'system-tools', relatedCommands: ['iniContents', 'config'] },
// Special/Legacy
rick: { category: 'system-tools', relatedCommands: ['version', 'healthCheck'] },
// Recommendations
recommendations: { category: 'performance-monitoring', relatedCommands: ['healthCheck', 'expensiveStatements'] },
dependencies: { category: 'analysis-tools', relatedCommands: ['objects', 'views', 'procedures'] },
// Add default for any unmapped commands
}
/**
* Get metadata for a command
* @param {string} commandName - The command name (including aliases)
* @returns {Object|null} Metadata object or null if not found
*/
export function getCommandMetadata(commandName) {
return commandMetadata[commandName] || null
}
/**
* Get primary command name from alias
* @param {string} commandOrAlias - The command or alias name
* @returns {string} The canonical command name
*/
export function getPrimaryCommand(commandOrAlias) {
const meta = commandMetadata[commandOrAlias]
if (!meta) return commandOrAlias
// Find the primary (non-alias) command by looking for one without the same metadata in the canonical form
// For simplicity, return the first one found with this metadata
for (const [cmd, metadata] of Object.entries(commandMetadata)) {
if (metadata === meta && !['imp', 'exp', 'uploadData', 'downloadData'].includes(cmd)) {
return cmd
}
}
return commandOrAlias
}
export default {
commandMetadata,
getCommandMetadata,
getPrimaryCommand
}