feat: added copying static
This commit is contained in:
		| @@ -6,13 +6,14 @@ import os | ||||
| import subprocess | ||||
|  | ||||
| from .config import SOURCE_DIRECTORY, CODE_DIRECTORY | ||||
| from .build import build as complete_build | ||||
|  | ||||
|  | ||||
| logging.basicConfig(level=logging.INFO) | ||||
| logger = logging.getLogger("stsg") | ||||
|  | ||||
|  | ||||
| def build(): | ||||
|     print("building changed") | ||||
|     complete_build() | ||||
|  | ||||
|  | ||||
| class MarkdownChangeHandler(FileSystemEventHandler): | ||||
| @@ -26,10 +27,12 @@ class MarkdownChangeHandler(FileSystemEventHandler): | ||||
|  | ||||
|         logger.info("%s changed, building", event.src_path) | ||||
|         build() | ||||
|   | ||||
|  | ||||
|  | ||||
| class PythonChangeHandler(FileSystemEventHandler): | ||||
|     def __init__(self, command): | ||||
|         self.logger = logging.getLogger("stsg.hot_reload") | ||||
|  | ||||
|         self.env = os.environ.copy() | ||||
|         self.env["IS_CHILD"] = "true" | ||||
|  | ||||
| @@ -37,11 +40,11 @@ class PythonChangeHandler(FileSystemEventHandler): | ||||
|         self.process = self.start_process() | ||||
|  | ||||
|     def start_process(self): | ||||
|         print("[hot reload] Starting process...") | ||||
|         self.logger.info("Starting process...") | ||||
|         return subprocess.Popen(self.command, env=self.env) | ||||
|  | ||||
|     def restart_process(self): | ||||
|         print("[hot reload] Restarting process...") | ||||
|         self.logger.info("Restarting process...") | ||||
|         self.process.kill() | ||||
|         self.process = self.start_process() | ||||
|  | ||||
| @@ -54,7 +57,7 @@ class PythonChangeHandler(FileSystemEventHandler): | ||||
|             return | ||||
|  | ||||
|         if event.src_path.endswith(".py"): | ||||
|             print(f"[hot reload] Detected change: {event.src_path}") | ||||
|             self.logger.info(f"Detected change: {event.src_path}") | ||||
|             self.restart_process() | ||||
|  | ||||
|     def stop_process(self): | ||||
| @@ -84,7 +87,7 @@ def hot_reload(): | ||||
|         return | ||||
|  | ||||
|     observer = Observer() | ||||
|     observer.schedule(PythonChangeHandler(["stsg_build_on_change"]), path=CODE_DIRECTORY, recursive=True) | ||||
|     observer.schedule(PythonChangeHandler(["stsg_dev"]), path=CODE_DIRECTORY, recursive=True) | ||||
|     observer.start() | ||||
|  | ||||
|     try: | ||||
|   | ||||
							
								
								
									
										41
									
								
								stsg/build.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								stsg/build.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| import logging | ||||
| import shutil | ||||
| from pathlib import Path | ||||
| import os | ||||
|  | ||||
| from .config import SOURCE_DIRECTORY, DIST_DIRECTORY, STATIC_DIRECTORY | ||||
|  | ||||
|  | ||||
| logger = logging.getLogger("stsg.build") | ||||
|  | ||||
|  | ||||
| def copy_static(): | ||||
|     src = str(Path(SOURCE_DIRECTORY, STATIC_DIRECTORY)) | ||||
|     dst = str(Path(DIST_DIRECTORY, STATIC_DIRECTORY)) | ||||
|  | ||||
|     if not os.path.exists(src): | ||||
|         logger.warn("The static folder '%s' wasn't defined.", src) | ||||
|         return | ||||
|  | ||||
|     logger.info("copying static files from '%s' to '%r'", src, dst)  | ||||
|  | ||||
|     os.makedirs(dst, exist_ok=True) | ||||
|  | ||||
|     for root, dirs, files in os.walk(src): | ||||
|         # Compute relative path from the source root | ||||
|         rel_path = os.path.relpath(root, src) | ||||
|         dest_dir = os.path.join(dst, rel_path) | ||||
|  | ||||
|         os.makedirs(dest_dir, exist_ok=True) | ||||
|  | ||||
|         for file in files: | ||||
|             src_file = os.path.join(root, file) | ||||
|             dest_file = os.path.join(dest_dir, file) | ||||
|             shutil.copy2(src_file, dest_file)  | ||||
|  | ||||
|     print(src, dst)   | ||||
|  | ||||
|  | ||||
| def build(): | ||||
|     logger.info("building static page") | ||||
|     copy_static() | ||||
| @@ -1,5 +1,9 @@ | ||||
| SOURCE_DIRECTORY = "src" | ||||
| DIST_DIRECTORY = "dist" | ||||
|  | ||||
| # for development | ||||
| # relative to SOURCE_DIRECTORY / DIST_DIRECTORY | ||||
| STATIC_DIRECTORY = "static" | ||||
|  | ||||
| # FOR DEVELOPMENT | ||||
|  | ||||
| CODE_DIRECTORY = "stsg" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user