dotfiles/system/bin/utils.sh
Severin Kaderli 7bf11a5cdb
Update utils.sh
Signed-off-by: Severin Kaderli <severin.kaderli@gmail.com>
2018-12-24 14:46:07 +01:00

91 lines
No EOL
3.4 KiB
Bash
Executable file

#!/bin/bash
#
# SCRIPT NAME:
# utils.sh
#
# AUTHOR:
# Severin Kaderli <severin.kaderli@gmail.com>
#
# DESCRIPTION:
# This script provides functions and variables that I use in my other scripts.
# It is not supposed to be run directly but to be sourced by other scripts.
#
# USAGE:
# Source this script in the needed script.
#######################################
# Directory variables
#######################################
DIR="$( cd "$(dirname "${BASH_SOURCE[0]}" )" && cd ../../ && pwd)"
SYSTEM_DIR="${DIR}/system"
PACKAGES_DIR="${DIR}/packages"
#######################################
# Bash color code variables
#######################################
RESET='\033[0m'
GREEN='\033[32m'
RED='\033[31m'
BLUE='\033[34m'
YELLOW='\033[33m'
#######################################
# Helper functions
#######################################
# Function to display fancy headers
# USAGE: print_header TITLE
function print_header() {
echo -e "\n${GREEN}╔══════════════════════════════════════════════════════════════════════════════╗"
echo -e "$(printf "%-77s" "${1}")"
echo -e "╚══════════════════════════════════════════════════════════════════════════════╝${RESET}"
}
# Function to print a info message with the current time and to send
# a notification using notify-send.
# USAGE: print_notify TITLE MESSAGE
function print_notify() {
notify-send "${1}" "${2}"
echo -e "${YELLOW}[$(date "+%H:%M:%S")] ${1} ${2}${RESET}"
}
# Prints a section title.
# USAGE: print_section TITLE
function print_section() {
echo -e "${YELLOW}┌──────────────────────────────────────────────────────────────────────────────┐"
echo -e "$(printf "%-77s" "${1}")"
echo -e "└──────────────────────────────────────────────────────────────────────────────┘${RESET}"
}
function print_log() {
echo -e "$1"
}
# Creates the given directory in the home directory
# USAGE: create_directory DIRECTORY
function create_directory() {
print_log "Creating directory ${YELLOW}${HOME}/${1}${RESET}"
mkdir -p "${HOME}/${1}"
}
# Creates a symlink of the given file from the home directory to here.
# USAGE: create_link FILE
function create_link() {
print_log "Linking ${YELLOW}${HOME}/${1}${RESET} -> ${YELLOW}${SYSTEM_DIR}/${1}${RESET}"
rm -rf "${HOME:?}/$1"
ln -fs "${SYSTEM_DIR}/${1}" "${HOME}/${1}"
}
# Function to set owner and permission of a file
# USAGE: set_permission OWNER PERMISSION FILE
function set_permission() {
print_log "Changing owner of ${YELLOW}${3}${RESET} to ${YELLOW}${1}${RESET}"
sudo chown -R "${1}" "${3}"
print_log "Changing permission of ${YELLOW}${3}${RESET} to ${YELLOW}${2}${RESET}"
sudo chmod -R "${2}" "${3}"
}
# Function to enable a service
# USAGE: enable_service SERVICE
function enable_service() {
print_log "Enabling service ${YELLOW}${1}${RESET}"
sudo systemctl enable "${1}"
}