nanorc/install.sh
2019-11-02 21:15:04 +00:00

143 lines
3.5 KiB
Bash
Executable File

#!/bin/sh
# IMPROVED NANO SYNTAX HIGHLIGHTING FILES
# Get nano editor better to use and see.
# Copyright (C) 2014+ Anthony Scopatz et al.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Bash Variables
# Ativate or not the erros (1=activated)
OPTERR=1
# Separator (useful for simulate arrays)
IFS=" "
# Global Variables
G_VERSION="1.0.0"
G_NANORC_FILE="~/.nanorc"
G_DEPS="unzip sed wget"
# Exit Values Help
# 0 - OK
# 1 - Small problem
# 2 - Big problem
# Functions
# Show the usage/help
f_menu_usage(){
echo "Usage: $0 [ -l|-v|-h ] [ -f FILE ]"
echo "IMPROVED NANO SYNTAX HIGHLIGHTING FILES"
echo "Get nano editor better to use and see."
echo
echo "-l Activate lite installation."
echo "-v Show version, license and other info."
echo "-h Show help or usage."
echo "-f FILE Other file instead of the default .nanorc file."
exit 2
}
# Show version, license and other file.
f_menu_version(){
echo "IMPROVED NANO SYNTAX HIGHLIGHTING FILES"
echo "Version ${G_VERSION}"
echo
echo "Copyright (C) 2014+ Anthony Scopatz et al."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>."
echo "This is free software: you are free to change and redistribute it."
echo "There is NO WARRANTY, to the extent permitted by law."
echo
echo "Written by Anthony Scopatz and others."
exit 0
}
# Check dependencies
f_check_deps(){
DEPS_MISSED=""
# If there isn't the dependency the $DEPS_MISSED will be populated.
for DEP in $G_DEPS; do
if [ ! "$(command -v "$DEP")" ]; then
DEPS_MISSED="${DEP} ${DEPS_MISSED}"
fi
done
# Error if $DEPS_MISSED is populated.
if [ "$DEPS_MISSED" = "" ]; then
return 0
else
for DEP in $DEPS_MISSED; do
echo "The '${DEP}' program is required but was not found. Install '${DEP}' first and then run this script again." >&2
done
return 1
fi
}
_fetch_sources(){
wget -O /tmp/nanorc.zip https://github.com/scopatz/nanorc/archive/master.zip
mkdir -p ~/.nano/
cd ~/.nano/ || exit
unzip -o "/tmp/nanorc.zip"
mv nanorc-master/* ./
rm -rf nanorc-master
rm /tmp/nanorc.zip
}
_update_nanorc(){
touch ~/.nanorc
# add all includes from ~/.nano/nanorc if they're not already there
while read -r inc; do
if ! grep -q "$inc" "${NANORC_FILE}"; then
echo "$inc" >> "$NANORC_FILE"
fi
done < ~/.nano/nanorc
}
_update_nanorc_lite(){
sed -i '/include "\/usr\/share\/nano\/\*\.nanorc"/i include "~\/.nano\/*.nanorc"' "${NANORC_FILE}"
}
# corewct the get ifs
# check parameters with getopts
# help version license+info output bugs report
# init main
# get the git
# updat/create the nanorc
# Main / Init of script
f_check_deps
case "$1" in
-l|--lite)
UPDATE_LITE=1;;
-h|--help)
echo "Install script for nanorc syntax highlights"
echo "Call with -l or --lite to update .nanorc with secondary precedence to existing .nanorc includes"
;;
esac
_fetch_sources;
if [ $UPDATE_LITE ];
then
_update_nanorc_lite
else
_update_nanorc
fi