mirror of
https://github.com/ClovertaTheTrilobita/niri-dots.git
synced 2026-04-01 22:04:53 +00:00
61 lines
1.5 KiB
Python
Executable file
61 lines
1.5 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
from subprocess import run, PIPE
|
|
from shutil import which
|
|
|
|
# Logging utils
|
|
|
|
def color_string(string, fg=None):
|
|
COLORS = { # List some colors that may be needed
|
|
"red": "\033[31m",
|
|
"pink": "\033[38;5;206m",
|
|
"green": "\033[32m",
|
|
"orange": "\033[33m",
|
|
"blue": "\033[34m",
|
|
"cyan": "\033[36m",
|
|
"lightred": "\033[91m",
|
|
"lightgreen": "\033[92m",
|
|
"yellow": "\033[93m",
|
|
"lightblue": "\033[94m",
|
|
"lightcyan": "\033[96m",
|
|
"brightwhite": "\u001b[37;1m",
|
|
"brightmagenta": "\u001b[35;1m",
|
|
}
|
|
endcolor = "\033[0m"
|
|
return f"{COLORS.get(fg, '')}{string}{endcolor}"
|
|
|
|
|
|
def info(*lines):
|
|
for line in lines:
|
|
print(f"{color_string('[I] ', fg='cyan')}{line}")
|
|
|
|
|
|
def error(*lines, should_exit=True):
|
|
for line in lines:
|
|
print(f"{color_string('[E] ', fg='lightred')}{line}")
|
|
if should_exit:
|
|
exit(1)
|
|
|
|
def warning(*lines):
|
|
for line in lines:
|
|
print(f"{color_string('[W] ', fg='yellow')}{line}")
|
|
|
|
|
|
# Shell / external utils
|
|
|
|
|
|
def sh(command):
|
|
"Executes command in shell and returns its exit status"
|
|
return run(command, shell=True).returncode
|
|
|
|
|
|
def shout(command, silence=False):
|
|
"Executes command in shell and returns its stdout"
|
|
stdout = run(command, shell=True, stdout=PIPE).stdout.decode("utf-8")
|
|
if not silence:
|
|
print(stdout)
|
|
return stdout
|
|
|
|
|
|
def has_command(command):
|
|
return which(command) is not None
|