#!/usr/bin/env sh # # Provision: install stuff using scripts. # # Copyright (C) 2017 Silvio Rhatto - rhatto at riseup.net # # 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 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 . # Parameters NAME="trashman" PROGRAM="$0" BASENAME="`basename $0`" ACTION="$1" CWD="`pwd`" # Set shared files location if [ -e "`dirname $(readlink -f $0)`/share/$NAME" ]; then # Development or local installation layout SHARE="`dirname $(readlink -f $0)`/share/$NAME" else # System installation layout SHARE="`dirname $(readlink -f $0)`/../share/$NAME" fi # Include basic functions . $SHARE/trashman/functions || exit 1 # Display usage __trashman_usage() { echo "$BASENAME: package ports tree and heterodox configuration provisioner" echo "" echo "usage: $BASENAME " echo "usage: $BASENAME [ ... ] [<--param1=value1> ... <--paramM=valueM>]" echo "" echo "available packages:" echo "" for package in `__trashman_implementations`; do if [ -e "$SHARE/$package/info" ]; then echo "\t $package: `cat $SHARE/$package/info` (`__trashman_actions $package | sed -e 's/ /|/g'`)" fi done echo "" exit 1 } # Dispatch if [ -z "$ACTION" ]; then __trashman_usage elif [ "$ACTION" = "fetch" ]; then __trashman_$ACTION elif [ "$ACTION" = "merge" ]; then __trashman_$ACTION elif [ "$ACTION" = "version" ]; then __trashman_$ACTION else # Get packages param shift PACKAGES="$*" # Setup packages if [ -z "$PACKAGES" ]; then __trashman_usage else for package in $PACKAGES; do if [ ! -z "`__trashman_actions $package`" ]; then folder="`__trashman_actions_folder $package`" if [ -x "$SHARE/$package/$folder/$ACTION" ]; then if [ "$ACTION" != "check" ] && [ "$ACTION" != "test" ]; then __trashman_echo "Dumpsterizing your system: action $ACTION for $package ($folder)..." fi $SHARE/$package/$folder/$ACTION $SHARE status="$?" if [ "$ACTION" = "check" ]; then if [ "$status" = "0" ]; then __trashman_echo "Package $package is installed system-wide" elif [ "$status" = "1" ]; then __trashman_echo "Package $package is not installed system-wide" elif [ "$status" = "2" ]; then __trashman_echo "Package $package is partially installed system-wide" fi fi if [ "$ACTION" = "test" ]; then if [ "$status" = "0" ]; then __trashman_echo "Package $package is running as expected" elif [ "$status" = "1" ]; then __trashman_echo "Package $package is not running as expected" fi fi else __trashman_echo "No such action $ACTION for package $package, skipping" fi else __trashman_echo "No such package $package, skipping" fi done # Exit with the latest return status exit $status fi fi