MIAOU-BASH is a collection of settings and helpers for leveraging BASH. Developer-friendly, it may be used as solo package with or without the miaou project.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.1 KiB

#!/usr/bin/env miaou-bash
# CONSTANTS
readonly AZERTY_ZONES=(
'Europe/Paris'
'Indian/Reunion'
'Indian/Mayotte'
'America/Cayenne'
'America/Guadeloupe'
'America/Martinique'
'Pacific/Noumea'
'Pacific/Tahiti'
)
readonly REQUIRED_PKGS=(file jq vim git)
readonly BACKUP='ORIGINAL'
# FUNCTIONS
function required_packages {
"$MIAOU_BASH_DIR/tools/idem_apt_install" "${REQUIRED_PKGS[@]}"
}
function no_more_skeleton {
if [[ -e /etc/skel/.bashrc ]]; then
rm /etc/skel/.bashrc
echo "skeleton .bashrc removed!"
fi
}
function link_etc {
local filename="$1" subfolder="${2:-}"
local link_name="$filename"
[[ -v LINK_NAME ]] && link_name="$LINK_NAME"
local source="$MIAOU_BASH_DIR/etc"
local destination="/etc"
[[ -n "$subfolder" ]] && source+="/${subfolder}" && destination+="/${subfolder}"
if [[ -L "$destination/$link_name" ]]; then
if [[ "$(readlink "$destination/$link_name")" != "$source/$filename" ]]; then
ln -sf "$source/$filename" "$destination/$link_name"
echo "link $source/$link_name updated"
fi
else
if [[ -f "$destination/$link_name" ]]; then
mv "$destination/$link_name" "$destination/$link_name.$BACKUP"
echo "$destination/$link_name.$BACKUP saved!"
fi
ln -s "$source/$filename" "$destination/$link_name"
echo "link $source/$link_name created"
fi
}
function link_config_files {
link_etc bash.bashrc
link_etc inputrc
[[ "$DISTRO_LIKE" == 'arch' ]] && mkdir -p /etc/vim
echo A
link_etc vimrc.core vim
link_etc vimrc.miaou vim
link_etc vimrc.rookie vim
if in_azerty_zone 2>/dev/null; then
link_etc vimrc.azerty vim
LINK_NAME=vimrc.local link_etc vimrc.local.azerty vim
else
link_etc vimrc.local vim
fi
echo OK
}
function in_azerty_zone {
local zone
zone=$(readlink /etc/localtime)
zone="${zone#/usr/share/zoneinfo/}" # remove prefix
for i in "${AZERTY_ZONES[@]}"; do [[ "$zone" == "$i" ]] && return 0; done
return 1
}
# MAIN
[ "$UID" -ne 0 ] && echo 'root privilege required' && exit 1
source "$MIAOU_BASH_DIR/lib/functions.bash"
DISTRO_LIKE=$(fetch_distro_like)
required_packages
no_more_skeleton
link_config_files