#!/bin/bash # Author: Luis Garcia Gisbert # Description: Generate llxcfg-scripts # # # 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 2 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, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # vars SCRIPTS_PATH="/usr/sbin" SCRIPTS_DIRLIST="-scripts -scripts.d -scripts.deny" SCRIPTS_DIRPATH="/etc/llxcfg" regexp(){ SCR_TYPE="$1" [ "$SCR_TYPE" ] || SCR_TYPE="[^[:blank:]]\+" echo "^[[:blank:]]*\(${SCR_TYPE}\)[[:blank:]]*:[[:blank:]]*\(\([^[:blank:]]\+[[:blank:]]*\)\+\)$" } scripts_list(){ REGEXP="$(regexp)" sed -ne "/$REGEXP/s%$REGEXP%\1%p" "$SCRIPTS_LIST" } script_action_list(){ REGEXP="$(regexp "$1")" sed -ne "/$REGEXP/{s%$REGEXP%\2%;s%^[[:blank:]]*%%;s%[[:blank:]]*$%%;s%[[:blank:]]\+%|%g;p}" "$SCRIPTS_LIST" } script_test(){ [ -f "debian/$package/$SCRIPTS_PATH/llxcfg-${1}-scripts" ] || return 1 return 0 } script_gen(){ mkdir -p "debian/$package/$SCRIPTS_PATH" SCRIPT_FILE="debian/$package/$SCRIPTS_PATH/llxcfg-${1}-scripts" # custom template or generic one for f in /usr/share/llxcfg-dev/scripts/llxcfg-scripts.in debian/llxcfg-scripts.in debian/llxcfg-${1}-scripts.in ; do [ ! -r "$f" ] || SCRIPT_TEMPLATE="$f" done ACTIONS_LIST="$(script_action_list "$1")" sed -e "s%_@_SCRIPT_TYPE_@_%$1%g;s%_@_SCRIPT_ACTIONS_@_%$ACTIONS_LIST%g" "$SCRIPT_TEMPLATE" > "$SCRIPT_FILE" chmod +x "$SCRIPT_FILE" return 0 } varname_gen(){ printf "LLXSCR_" echo "${STYPE}" |tr "[:lower:]" "[:upper:]" |tr ".\-+ ,;" "_" } # main [ "$LLXCFG_DEV_LIB" ] || LLXCFG_DEV_LIB="/usr/share/lliurex/llxcfg-dev/llxcfg-dev.sh" . $LLXCFG_DEV_LIB &>/dev/null || { echo "$_ file not found" >&2; exit 1; } dl_deb_test ALL_PKGS="$(dl_list_binpkgs)" for package in ${ALL_PKGS} ; do SCRIPTS_LIST="debian/${package}.scrtypes" if [ "$package" = "$(dl_first_pkg)" ] ; then ALT_LIST="debian/scrtypes" [ -s "$ALT_LIST" ] && SCRIPTS_LIST="$ALT_LIST" fi if [ -r "$SCRIPTS_LIST" ] ; then VAR_DIR="debian/$package/$LLXEXT_SOURCE" VAR_FILE="$VAR_DIR/$package.scrtypes" SCR_LIST="$(scripts_list)" TYPES_LIST="" mkdir -p "$VAR_DIR" for STYPE in $SCR_LIST ; do if ! script_test "$STYPE" ; then # there is not llxcfg-STYPE-script in the package, so ... # generate it from template script_gen "$STYPE" fi # generate dirs for d in $SCRIPTS_DIRLIST ; do DNAME="debian/$package/${SCRIPTS_DIRPATH}/${STYPE}${d}" mkdir -p "$DNAME" done # common variable definition VAR_NAME="$(varname_gen "${STYPE}")" echo "$VAR_NAME=\"${STYPE}\"" >> "$VAR_FILE" TYPES_LIST="$TYPES_LIST \$${VAR_NAME}" done echo -e "\nLLXSCR_TYPES=\"\$LLXSCR_TYPES${TYPES_LIST}\"\n" >> "$VAR_FILE" fi done exit 0