diff options
| author | Dylan Araps <dylan.araps@gmail.com> | 2017-07-23 10:57:33 +1000 |
|---|---|---|
| committer | Dylan Araps <dylan.araps@gmail.com> | 2017-07-23 10:57:33 +1000 |
| commit | 377cc7e68ce2576ad928fdd6efb40cabdf0f19dc (patch) | |
| tree | 43fa2d6c67fab5d46b3fb8e170ba0aa36913054d /pywal/export.py | |
| parent | bd5611e35cba2cfa0a57f3f854ed157638da3c95 (diff) | |
api: Changed export arguments.
Diffstat (limited to 'pywal/export.py')
| -rw-r--r-- | pywal/export.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/pywal/export.py b/pywal/export.py new file mode 100644 index 0000000..316de7b --- /dev/null +++ b/pywal/export.py @@ -0,0 +1,68 @@ +""" +Export colors in various formats. +""" +import os +import pathlib + +from .settings import __cache_dir__ +from . import util + + +TEMPLATE_DIR = pathlib.Path(__file__).parent / "templates" + + +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", + }.get(export_type, export_type) + + +def every(colors, output_dir=__cache_dir__): + """Export all template files.""" + all_colors = flatten_colors(colors) + output_dir = pathlib.Path(output_dir) + + for file in os.scandir(TEMPLATE_DIR): + template(all_colors, file.path, output_dir / file.name) + + print(f"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 = TEMPLATE_DIR / template_name + output_file = output_file or __cache_dir__ / template_name + + if template_file.is_file(): + template(all_colors, template_file, output_file) + print(f"export: Exported {export_type}.") + else: + print(f"[!] warning: template '{export_type}' doesn't exist.") |
