scripts

various script and utils
git clone git://z3bra.org/scripts
Log | Files | Refs

commit f320002bf9bfffc30098e5f053c29909ac3fa35c
parent 11235faa0a8805750424cd8f1dcb12c021493fdd
Author: z3bra <willy@mailoo.org>
Date:   Wed May  7 10:37:17 +0200

Improved hmgr to saved config under random names

Diffstat:
hmgr | 67++++++++++++++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 48 insertions(+), 19 deletions(-)
diff --git a/hmgr b/hmgr @@ -9,37 +9,39 @@ basedir=~/.hmgr.d # Default names for configs default=config.def.h -usercfg=${USER}.h # How to list files managed by hmgr -#lister='ls --color=auto' -lister='tree -L 1 --noreport' +#listcmd='ls -1 --color=auto' +listcmd='tree -L 1 --noreport' # Change output colors ? -LS_COLORS="di=0;33:*.h=34" +color_conf='1;37' # colors for config files +color_dirs='0;33' # colors for directory names usage() { -echo "usage: $(basename $0) [-duh] [-l [dir]] [-sr <dir>]" +echo "usage: $(basename $0) [-uh] [-l [dir]] [-ni <file>] [-csr <dir>]" test -z "$1" && return cat <<EOF - -h : help - -d : deal with default config (by default) - -u : deal with user config - -l [dir] : list currently managed applications/files - -s <dir> : store \`config.h\` to <dir> - -r <dir> : restore \`config.h\` from <dir> + -h : help + -u : shortcut for -n ${USER}.h + -n <name> : deal with file as <name> (defaults to config.def.h) + -i <file> : input file to use (defaults to ./config.h) + -l [dir] : list currently managed applications/files + -c <dir> : check which config is in use + -s <dir> : store \`config.h\` to <dir> + -r <dir> : restore \`config.h\` from <dir> EOF } store() { test -z "$1" && return 1 - test ! -d ${basedir}/$1 && mkdir ${basedir}/${subdir} + test ! -d ${basedir}/$1 && mkdir ${basedir}/$1 # Copy from current dir to base directory - cp ${cin} ${basedir}/$1/${cout} + cp -i ${cin} ${basedir}/$1/${cout} } restore() { @@ -54,14 +56,26 @@ list() { # Go to the base directory cd ${basedir} - # change colors, for fun! - export LS_COLORS + ${listcmd} $1 +} - ${lister} $1 +check() { + found=0 + + for dir in ${basedir}/*; do + for file in ${dir}/*; do + if diff $file ${cin} >/dev/null; then + echo -en "${fgd}`basename ${dir}`${nofg}: " + echo -e "${fgh}`basename ${file}`${nofg}" + found=1 + fi + done + done + test ${found} -eq 0 && echo ${cin} is different from stored configs } # No arguments? give usage -test $# -eq 0 && usage && exit 0 +test $# -eq 0 && list && exit 0 # Create $basedir if it does not exists test ! -d ${basedir} && mkdir ${basedir} @@ -71,12 +85,27 @@ cin=config.h cout=${default} list=0 +# standardize colors for shell output +fgd="\e[${color_dirs}m" +fgh="\e[${color_conf}m" +nofg="\e[0m" + +# change colors, for fun! +LS_COLORS="di=${color_dirs}:*.h=${color_conf}" +export LS_COLORS + # Parse options -while getopts "dhls:r:u" opt; do +while getopts "chi:ln:s:r:u" opt; do case $opt in + # Check which config is in use + c) check;; + # Wether to use default config or user config - d) cout=${default};; u) cout=${usercfg};; + n) cout=${OPTARG};; + + # Change the input file + i) cin=$OPTARG;; # List currently managed config.h l) list=1; break;;