mirror of
https://github.com/dylanaraps/pywal.git
synced 2025-01-08 23:19:54 +01:00
66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
"""
|
|
Export colors in various formats.
|
|
"""
|
|
import os
|
|
|
|
from .settings import CACHE_DIR, MODULE_DIR
|
|
from . import util
|
|
|
|
|
|
def template(colors, input_file, output_file=None):
|
|
"""Read template file, substitute markers and
|
|
save the file elsewhere."""
|
|
template_data = util.read_file_raw(input_file)
|
|
template_data = "".join(template_data).format(**colors)
|
|
|
|
util.save_file(template_data, output_file)
|
|
|
|
|
|
def flatten_colors(colors):
|
|
"""Prepare colors to be exported.
|
|
Flatten dicts and convert colors to util.Color()"""
|
|
all_colors = {"wallpaper": colors["wallpaper"],
|
|
**colors["special"],
|
|
**colors["colors"]}
|
|
return {k: util.Color(v) for k, v in all_colors.items()}
|
|
|
|
|
|
def get_export_type(export_type):
|
|
"""Convert template type to the right filename."""
|
|
return {
|
|
"css": "colors.css",
|
|
"json": "colors.json",
|
|
"konsole": "colors-konsole.colorscheme",
|
|
"putty": "colors-putty.reg",
|
|
"scss": "colors.scss",
|
|
"shell": "colors.sh",
|
|
"xresources": "colors.Xresources",
|
|
"yaml": "colors.yml",
|
|
}.get(export_type, export_type)
|
|
|
|
|
|
def every(colors, output_dir=CACHE_DIR):
|
|
"""Export all template files."""
|
|
all_colors = flatten_colors(colors)
|
|
template_dir = os.path.join(MODULE_DIR, "templates")
|
|
|
|
for file in os.scandir(template_dir):
|
|
template(all_colors, file.path, os.path.join(output_dir, file.name))
|
|
|
|
print("export: Exported all files.")
|
|
|
|
|
|
def color(colors, export_type, output_file=None):
|
|
"""Export a single template file."""
|
|
all_colors = flatten_colors(colors)
|
|
|
|
template_name = get_export_type(export_type)
|
|
template_file = os.path.join(MODULE_DIR, "templates", template_name)
|
|
output_file = output_file or os.path.join(CACHE_DIR, template_name)
|
|
|
|
if os.path.isfile(template_file):
|
|
template(all_colors, template_file, output_file)
|
|
print("export: Exported %s." % export_type)
|
|
else:
|
|
print("warning: template '%s' doesn't exist." % export_type)
|