Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 2x 2x 12x 12x 12x 12x 10x 8x 7x 6x 3x 3x 3x 2x 4x 11x 2x | 'use strict';
import {listSubfoldersFilesByFolderName} from '@owservable/folders';
import ActionAsCommandInterface from '../interfaces/action.as.command.interface';
export const findCommandAction: Function = (root: string, cliCommand: string): ActionAsCommandInterface | null => {
const actionPaths: string[] = listSubfoldersFilesByFolderName(root, 'actions');
for (const actionPath of actionPaths) {
try {
const ActionClass: new () => ActionAsCommandInterface = require(actionPath).default;
if (!ActionClass) continue;
const actionInstance: ActionAsCommandInterface = new ActionClass();
// Add signature validation
const signature: string | undefined = actionInstance.signature();
if (!signature || typeof signature !== 'string') continue;
// Parse command from signature with validation
const signatureParts: string[] = signature.trim().split(/\s+/);
const actionCommand: string = signatureParts[0];
if (!actionCommand || actionCommand.length === 0) continue;
if (cliCommand === actionCommand) return actionInstance;
} catch (error) {
// Skip malformed or problematic action files, continue searching
console.warn(`[@owservable/actions] Failed to load action from ${actionPath}:`, error instanceof Error ? error.message : error);
}
}
return null;
};
export default findCommandAction;
|