Removed dye copy
This commit is contained in:
parent
a0556aa195
commit
acac0facb1
1 changed files with 0 additions and 152 deletions
152
dye
152
dye
|
|
@ -1,152 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# set -vx
|
||||
|
||||
printhelp() {
|
||||
cat <<EOM
|
||||
usage: dye [-x|-r] [color_code]
|
||||
options:
|
||||
-x hex to rgb
|
||||
-r rgb to hex
|
||||
examples:
|
||||
dye -x "#ffffff"
|
||||
dye -r 255 255 255
|
||||
dye -x "#43fF6480"
|
||||
dye -r 67 255 100 0.5
|
||||
EOM
|
||||
exit 1
|
||||
}
|
||||
|
||||
error() {
|
||||
printf "error: %s\n" "$1" 1>&2
|
||||
${2:+exit $2}
|
||||
}
|
||||
|
||||
dependencycheck() {
|
||||
local dep missingdependencies=0
|
||||
for dep in "$@"; do
|
||||
if ! command -v "$dep" &>/dev/null; then
|
||||
error "dependency not met: $dep"
|
||||
fi
|
||||
done
|
||||
if [[ $missingdependencies -gt 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
hex_to_rgb() {
|
||||
local a
|
||||
# null command ':' removes all leading hashtag characters
|
||||
: "${1/\#/}"
|
||||
# if hex value is 8 characters
|
||||
if ((${#_} == 8)); then
|
||||
# convert characters to hex (see credits at bottom)
|
||||
((r = 16#${_:0:2}, g = 16#${_:2:2}, b = 16#${_:4:2}, a = 16#${_:6:2}))
|
||||
# simple calc for alpha channel
|
||||
a=$(echo "scale=2; $a / 255" | bc)
|
||||
# else if hex value is 6 characters (no alpha channel)
|
||||
elif ((${#_} == 6)); then
|
||||
((r = 16#${_:0:2}, g = 16#${_:2:2}, b = 16#${_:4:2}))
|
||||
a=1.0
|
||||
# else if hex value is 3 characters (minimal hex value provided)
|
||||
elif ((${#_} == 3)); then
|
||||
# if the first character still has a hashtag in it...
|
||||
if [[ ${1:0:1} != "#" ]]; then
|
||||
color="#$1"
|
||||
else
|
||||
color="$1"
|
||||
fi
|
||||
# grab out each passed value
|
||||
r="$(echo "$color" | cut -c2)"
|
||||
g="$(echo "$color" | cut -c3)"
|
||||
b="$(echo "$color" | cut -c4)"
|
||||
|
||||
# and convert them to hexadecimal
|
||||
r=$(printf "%d" 0x$r$r)
|
||||
g=$(printf "%d" 0x$g$g)
|
||||
b=$(printf "%d" 0x$b$b)
|
||||
|
||||
# ((r = 16#${_:0:1}, g = 16#${_:1:1}, b = 16#${_:2:1}))
|
||||
a=1.0
|
||||
else
|
||||
error "$1 is not a recognized hex color code."
|
||||
fi
|
||||
printf "%s\n" "rgba($r, $g, $b, $a)"
|
||||
}
|
||||
|
||||
# parse_rgb() takes rgb string to extract
|
||||
# numeric values from it and then pass that to rgb_to_hex()
|
||||
# parse_rgb() {
|
||||
#
|
||||
# }
|
||||
|
||||
rgb_to_hex() {
|
||||
local a
|
||||
# if a fourth arg is provided (alpha channel)
|
||||
if [[ -n "$4" ]]; then
|
||||
# converts alpha channel to hex (see below)
|
||||
a=$(printf "%02x\n" "$(echo "scale=0; $4*255" | bc)" 2>/dev/null)
|
||||
printf "#%02x%02x%02x%s\n" "$1" "$2" "$3" "$a"
|
||||
else
|
||||
printf "#%02x%02x%02x\n" "$1" "$2" "$3"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
[[ "$#" -lt 1 ]] && printhelp
|
||||
|
||||
while getopts ":x:r:?" arg; do
|
||||
case $arg in
|
||||
x)
|
||||
if [[ "$#" -gt 2 ]]; then
|
||||
error "-x only parses one following argument"
|
||||
exit 2
|
||||
fi
|
||||
local rgbval clipit
|
||||
rgbval=$(hex_to_rgb "${2:-''}")
|
||||
printf "%s\n" "$rgbval"
|
||||
read -e -r -p "save code to clipboard?(y/n): " clipit
|
||||
if [[ "$clipit" == "yes" || "$clipit" == "y" ]]; then
|
||||
dependencycheck xclip
|
||||
printf "%s" "$rgbval" | xclip -sel clip
|
||||
fi
|
||||
;;
|
||||
r)
|
||||
# parse an 'rgb()' or 'rgba' string here
|
||||
# regex compare to string
|
||||
if [[ "$#" -gt 5 ]]; then
|
||||
error "-r parses up to four following argument"
|
||||
exit 2
|
||||
elif [[ "$#" -lt 4 ]]; then
|
||||
error "-r parses no less than three arguments"
|
||||
exit 2
|
||||
fi
|
||||
local hexval clipit
|
||||
hexval=$(rgb_to_hex "${@:2}")
|
||||
printf "%s\n" "$hexval"
|
||||
read -e -r -p "save code to clipboard?(y/n): " clipit
|
||||
if [[ "$clipit" == "yes" || "$clipit" == "y" ]]; then
|
||||
dependencycheck xclip
|
||||
printf "%s" "$hexval" | xclip -sel clip
|
||||
fi
|
||||
;;
|
||||
?)
|
||||
printhelp
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
# Credits:
|
||||
# Thanks go out to those who helped:
|
||||
|
||||
# Akash Mittal, whose article provided the original versions of hex_to_rgb() and rgb_to_hex() taken from
|
||||
# https://akashmittal.com/code-example-convert-hex-color-to-rgb-rgb-to-hex-using-bash-script/
|
||||
|
||||
# redditor zeekar who broke down what those functions did line by line:
|
||||
# https://reddit.com/r/bash/comments/zqmvz8/rgbhex_converter_syntax_how_does_this_work/
|
||||
|
||||
# redditor DyslexicHobo, who suggested ChatGPT, which I used to finalize the
|
||||
# rgb_to_hex() function. Thank you AI overlords!
|
||||
# https://openai.com/blog/chatgpt/
|
||||
Loading…
Add table
Add a link
Reference in a new issue