nanorc/install.sh

165 lines
3.8 KiB
Bash
Raw Normal View History

#!/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/>.
2019-11-05 00:42:09 +00:00
# Help:
# https://www.shellscript.sh/tips/getopts/
# Bash Variables
# Ativate or not the erros (1=activated)
OPTERR=1
# Separator (useful for simulate arrays)
2019-11-03 23:22:28 +00:00
G_IFS=" "
# Global Variables
2019-11-02 21:15:04 +00:00
G_VERSION="1.0.0"
G_DEPS="unzip sed wget"
2019-11-03 23:22:28 +00:00
G_LITE=false
G_FILE="~/.nanorc"
2019-11-02 21:15:04 +00:00
# Exit Values Help
# 0 - OK
# 1 - Small problem
# 2 - Big problem
# Functions
2019-11-02 21:15:04 +00:00
# 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
2019-11-03 23:22:28 +00:00
echo "-l Activate lite installation."
echo " We will take account your existing .nanorc files."
echo "-v Show version, license and other info."
echo "-h Show help or usage."
echo "-f FILE"
echo " Other file instead of the default .nanorc file."
2019-11-02 21:15:04 +00:00
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."
2019-11-03 23:22:28 +00:00
echo
echo "For bugs report, please fill an issue at https://github.com/scopatz/nanorc"
2019-11-02 21:15:04 +00:00
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
}
2019-11-03 23:22:28 +00:00
# Set IFS
f_set_ifs(){
temp=$IFS
IFS=$G_IFS
G_IFS=temp
}
_fetch_sources(){
wget -O /tmp/nanorc.zip https://github.com/scopatz/nanorc/archive/master.zip
2019-06-24 12:21:11 +02:00
mkdir -p ~/.nano/
2015-12-14 22:02:50 -05:00
2017-12-28 01:29:50 -05:00
cd ~/.nano/ || exit
unzip -o "/tmp/nanorc.zip"
mv nanorc-master/* ./
rm -rf nanorc-master
rm /tmp/nanorc.zip
}
2015-12-14 22:02:50 -05:00
_update_nanorc(){
2019-06-24 12:21:11 +02:00
touch ~/.nanorc
2019-10-03 23:06:15 +01:00
# add all includes from ~/.nano/nanorc if they're not already there
2017-12-28 01:29:50 -05:00
while read -r inc; do
if ! grep -q "$inc" "${NANORC_FILE}"; then
2017-12-28 01:29:50 -05:00
echo "$inc" >> "$NANORC_FILE"
fi
done < ~/.nano/nanorc
}
_update_nanorc_lite(){
sed -i '/include "\/usr\/share\/nano\/\*\.nanorc"/i include "~\/.nano\/*.nanorc"' "${NANORC_FILE}"
}
2015-12-14 22:02:50 -05:00
2019-11-03 23:22:28 +00:00
# check parameters with set variable
# made the script more or less verbose
2019-11-02 21:15:04 +00:00
# init main
# get the git
# updat/create the nanorc
2019-11-02 21:15:04 +00:00
2019-11-03 23:22:28 +00:00
# ============================
#
# MAIN / Init of script
#
# =============================
2019-11-02 21:15:04 +00:00
2019-11-03 23:22:28 +00:00
f_set_ifs
f_check_deps && exit 2
2019-11-02 21:15:04 +00:00
2019-11-03 23:22:28 +00:00
while getopts "lf:vh?" c
case $c in
l) G_LITE=true;;
f) G_FILE=$OPTARG;;
v) f_menu_version ;;
h|?|*) f_menu_usage ;;
esac
done
2019-11-03 23:22:28 +00:00
_fetch_sources
2019-11-03 23:22:28 +00:00
if [ $G_LITE ];
then
_update_nanorc_lite
else
_update_nanorc
fi
2019-11-03 23:22:28 +00:00
f_set_ifs