#!/bin/bash

store=/etc/enable-catalogs
cp="cp -av" #verbose
#cp="cp -a"  #silent


checkname()
{
    if echo "$1"|grep -q "[^A-Za-z0-9]"; then
        echo "$bn: $1 - please use alnum chars only!"
        exit 1
    fi
}


main()
{
bn=$(basename $0)
trap "e=$?; echo ${bn}: aborting with error $e; exit $e" ERR

case "${1}" in
 -h|--help|"")
    echo "
$bn v0.91, licence: bonoboware JR 2014-05-08
Save or restore catalog/repository settings done in HAM

$bn usage:
    $bn list|-l
       list all saved catalog-setting names (ls ${store})
       
    $bn <saved-catalog-setting>
       restore apt and HAM catalog settings to previously saved setting of given name
       
    $bn save <catalog-setting>
       save/update current catalog setting (managed by HAM) <catalog-setting>
       if a store named <catalog-setting> already exists, it gets updated
       if no store of name <catalog-setting> exists yet, it gets created
       
    $bn delete <saved-catalog-setting>
       delete a saved catalog setting from store ${store}
       without parameter <saved-catalog-setting> ALL stores get deleted!

    $bn [help|-h|--help]
       print this help text"
       
    exit
    ;;
 list|-l)
    echo "$bn known setting stores:"
    ls ${store}
    ;;
 save)
    if test "${2}" == ""; then
      echo "${bn}: error - missing dir parameter after save"; 
      exit 1
    fi
    checkname "${2}"
    mkdir -p -m 644 ${store}/${2}/etc/
    ${cp} /etc/apt ${store}/${2}/etc/
    ${cp} /etc/hildon-application-manager ${store}/${2}/etc/
    echo "copied catalog setting to ${2}"
    exit
    ;;
 delete)
    checkname "${2}"
    rm -R ${store}/${2}
    exit
    ;;
 *)
    checkname "${1}"
    ${cp} ${store}/${1}/etc/apt /etc
    ${cp} ${store}/${1}/etc/hildon-application-manager /etc
    echo "$bn: restored catalog setting ${1}"
    exit
    ;;
esac
}

main "$@";