#!/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 . # 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 ." 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