Browse Source

improved memory functionality

main
Zen 3 years ago
parent
commit
c9f0cc942d
  1. 95
      ingredients/lead

95
ingredients/lead

@ -19,6 +19,38 @@ BOLD="\e[1m"
ULINE="\e[4m"
RESET="\e[0m"
# TODO -- there are actually a lot of ANSI codes that can be used
# 0 - Reset (normal attributes)
# 1 - Bold or increased intensity
# 2 - Faint (opposite of bold)
# 3 - Italic
# 4 - Underline
# 5 - Blink slowly
# 6 - Blink quickly
# 7 - Swap foreground and background
# 8 - Conceal
# 9 - Cross-out
# 10 - Default font
# 11-19 - Alternate fonts
# 20 - Fraktur font
# 21 - Bold off or double underline
# 22 - Bold and faint off
# 23 - Italic and fraktur off
# 24 - Underline off
# 25 - Blink off
# 27 - Undo foreground and background swapping
# 28 - Conceal off
# 29 - Cross-out off
# 39 - Default text color
# 49 - Default background color
# 51 - Framed
# 52 - Encircled
# 53 - Overlined
# 54 - Frame and encircle off
# 55 - Overline off
# TODO -- these should be implemented as part of the syntax for "say"
# --------------- Traps ---------------
# Traps, in the case of shell scripting, listen for certain signals
@ -29,21 +61,26 @@ if [[ $SHLVL -gt 1 ]]; then
# Make sure that ctrl+C consistently exits the script
trap "exit" INT
# Give informative error messages when we receive ERR
trap 'echo -e "${RED}Oops...${RESET} Something went wrong on line $LINENO of this script. Exit code was $?" >&2' ERR
trap 'say "${RED}Oops...${RESET} Something went wrong on line $LINENO of this script. Exit code was $?" >&2' ERR
fi
# --------------- Environment Setup ---------------
# If there's an env file, export it's contents to the environment
source_env() {
if [ -f .env ]; then
export $(grep -v '^#' .env | xargs)
else
if [ -z $ALCHEMY ]; then
echo "No .env file, this might cause some issues..."
say "No .env file, this might cause some issues..."
fi
fi
}
# This is how we call a function that we have already defined.
# This one takes no arguments (words after the function name
source_env
# --------------- Functions ---------------
@ -51,6 +88,12 @@ fi
# at the end of it, like this() or like(this), it's a function!
# It takes inputs and gives (or does) something as an output
# 'say' is a simple function that imitates "echo"
# This needs to be built out way more! Replace echo for POSIX compatibility
say() {
printf "%b\n" "${1}"
}
# Checks to see if we can use a command or not
check_exists() {
command -v "$1" >/dev/null
@ -64,47 +107,60 @@ install_if_needed() {
"debian")
# TODO Better installation detection than check_exists
if [ -z $(check_exists $package) ]; then
echo "installing" $package
say "installing $package"
sudo apt install -y $package
else
echo $package 'already installed!'
say "$package already installed!"
fi
;;
"arch")
if pacman -Qi $package &>/dev/null; then
echo $package 'already installed!'
say "$package already installed!"
else
echo "installing" $package
say "installing $package"
sudo pacman -S $package --noconfirm --needed
fi
;;
"fedora")
# TODO Better installation detection than "check_exists"
if [ -z $(check_exists $package) ]; then
echo "installing" $package
say "installing $package"
sudo dnf install -y $package
else
echo $package 'already installed!'
say "$package already installed!"
fi
;;
"mac")
# TODO Better installation detection than "check_exists"
if [ -z $(check_exists $package) ]; then
echo "installing" $package
say "installing $package"
brew install $package
else
echo $package 'already installed!'
say "$package already installed!"
fi
;;
esac
done
}
# These two might look like gibberish because we're using regex, don't worry.
# --------------- Memory ---------------
# These two functions might look like gibberish because we're using regex,
# short for REGular EXpression. It's a form of matching text to a pattern.
# It takes values and stores them away in the env for later reference
forget() {
DOTENV_ENTRY=$(cat .env | grep ^${1}\=)
if [ -n "$DOTENV_ENTRY" ]; then
unset ${1}
sed -i "/^${1}.*$/d" .env
else
say "I already don't remember ${BLUE}${1}${RESET}..."
fi
# Once we've made changes, we need to make sure we're up to date
source_env
}
remember() {
@ -122,9 +178,14 @@ remember() {
# If we're setting a valid key/value pair
if [[ ${1} =~ ^[A-Z_]+\=[A-Za-z0-9/._:]*$ ]]; then
# If we're trying to set the value to something new
if [[ ! $(env | grep ${KEY}) = $1 ]]; then
echo -e "${BLUE}${KEY}${RESET} has already been defined in the env!"
DOTENV_ENTRY=$(cat .env | grep ${KEY})
# If something already exists and we're trying to set it to something new
if [ -n "$DOTENV_ENTRY" ] && [[ ! $DOTENV_ENTRY = $1 ]]; then
echo -e "I'm trying to remember ${BLUE}${1}${RESET}, but..."
echo ""
echo -e "${BLUE}${DOTENV_ENTRY}${RESET}"
echo -e "This has already been defined in the .env file!"
echo ""
echo -en "would you like to overwrite it? ${BLUE}(y/n)${RESET} "
read overwrite
case $overwrite in
@ -136,12 +197,14 @@ remember() {
;;
esac
else
forget ${KEY}
unset ${KEY}
echo "${1}" >> .env
export ${1}
fi
fi
}
# Once we've made changes, we need to make sure we're up to date
source_env
}
LEAD=1

Loading…
Cancel
Save