dotfiles/funcs.py

103 line
2.4 KiB
Python

import os
from subprocess import check_output
import re
def parent_dir(path):
return os.path.split(path)[0]
def rclone_obscure(pass_name):
try:
fPath = os.path.expanduser("~/.config/rclone/rclone.conf")
t = open(fPath, 'r').read()
PASSWORD_PATTERN = r'^pass *= *(.*)$'
password = re.search(PASSWORD_PATTERN, t, re.M).group(1)
return password
except Exception:
pass
def sh(*args):
return check_output(args).decode().strip()
try:
return sh("rclone", "obscure", sh("_pass_get", pass_name))
except Exception:
print("Error obscuring rclone password")
return ""
def var(to_escape: str):
return " ".join(["{{@@", to_escape, "@@}}"])
def non_templated(path):
with open(path, "r") as f:
res = []
in_dotdrop = False
for line in f:
line = line.strip()
if line == "##### Dotdrop-start #####":
in_dotdrop = True
if line == "##### Dotdrop-end #####":
in_dotdrop = False
if not in_dotdrop:
res.append(line)
return "\n".join(res)
####################################################################
# color
####################################################################
def split_hex(e):
e = e.lstrip("#").lower()
return e[0:2], e[2:4], e[4:6]
def hex2rgb(e):
return ", ".join([str(int(s, base=16))
for s in split_hex(e)])
def color_mult(e: str, amount: float):
"""\
Multiply e hex rgb colorCode with amount number
Usefull for lightening/darkening
"""
def segment(s):
base256 = int(s, base=16)
result_val = base256 * amount
# normalize between 0 and 255
result_val = min(255, max(0, result_val))
hex_result = hex(int(result_val))[2:]
return hex_result.zfill(2)
prefix = "#" * e.startswith("#")
return prefix + "".join(map(segment, split_hex(e)))
####################################################################
# Filters
####################################################################
def darker(arg1, amount=0.5):
return color_mult(arg1, amount)
def lighter(arg1, amount=1.25):
return color_mult(arg1, amount)
def as_hex(in_number):
return hex(int(in_number))[2:]
def clamp_to_hex(in_number):
return as_hex(in_number * 255)