homepage/watch.py
2025-05-16 17:31:36 +02:00

44 lines
No EOL
1.5 KiB
Python

import time
import os
import subprocess
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class ChangeHandler(FileSystemEventHandler):
def on_modified(self, event):
if event.is_directory:
return
if any(event.src_path.endswith(ext) for ext in ['.md', '.py', '.html', '.css', '.js']):
print(f"File {event.src_path} has been modified")
self.regenerate()
def on_created(self, event):
if event.is_directory:
return
if any(event.src_path.endswith(ext) for ext in ['.md', '.py', '.html', '.css', '.js']):
print(f"File {event.src_path} has been created")
self.regenerate()
def regenerate(self):
print("Regenerating content...")
subprocess.run(["python", "parser/md.py"])
subprocess.run(["python", "generate.py"])
print("Content regenerated")
if __name__ == "__main__":
event_handler = ChangeHandler()
observer = Observer()
# Watch both current directory and dist directory
observer.schedule(event_handler, "templates", recursive=True)
observer.start()
http_server = subprocess.Popen(["python", "-m", "http.server", "8000", "--directory", "dist"])
try:
print("Watching for file changes... (Press Ctrl+C to stop)")
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
http_server.terminate()
observer.join()