1
ewconfig/scripts/mc-log-cat

35 lines
1013 B
Python
Executable File

#! /usr/bin/env python3
import sys
import argparse
import subprocess
from pathlib import Path
def main() -> int:
ap = argparse.ArgumentParser(prog="mc-log-cat", description="Analyze a set of Minecraft logs")
ap.add_argument("logs_dir", help="Path to the logs directory", type=Path)
args = ap.parse_args()
# Find all compressed (old) logs
compressed_logs = list(args.logs_dir.glob("*.log.gz"))
compressed_logs.sort()
# Non-destructively read the contents of each archive
log_files = []
for file in compressed_logs:
file_contents = subprocess.run(["gunzip", "-c", file.as_posix()], capture_output=True, text=True)
log_files.append(file_contents.stdout)
# Read and append the most recent log
if args.logs_dir.joinpath("latest.log").exists():
log_files.append(args.logs_dir.joinpath("latest.log").read_text())
# Print the logs
for log in log_files:
print(log)
return 0
if __name__ == "__main__":
sys.exit(main())