api: Add function to export individual templates.

This commit is contained in:
Dylan Araps 2017-07-22 23:27:43 +10:00
parent a84275f1f4
commit d1c2b8023d
2 changed files with 28 additions and 9 deletions

View File

@ -15,13 +15,15 @@ from .image import get as get_image
from .reload import colors as reload_colors from .reload import colors as reload_colors
from .reload import env as reload_env from .reload import env as reload_env
from .sequences import send as send_sequences from .sequences import send as send_sequences
from .template import export_all as export_all_templates from .template import export_all
from .template import export
from .wallpaper import change as set_wallpaper from .wallpaper import change as set_wallpaper
__all__ = [ __all__ = [
"__version__", "__version__",
"create_palette", "create_palette",
"export_all_templates", "export_all",
"export",
"get_image", "get_image",
"reload_colors", "reload_colors",
"reload_env", "reload_env",

View File

@ -2,11 +2,15 @@
Export colors in various formats. Export colors in various formats.
""" """
import os import os
import pathlib
from .settings import __cache_dir__ from .settings import __cache_dir__
from . import util from . import util
TEMPLATE_DIR = pathlib.Path(__file__).parent / "templates"
def template(colors, input_file, cache_dir): def template(colors, input_file, cache_dir):
"""Read template file, substitute markers and """Read template file, substitute markers and
save the file elsewhere.""" save the file elsewhere."""
@ -18,15 +22,28 @@ def template(colors, input_file, cache_dir):
print(f"export: Exported {template_name}.") print(f"export: Exported {template_name}.")
def export_all(colors, cache_dir=__cache_dir__, template_dir=None): def flatten_colors(colors):
"""Export all template files.""" """Prepare colors to be exported. (Flatten dicts)"""
template_dir = template_dir or \
os.path.join(os.path.dirname(__file__), "templates")
all_colors = {"wallpaper": colors["wallpaper"], all_colors = {"wallpaper": colors["wallpaper"],
**colors["special"], **colors["special"],
**colors["colors"]} **colors["colors"]}
all_colors = {k: util.Color(v) for k, v in all_colors.items()} return {k: util.Color(v) for k, v in all_colors.items()}
for file in os.scandir(template_dir):
def export_all(colors, cache_dir=__cache_dir__):
"""Export all template files."""
all_colors = flatten_colors(colors)
for file in os.scandir(TEMPLATE_DIR):
template(all_colors, file.path, cache_dir) template(all_colors, file.path, cache_dir)
def export(colors, file, cache_dir=__cache_dir__):
"""Export a single template file."""
all_colors = flatten_colors(colors)
template_file = TEMPLATE_DIR / file
if template_file.is_file():
template(all_colors, template_file, cache_dir)
else:
print(f"[!] warning: template '{template_file}' doesn't exist.")