api: Changed export arguments.

This commit is contained in:
Dylan Araps 2017-07-23 10:57:33 +10:00
parent bd5611e35c
commit 377cc7e68c
4 changed files with 85 additions and 70 deletions

View File

@ -10,23 +10,19 @@ Created by Dylan Araps.
""" """
from .settings import __version__ from .settings import __version__
from .colors import get as create_palette from . import colors
from .image import get as get_image from . import export
from .reload import colors as reload_colors from . import image
from .reload import env as reload_env from . import reload
from .sequences import send as send_sequences from . import sequences
from .template import export_all from . import wallpaper
from .template import export
from .wallpaper import change as set_wallpaper
__all__ = [ __all__ = [
"__version__", "__version__",
"create_palette", "colors",
"export_all",
"export", "export",
"get_image", "image",
"reload_colors", "reload",
"reload_env", "sequences",
"send_sequences", "wallpaper",
"set_wallpaper",
] ]

68
pywal/export.py Normal file
View File

@ -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.")

View File

@ -9,7 +9,7 @@ from .settings import __cache_dir__
from . import util from . import util
def reload_xrdb(cache_dir): def xrdb(cache_dir):
"""Merge the colors into the X db so new terminals use them.""" """Merge the colors into the X db so new terminals use them."""
if shutil.which("xrdb"): if shutil.which("xrdb"):
subprocess.call(["xrdb", "-merge", cache_dir / "colors.Xresources"], subprocess.call(["xrdb", "-merge", cache_dir / "colors.Xresources"],
@ -17,13 +17,13 @@ def reload_xrdb(cache_dir):
stderr=subprocess.DEVNULL) stderr=subprocess.DEVNULL)
def reload_i3(): def i3():
"""Reload i3 colors.""" """Reload i3 colors."""
if shutil.which("i3-msg"): if shutil.which("i3-msg"):
util.disown("i3-msg", "reload") util.disown("i3-msg", "reload")
def reload_polybar(): def polybar():
"""Reload polybar colors.""" """Reload polybar colors."""
if shutil.which("polybar"): if shutil.which("polybar"):
util.disown("pkill", "-USR1", "polybar") util.disown("pkill", "-USR1", "polybar")
@ -31,9 +31,9 @@ def reload_polybar():
def env(cache_dir=__cache_dir__): def env(cache_dir=__cache_dir__):
"""Reload environment.""" """Reload environment."""
reload_xrdb(cache_dir) xrdb(cache_dir)
reload_i3() i3()
reload_polybar() polybar()
print("reload: Reloaded environment.") print("reload: Reloaded environment.")

View File

@ -1,49 +0,0 @@
"""
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, cache_dir):
"""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)
template_name = os.path.basename(input_file)
util.save_file(template_data, cache_dir / template_name)
print(f"export: Exported {template_name}.")
def flatten_colors(colors):
"""Prepare colors to be exported. (Flatten dicts)"""
all_colors = {"wallpaper": colors["wallpaper"],
**colors["special"],
**colors["colors"]}
return {k: util.Color(v) for k, v in all_colors.items()}
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)
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.")