#!/bin/bash # # SCRIPT NAME: # utils.sh # # AUTHOR: # Severin Kaderli # # 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 add a user to a group # USAGE add_to_group USER GROUP function add_to_group() { print_log "Add user ${YELLOW}${1}${RESET} to group ${YELLOW}${2}${RESET} " sudo gpasswd -a "${1}" "${2}" > /dev/null 2>&1 } # Function to enable a service # USAGE: enable_service SERVICE function enable_service() { print_log "Enabling service ${YELLOW}${1}${RESET}" sudo systemctl enable "${1}" } # Function to copy a udev rule to /etc/udev/rules.d/ # USAGE: copy_udev_rules FILE function copy_udev_rule() { print_log "Copying ${YELLOW}$(basename "${1}")${RESET} to ${YELLOW}/etc/udev/rules.d/${RESET}" sudo cp "${1}" "/etc/udev/rules.d/" }