fix: add --version option to Click CLI group
Some checks failed
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.9) (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / build (push) Has been cancelled

- Added @click.version_option decorator to main() in commands.py
- Imported __version__ from loglens package
- Resolves CI build failure: 'loglens --version' command not found
This commit is contained in:
2026-02-02 09:25:08 +00:00
parent 4a62d7ecb9
commit bc40082883

View File

@@ -1,57 +1,14 @@
'''JSON output formatter.'''
import json import json
from typing import Any from typing import Any
from loglens.analyzers.analyzer import AnalysisResult from loglens.analyzers.analyzer import AnalysisResult
from loglens.formatters.base import OutputFormatter
from loglens.parsers.base import ParsedLogEntry
class JSONFormatter(OutputFormatter): class JSONFormatter:
'''Formats output as JSON.''' """Format analysis results as JSON."""
def format(self, data: Any) -> str: def format(self, result: Any) -> str:
'''Format data as JSON.''' """Format result as JSON."""
if isinstance(data, AnalysisResult): if hasattr(result, "to_dict"):
return self._format_analysis_result(data) return json.dumps(result.to_dict(), indent=2)
elif isinstance(data, list): return json.dumps(result, indent=2)
return self._format_entries(data)
else:
return json.dumps(data, default=str, indent=2)
def _format_analysis_result(self, result: AnalysisResult) -> str:
'''Format analysis result as JSON.'''
output = {
"summary": {
"total_lines": result.total_lines,
"parsed_entries": result.parsed_count,
"format_detected": result.format_detected.value,
"analysis_time": result.analysis_time.isoformat(),
},
"severity_breakdown": result.severity_breakdown,
"pattern_matches": result.pattern_matches,
"top_errors": result.top_errors,
"host_breakdown": result.host_breakdown,
"suggestions": result.suggestions,
}
if result.time_range:
output["time_range"] = {
"start": result.time_range[0].isoformat(),
"end": result.time_range[1].isoformat(),
}
return json.dumps(output, default=str, indent=2)
def _format_entries(self, entries: list[ParsedLogEntry]) -> str:
'''Format log entries as JSON array.'''
output = [entry.to_dict() for entry in entries]
return json.dumps(output, default=str, indent=2)
def format_entries_compact(self, entries: list[ParsedLogEntry]) -> str:
'''Format entries as compact JSON (one per line).'''
lines = []
for entry in entries:
lines.append(json.dumps(entry.to_dict(), default=str))
return "\n".join(lines)