104 lines
3.3 KiB
Python
104 lines
3.3 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import sys
|
|
import shutil # Import shutil for recursive directory deletion
|
|
|
|
def print_green(text):
|
|
print("\033[1;32m" + text + "\033[0m")
|
|
|
|
def print_magenta_prompt():
|
|
print("\033[0;35m> ", end="", flush=True)
|
|
|
|
def main():
|
|
"""
|
|
Cleans up specified files from the game server's channels directory.
|
|
"""
|
|
# List of files to remove, including file extensions.
|
|
FILES_TO_CLEAN = ['.core', 'syserr.log', 'syslog.log', '.txt', 'pid', 'stdout']
|
|
|
|
# 🌟 NEW: File in the current directory to remove
|
|
ROOT_FILES_TO_CLEAN = ['pids.json']
|
|
|
|
# The base directory to start the cleanup from.
|
|
# This assumes the script is run from the root of the game installation.
|
|
root_dir = os.getcwd() # The script's execution directory
|
|
base_dir = os.path.join(root_dir, 'channels')
|
|
|
|
print_green("Starting cleanup...")
|
|
|
|
# --- 1. Clean up files in the root directory (where 'channels' is) ---
|
|
print(f"Scanning '{root_dir}' for root files...")
|
|
for filename in ROOT_FILES_TO_CLEAN:
|
|
file_path = os.path.join(root_dir, filename)
|
|
|
|
if os.path.exists(file_path):
|
|
try:
|
|
os.remove(file_path)
|
|
print(f" - Removed '{filename}' from root.")
|
|
except OSError as e:
|
|
print(f" - Error removing '{filename}': {e}")
|
|
|
|
# --- 2. Clean up 'channels' directory and its subdirectories ---
|
|
print_green("Starting cleanup in '" + base_dir + "'...")
|
|
|
|
if not os.path.exists(base_dir):
|
|
print(f"Error: Directory '{base_dir}' not found.")
|
|
sys.exit(1)
|
|
|
|
# Use os.walk to recursively search for files.
|
|
for root, dirs, files in os.walk(base_dir, topdown=False):
|
|
# Determine if the current directory is a target for cleanup.
|
|
is_target_dir = False
|
|
|
|
if os.path.basename(root) in ['auth', 'db']:
|
|
is_target_dir = True
|
|
elif os.path.basename(os.path.dirname(root)).startswith('channel') and os.path.basename(root).startswith('core'):
|
|
is_target_dir = True
|
|
|
|
if is_target_dir:
|
|
print(f"\nScanning '{os.path.relpath(root, base_dir)}'...")
|
|
|
|
# 🌟 NEW: Empty the 'log' subdirectory if it exists
|
|
log_dir_path = os.path.join(root, 'log')
|
|
|
|
if os.path.exists(log_dir_path) and os.path.isdir(log_dir_path):
|
|
print(f"\nScanning '{os.path.relpath(root, base_dir)}'...")
|
|
print(f" - Cleaning 'log' directory in '{os.path.relpath(root, base_dir)}'")
|
|
|
|
try:
|
|
# Iterate over all files and directories inside the 'log' folder
|
|
for item in os.listdir(log_dir_path):
|
|
item_path = os.path.join(log_dir_path, item)
|
|
|
|
if os.path.isdir(item_path):
|
|
# If it's a directory, recursively delete it
|
|
shutil.rmtree(item_path)
|
|
print(f" - Removed directory: '{item}'")
|
|
else:
|
|
# If it's a file, delete the file
|
|
os.remove(item_path)
|
|
print(f" - Removed file: '{item}'")
|
|
|
|
except OSError as e:
|
|
print(f" - Error cleaning 'log' directory at '{os.path.relpath(log_dir_path, base_dir)}': {e}")
|
|
|
|
for filename in files:
|
|
for file_to_clean in FILES_TO_CLEAN:
|
|
if filename.endswith(file_to_clean):
|
|
file_path = os.path.join(root, filename)
|
|
|
|
try:
|
|
os.remove(file_path)
|
|
print(f" - Removed '{os.path.relpath(file_path, base_dir)}'")
|
|
except OSError as e:
|
|
print(f" - Error removing '{file_path}': {e}")
|
|
|
|
print_green("\nCleanup complete.")
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
main()
|
|
finally:
|
|
print("\033[0m", end="", flush=True)
|