forked from metin-server/m2dev-server
feat: Fixes in DB engines, SQL queries, added and improved Python management scripts, changed max level.
This commit is contained in:
103
clear.py
Normal file
103
clear.py
Normal file
@@ -0,0 +1,103 @@
|
||||
#!/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)
|
||||
Reference in New Issue
Block a user