121 lines
2.5 KiB
Bash
121 lines
2.5 KiB
Bash
#!/bin/bash
|
|
#
|
|
# 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; version 2 of the License.
|
|
#
|
|
# 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.
|
|
|
|
version=@version@
|
|
|
|
SYSCONFDIR='@sysconfdir@'
|
|
|
|
[[ -r @libdir@/util-msg.sh ]] && source @libdir@/util-msg.sh
|
|
[[ -r @libdir@/util.sh ]] && source @libdir@/util.sh
|
|
|
|
create_set(){
|
|
msg "[$1/${name}.set]"
|
|
if [[ -f $1/${name}.set ]];then
|
|
msg3 "Backing up $1/${name}.set.orig"
|
|
mv "$1/${name}.set" "$1/${name}.set.orig"
|
|
fi
|
|
local list=$(find * -maxdepth 0 -type d | sort)
|
|
for item in ${list[@]};do
|
|
if [[ -f $item/$2 ]];then
|
|
cd $item
|
|
msg2 "Adding ${item##*/}"
|
|
echo ${item##*/} >> $1/${name}.set || break
|
|
cd ..
|
|
fi
|
|
done
|
|
}
|
|
|
|
remove_set(){
|
|
if [[ -f $1/${name}.set ]]; then
|
|
msg "Removing [$1/${name}.set] ..."
|
|
rm $1/${name}.set
|
|
fi
|
|
}
|
|
|
|
show_set(){
|
|
local list=$(cat $1/${name}.set)
|
|
msg "Content of [$1/${name}.set] ..."
|
|
for item in ${list[@]}; do
|
|
msg2 "$item"
|
|
done
|
|
}
|
|
|
|
load_user_info
|
|
|
|
load_config "${USER_CONFIG}/manjaro-tools.conf"
|
|
load_config "${SYSCONFDIR}/manjaro-tools.conf"
|
|
|
|
query=false
|
|
create=false
|
|
remove=false
|
|
show=false
|
|
iso_mode=false
|
|
|
|
name='default'
|
|
|
|
usage() {
|
|
echo "Usage: ${0##*/} [options]"
|
|
echo " -c <name> Create set"
|
|
echo " -r <name> Remove set"
|
|
echo " -s <name> Show set"
|
|
echo " -i Iso mode"
|
|
echo " -q Query sets"
|
|
echo ' -h This help'
|
|
echo ''
|
|
echo ''
|
|
exit $1
|
|
}
|
|
|
|
orig_argv=("$@")
|
|
|
|
opts='c:r:s:qih'
|
|
|
|
while getopts "${opts}" arg; do
|
|
case "${arg}" in
|
|
c) name="$OPTARG"; create=true ;;
|
|
r) name="$OPTARG"; remove=true ;;
|
|
s) name="$OPTARG"; show=true;;
|
|
i) iso_mode=true ;;
|
|
q) query=true ;;
|
|
h|?) usage 0 ;;
|
|
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
|
esac
|
|
done
|
|
|
|
shift $(($OPTIND - 1))
|
|
|
|
check_root "$0" "${orig_argv[@]}"
|
|
|
|
if ${create};then
|
|
if ${iso_mode}; then
|
|
create_set "${sets_dir_iso}" "profile.conf"
|
|
else
|
|
create_set "${sets_dir_pkg}" "PKGBUILD"
|
|
fi
|
|
elif ${remove};then
|
|
if ${iso_mode}; then
|
|
remove_set "${sets_dir_iso}"
|
|
else
|
|
remove_set "${sets_dir_pkg}"
|
|
fi
|
|
elif ${show};then
|
|
if ${iso_mode}; then
|
|
show_set "${sets_dir_iso}"
|
|
else
|
|
show_set "${sets_dir_pkg}"
|
|
fi
|
|
else
|
|
if ${iso_mode}; then
|
|
msg "Available sets: $(load_sets ${sets_dir_iso})"
|
|
else
|
|
msg "Available sets: $(load_sets ${sets_dir_pkg})"
|
|
fi
|
|
fi
|