102 lines
2.4 KiB
Python
102 lines
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)
|