Initial upload: Local AI Commit Reviewer CLI with CI/CD workflow
This commit is contained in:
66
src/utils/utils.py
Normal file
66
src/utils/utils.py
Normal file
@@ -0,0 +1,66 @@
|
||||
import logging
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def setup_logging(level: str = "info", log_file: str | None = None) -> logging.Logger:
|
||||
logger = logging.getLogger("aicr")
|
||||
logger.setLevel(getattr(logging, level.upper(), logging.INFO))
|
||||
|
||||
formatter = logging.Formatter(
|
||||
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
||||
)
|
||||
|
||||
stream_handler = logging.StreamHandler(sys.stdout)
|
||||
stream_handler.setFormatter(formatter)
|
||||
logger.addHandler(stream_handler)
|
||||
|
||||
if log_file:
|
||||
file_handler = logging.FileHandler(log_file)
|
||||
file_handler.setFormatter(formatter)
|
||||
logger.addHandler(file_handler)
|
||||
|
||||
return logger
|
||||
|
||||
|
||||
def get_file_language(filename: str) -> str:
|
||||
ext_map = {
|
||||
".py": "python",
|
||||
".js": "javascript",
|
||||
".ts": "typescript",
|
||||
".go": "go",
|
||||
".rs": "rust",
|
||||
".java": "java",
|
||||
".c": "c",
|
||||
".cpp": "cpp",
|
||||
".h": "c",
|
||||
".hpp": "cpp",
|
||||
".jsx": "javascript",
|
||||
".tsx": "typescript",
|
||||
".rb": "ruby",
|
||||
".php": "php",
|
||||
".swift": "swift",
|
||||
".kt": "kotlin",
|
||||
".scala": "scala",
|
||||
}
|
||||
ext = Path(filename).suffix.lower()
|
||||
return ext_map.get(ext, "unknown")
|
||||
|
||||
|
||||
def sanitize_output(text: str) -> str:
|
||||
return text.strip()
|
||||
|
||||
|
||||
def truncate_text(text: str, max_length: int = 2000, suffix: str = "...") -> str:
|
||||
if len(text) <= max_length:
|
||||
return text
|
||||
return text[:max_length - len(suffix)] + suffix
|
||||
|
||||
|
||||
def format_file_size(size: float) -> str:
|
||||
KB_SIZE = 1024
|
||||
for unit in ["B", "KB", "MB", "GB"]:
|
||||
if size < KB_SIZE:
|
||||
return f"{size:.1f}{unit}"
|
||||
size /= 1024
|
||||
return f"{size:.1f}TB"
|
||||
Reference in New Issue
Block a user