summaryrefslogtreecommitdiff
path: root/pywal/export.py
diff options
context:
space:
mode:
authorDylan Araps <dylan.araps@gmail.com>2017-07-23 10:57:33 +1000
committerDylan Araps <dylan.araps@gmail.com>2017-07-23 10:57:33 +1000
commit377cc7e68ce2576ad928fdd6efb40cabdf0f19dc (patch)
tree43fa2d6c67fab5d46b3fb8e170ba0aa36913054d /pywal/export.py
parentbd5611e35cba2cfa0a57f3f854ed157638da3c95 (diff)
api: Changed export arguments.
Diffstat (limited to 'pywal/export.py')
-rw-r--r--pywal/export.py68
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.")