From ad909282e66ef1bc644db8e370d680de59b7980a Mon Sep 17 00:00:00 2001 From: Flo Greistorfer Date: Wed, 17 Jul 2024 15:31:46 +0200 Subject: [PATCH] packaging now working --- .github/workflows/build-release.yml | 8 +-- .version | 1 + builder.py | 12 ++--- modules/argumentparser.py | 5 +- modules/generate_html.py | 4 +- modules/svg_handling.py | 6 ++- templates/default.css | 82 +++++++++++++++++++++++++++++ templates/folder-2.svg.j2 | 11 ++++ 8 files changed, 116 insertions(+), 13 deletions(-) create mode 100644 .version create mode 100644 templates/default.css create mode 100644 templates/folder-2.svg.j2 diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 9ec406b..8c4c17e 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -12,9 +12,11 @@ jobs: - name: Install Dependencies run: pip install -r requirements.txt - name: Build Package - run: pyinstaller builder.py modules/*.py -n StaticGalleryBuilder -F + run: pyinstaller builder.py modules/*.py -n StaticGalleryBuilder -F --add-data files:files --add-data templates:templates --add-data .version:. - name: Release uses: softprops/action-gh-release@v2 - if: startsWith(github.ref, 'refs/tags/') with: - files: dist/StaticGalleryBuilder \ No newline at end of file + make_latest: true + generate_release_notes: true + files: | + dist/StaticGalleryBuilder \ No newline at end of file diff --git a/.version b/.version new file mode 100644 index 0000000..ecf00d9 --- /dev/null +++ b/.version @@ -0,0 +1 @@ +2.2.5 \ No newline at end of file diff --git a/builder.py b/builder.py index 33938f6..b1ac170 100755 --- a/builder.py +++ b/builder.py @@ -17,9 +17,11 @@ from modules.generate_html import list_folder, EXCLUDES # fmt: off # Constants -STATIC_FILES_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), "files") -SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) -VERSION = "2.2.5" +if __package__ == None: + __package__ = "" +SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__).removesuffix(__package__)) +STATIC_FILES_DIR = os.path.join(os.path.abspath(SCRIPT_DIR), "files") +VERSION = open(os.path.join(SCRIPT_DIR, ".version"), "r", encoding="utf-8").read() RAW_EXTENSIONS = [ ".3fr", ".ari", ".arw", ".bay", ".braw", ".crw", ".cr2", ".cr3", ".cap", ".data", ".dcs", ".dcr", ".dng", ".drf", ".eip", ".erf", ".fff", ".gpr", ".iiq", ".k25", ".kdc", ".mdc", ".mef", ".mos", @@ -158,9 +160,7 @@ def get_total_folders(folder: str, _args: Args, _total: int = 0) -> int: items = sorted(os.listdir(folder)) for item in items: if item not in EXCLUDES and os.path.isdir(os.path.join(folder, item)): - if item not in _args.exclude_folders and not any( - fnmatch.fnmatchcase(os.path.join(folder, item), exclude) for exclude in _args.exclude_folders - ): + if item not in _args.exclude_folders and not any(fnmatch.fnmatchcase(os.path.join(folder, item), exclude) for exclude in _args.exclude_folders): _total = get_total_folders(os.path.join(folder, item), _args, _total) return _total diff --git a/modules/argumentparser.py b/modules/argumentparser.py index 1b30371..04a6d6d 100644 --- a/modules/argumentparser.py +++ b/modules/argumentparser.py @@ -4,7 +4,9 @@ import argparse from rich_argparse import RichHelpFormatter, HelpPreviewAction -DEFAULT_THEME_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "themes", "default.css") +if __package__ == None: + __package__ = "" +DEFAULT_THEME_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__).removesuffix(__package__)), "templates", "default.css") DEFAULT_AUTHOR = "Author" @@ -41,6 +43,7 @@ class Args: web_root_url : str The base URL of the web root for the image hosting site. """ + author_name: str exclude_folders: List[str] file_extensions: List[str] diff --git a/modules/generate_html.py b/modules/generate_html.py index a6a3994..df8cba5 100644 --- a/modules/generate_html.py +++ b/modules/generate_html.py @@ -13,6 +13,8 @@ import modules.cclicense as cclicense from modules.argumentparser import Args # Constants for file paths and exclusions +if __package__ == None: + __package__ = "" FAVICON_PATH = ".static/favicon.ico" GLOBAL_CSS_PATH = ".static/global.css" EXCLUDES = ["index.html", "manifest.json", "robots.txt"] @@ -21,7 +23,7 @@ EXCLUDES = ["index.html", "manifest.json", "robots.txt"] Image.MAX_IMAGE_PIXELS = 933120000 # Initialize Jinja2 environment for template rendering -env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "templates"))) +env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath(os.path.dirname(__file__).removesuffix(__package__)), "templates"))) thumbnails: List[Tuple[str, str]] = [] info: Dict[str, str] = {} pbardict: Dict[str, tqdm] = {} diff --git a/modules/svg_handling.py b/modules/svg_handling.py index cac55fe..74ea32a 100644 --- a/modules/svg_handling.py +++ b/modules/svg_handling.py @@ -17,11 +17,13 @@ from modules.argumentparser import Args from modules.css_color import css_color_to_hex, extract_theme_color, extract_colorscheme # Define constants for static files directory and icon sizes -STATIC_FILES_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "files") +if __package__ == None: + __package__ = "" +STATIC_FILES_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__).removesuffix(__package__)), "files") ICON_SIZES = ["36x36", "48x48", "72x72", "96x96", "144x144", "192x192", "512x512"] # Initialize Jinja2 environment for template rendering -env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "templates"))) +env = Environment(loader=FileSystemLoader(os.path.join(os.path.abspath(os.path.dirname(__file__).removesuffix(__package__)), "templates"))) class Icon: diff --git a/templates/default.css b/templates/default.css new file mode 100644 index 0000000..4cf2d7d --- /dev/null +++ b/templates/default.css @@ -0,0 +1,82 @@ +@import url("https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap"); + +* { + --color1: #333333; + --color2: #888888; + --color3: #dddddd; + --color4: #111111; + --color5: #0055ff; + --bcolor1: #ffffff; + --bcolor2: #000000; +} + +.navbar { + font-weight: bold; + color: var(--bcolor1); + background-color: var(--color1); +} + +.navbar li a { + font-weight: 700; + color: var(--bcolor1); +} + +/* Change the link color on hover */ +.navbar li a:hover { + background-color: var(--color4); +} + +.footer { + color: var(--bcolor2); + background-color: var(--color3); + font-weight: 500; +} + +.footer a { + color: var(--color5); + text-decoration: none; +} + +.foldericon { + content: "templates/folder-2.svg.j2"; +} + +.folders a { + font-weight: 700; + color: var(--color5); + text-decoration: none; +} + +.tooltiptext { + font-weight: 400; + background-color: var(--color2); +} + +.column img { + background-color: var(--color2); +} + +#totop:hover { + background-color: var(--color2); +} + +#totop { + background-color: var(--color1); + color: var(--bcolor1); + font-weight: 800; +} + +body { + color: var(--bcolor2); + background-color: var(--bcolor1); + font-family: "Ubuntu", sans-serif; + font-optical-sizing: auto; + font-weight: 400; + font-style: normal; +} + +body a { + font-weight: 400; + color: var(--color5); + text-decoration: none; +} \ No newline at end of file diff --git a/templates/folder-2.svg.j2 b/templates/folder-2.svg.j2 new file mode 100644 index 0000000..b048bc9 --- /dev/null +++ b/templates/folder-2.svg.j2 @@ -0,0 +1,11 @@ + + \ No newline at end of file