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