Initial upload: Local AI Commit Reviewer CLI with CI/CD workflow
Some checks failed
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled

This commit is contained in:
2026-02-05 06:34:43 +00:00
parent ff254f1662
commit 10431e92b3

66
src/utils/utils.py Normal file
View 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"