78 lines
2.4 KiB
JavaScript
78 lines
2.4 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Statusline CLI
|
|
*
|
|
* Generate statusline output for Claude Code integration.
|
|
*
|
|
* Usage:
|
|
* statusline Output formatted statusline
|
|
* statusline --json Output JSON data
|
|
* statusline --compact Output compact JSON
|
|
*/
|
|
|
|
import { fileURLToPath } from 'url';
|
|
import { dirname } from 'path';
|
|
import { StatuslineGenerator, parseStatuslineData } from '../dist/statusline/index.js';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = dirname(__filename);
|
|
|
|
// Parse command line arguments
|
|
const args = process.argv.slice(2);
|
|
const jsonMode = args.includes('--json');
|
|
const compactMode = args.includes('--compact');
|
|
const helpMode = args.includes('--help') || args.includes('-h');
|
|
|
|
async function main() {
|
|
if (helpMode) {
|
|
console.log(`
|
|
Statusline - V3 Hooks System Status Generator
|
|
|
|
Usage:
|
|
statusline Output formatted statusline (default)
|
|
statusline --json Output JSON data
|
|
statusline --compact Output compact JSON (single line)
|
|
statusline --help Show this help
|
|
|
|
Environment Variables:
|
|
CLAUDE_FLOW_STATUSLINE_REFRESH Refresh interval in ms
|
|
CLAUDE_FLOW_SHOW_HOOKS_METRICS Show hooks metrics (true/false)
|
|
CLAUDE_FLOW_SHOW_SWARM_ACTIVITY Show swarm activity (true/false)
|
|
CLAUDE_FLOW_SHOW_PERFORMANCE Show performance targets (true/false)
|
|
|
|
Examples:
|
|
statusline # Display formatted status
|
|
statusline --json | jq # Parse JSON output
|
|
statusline --compact # Single line JSON for scripting
|
|
`);
|
|
process.exit(0);
|
|
}
|
|
|
|
// Create generator with environment-based config
|
|
const generator = new StatuslineGenerator({
|
|
enabled: true,
|
|
refreshOnHook: true,
|
|
showHooksMetrics: process.env.CLAUDE_FLOW_SHOW_HOOKS_METRICS !== 'false',
|
|
showSwarmActivity: process.env.CLAUDE_FLOW_SHOW_SWARM_ACTIVITY !== 'false',
|
|
showPerformance: process.env.CLAUDE_FLOW_SHOW_PERFORMANCE !== 'false',
|
|
});
|
|
|
|
// Try to read from metrics database or files
|
|
// In real implementation, this would read from SQLite
|
|
// For now, use default data
|
|
|
|
if (compactMode) {
|
|
console.log(generator.generateCompactJSON());
|
|
} else if (jsonMode) {
|
|
console.log(generator.generateJSON());
|
|
} else {
|
|
console.log(generator.generateStatusline());
|
|
}
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error('Statusline error:', error.message);
|
|
process.exit(1);
|
|
});
|