801878cb2b
add `function:logs` and `function:execute` cli commands
63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
import chalk from 'chalk';
|
|
import { CURRENT_EXECUTION_DIRECTORY } from '@/cli/utilities/config/constants/current-execution-directory';
|
|
import { ApiService } from '@/cli/utilities/api/services/api.service';
|
|
import { buildManifest } from '@/cli/utilities/manifest/utils/manifest-build';
|
|
|
|
export class FunctionLogsCommand {
|
|
private apiService = new ApiService();
|
|
|
|
async execute({
|
|
appPath = CURRENT_EXECUTION_DIRECTORY,
|
|
functionUniversalIdentifier,
|
|
functionName,
|
|
}: {
|
|
appPath?: string;
|
|
functionUniversalIdentifier?: string;
|
|
functionName?: string;
|
|
}): Promise<void> {
|
|
try {
|
|
const { manifest } = await buildManifest(appPath);
|
|
this.logWatchInfo({
|
|
appName: manifest.application.displayName,
|
|
functionUniversalIdentifier,
|
|
functionName,
|
|
});
|
|
await this.apiService.subscribeToLogs({
|
|
applicationUniversalIdentifier:
|
|
manifest.application.universalIdentifier,
|
|
functionUniversalIdentifier,
|
|
functionName,
|
|
});
|
|
} catch (error) {
|
|
console.error(
|
|
chalk.red('Watch logs failed:'),
|
|
error instanceof Error ? error.message : error,
|
|
);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
private logWatchInfo({
|
|
appName,
|
|
functionUniversalIdentifier,
|
|
functionName,
|
|
}: {
|
|
appName?: string;
|
|
functionUniversalIdentifier?: string;
|
|
functionName?: string;
|
|
}): void {
|
|
const appPath = appName ?? 'Twenty Application';
|
|
|
|
const functionIdentifier =
|
|
functionUniversalIdentifier || functionName
|
|
? `function "${functionUniversalIdentifier || functionName}"`
|
|
: 'functions';
|
|
|
|
console.log(
|
|
chalk.blue(`🚀 Watching ${appPath} ${functionIdentifier} logs:`),
|
|
);
|
|
|
|
console.log('');
|
|
}
|
|
}
|