Files
Z-Dot/.config/hypr/scripts/old/other/Sync_Src&Dest-Folders.py
T
2026-01-19 19:14:04 +01:00

60 lines
2.1 KiB
Python

import os
from datetime import datetime
import shutil
import re
FOLDERS = [
"/home/inorishio/.config/nvim/",
"/home/inorishio/.config/hypr/",
"/home/inorishio/.config/yay",
"/home/inorishio/.config/zshrc/",
"/home/inorishio/.config/zellij/",
"/home/inorishio/.config/ohmyposh/",
"/home/inorishio/.config/fastfetch/"
]
GITREPO = "/home/inorishio/Documents/Git/Hyprland/Programs/"
EXCLUDE_PATTERN = re.compile(r'.*\.git$')
def get_file_date(filepath):
return os.path.getmtime(filepath)
def sync_folders():
for folder in FOLDERS:
if not os.path.exists(folder):
continue
for root, _, files in os.walk(folder):
for file in files:
source_path = os.path.join(root, file)
# Apply regex pattern to exclude files
if EXCLUDE_PATTERN.match(file):
continue
# Create corresponding path in GITREPO
relative_path = os.path.relpath(source_path, folder)
dest_path = os.path.join(GITREPO, relative_path)
# Ensure destination directory exists
os.makedirs(os.path.dirname(dest_path), exist_ok=True)
try:
# Compare modification times
if os.path.exists(dest_path):
source_time = get_file_date(source_path)
dest_time = get_file_date(dest_path)
if source_time > dest_time:
shutil.copy2(source_path, dest_path)
elif dest_time > source_time:
shutil.copy2(dest_path, source_path)
else:
# If file doesn't exist in destination, copy it
shutil.copy2(source_path, dest_path)
except Exception as e:
print(f"Error copying file {source_path} to {dest_path}: {e}")
if __name__ == "__main__":
sync_folders()