mirror of
https://github.com/fsquillace/junest.git
synced 2026-07-22 10:37:20 +00:00
176 lines
8.3 KiB
Bash
176 lines
8.3 KiB
Bash
#!/bin/sh
|
|
|
|
# ADD BASH COMPLETION
|
|
rm -R -f ~/.cache/junest-list
|
|
echo -ne "$(ls ~/.junest/usr/bin_wrappers/ )"\\r >> ~/.cache/junest-list
|
|
echo "\n--help\n--app\n--delete\n--disable-completion\n--enable-completion\n--remove\n--service\n--update\n--version\n--media\n--sudo" >> ~/.cache/junest-list
|
|
|
|
# OPTIONS
|
|
case "$1" in
|
|
'') echo "\n USAGE:\n\n junest-export {OPTION}\n junest-export {OPTION} {APPNAME}\n junest-export {OPTION} {APPNAME} {FLAGS}\n\n Run 'junest-export -h' or 'junest-export --help' for more information\n";;
|
|
'-h'|'--help')
|
|
echo "\n USAGE:\n\n junest-export {OPTION}\n junest-export {OPTION} {APPNAME}\n junest-export {OPTION} {APPNAME} {FLAGS}\n"
|
|
echo " EXAMPLES:\n\n junest-export --update\n junest-export --app celestia\n junest-export --app kdenlive --media\n junest-export --service pamac --sudo\n"
|
|
echo " OPTIONS:\n"
|
|
echo " --help/-h: shows this message"
|
|
echo " --app/-a: name of the application to export"
|
|
echo " --disable-completion disable bash completion"
|
|
echo " --enable-completion enable bash completion"
|
|
echo " --remove/--delete/-r delete exported application or service"
|
|
echo " --service/-s: name of the service to export"
|
|
echo " --update/-u: update this script (requires 'wget')"
|
|
echo " --version/-v: shows the version of this script"
|
|
echo "\n FLAGS:\n"
|
|
echo " --app/-a: action on an exported application"
|
|
echo " --media/-m: enable the support for drives mounted in /media"
|
|
echo " --service/-s: action on an exported service"
|
|
echo " --sudo/-S: specify if the exported item should be run as sudo\n"
|
|
;;
|
|
'-a'|'--app')
|
|
if [ -n "$SUDO_COMMAND" ]; then echo -e "\n WARNING: You don't need to run the option '$1' with SUDO.\n"; exit; fi
|
|
while [ -n "$1" ]
|
|
do
|
|
desktopfile=$(ls ~/.junest/usr/share/applications/ | grep -i $2 | head -1)
|
|
if test -f ~/.junest/usr/share/applications/$desktopfile > /dev/null 2>&1; then
|
|
rm -R -f ~/.cache/junest-export
|
|
mkdir ~/.cache/junest-export
|
|
if test -f ~/.junest/usr/share/applications/*$2* > /dev/null 2>&1; then
|
|
cp ~/.junest/usr/share/applications/*$2* ~/.cache/junest-export > /dev/null 2>&1
|
|
else
|
|
cp ~/.junest/usr/share/applications/$desktopfile ~/.cache/junest-export > /dev/null 2>&1
|
|
fi
|
|
appiconname=$(cat ~/.cache/junest-export/* > /dev/null 2>&1 | grep Icon | cut -c 6- | head -1)
|
|
addmedia='-b "--bind /media /media"'
|
|
sed -i "s#Exec=#Exec=sh -c '~/.local/share/junest/bin/junest -- #g" ~/.cache/junest-export/* > /dev/null 2>&1
|
|
sed -i "/^Exec=/ s/$/$(echo \')/" ~/.cache/junest-export/* > /dev/null 2>&1
|
|
while [ -n "$3" ]
|
|
do
|
|
case "$3" in
|
|
'-S'|'--sudo') sed -i "s#junest #junest -f #g" ~/.cache/junest-export/* > /dev/null 2>&1; break;;
|
|
'-m'|'--media') sed -i "s#junest #junest $addmedia #g" ~/.cache/junest-export/* > /dev/null 2>&1; break;;
|
|
''|*) break;;
|
|
esac
|
|
done
|
|
while [ -n "$4" ]
|
|
do
|
|
case "$4" in
|
|
'-S'|'--sudo') sed -i "s#junest #junest -f #g" ~/.cache/junest-export/* > /dev/null 2>&1; break;;
|
|
'-m'|'--media') sed -i "s#junest #junest $addmedia #g" ~/.cache/junest-export/* > /dev/null 2>&1; break;;
|
|
''|*) break;;
|
|
esac
|
|
done
|
|
mkdir -p ~/.local/share/applications
|
|
mv ~/.cache/junest-export/* ~/.local/share/applications/ > /dev/null 2>&1
|
|
rm -R -f ~/.cache/junest-export
|
|
mkdir -p ~/.local/share/icons
|
|
ln -s ~/.junest/usr/share/icons/hicolor ~/.local/share/icons/hicolor > /dev/null 2>&1
|
|
cp ~/.junest/usr/share/pixmaps/*$appiconname* ~/.local/share/icons/ > /dev/null 2>&1
|
|
echo " $2 has been successfully exported!"
|
|
exit
|
|
else
|
|
echo " $2 is not a valid argument or is not installed."; break;
|
|
fi
|
|
done;;
|
|
|
|
'-r'|'--remove'|'--delete')
|
|
if [ -n "$SUDO_COMMAND" ]; then echo -e "\n WARNING: You don't need to run the option '$1' with SUDO.\n"; exit; fi
|
|
while [ -n "$1" ]
|
|
do
|
|
case "$3" in
|
|
'-a'|'--app') appdesktopfile=$(ls ~/.local/share/applications/ | grep -i $2 | head -1)
|
|
if test -f ~/.local/share/applications/$appdesktopfile > /dev/null 2>&1; then
|
|
rm -f ~/.local/share/applications/*$2* > /dev/null 2>&1
|
|
rm -f ~/.local/share/applications/$appdesktopfile > /dev/null 2>&1
|
|
echo " $2 has been successfully removed!"
|
|
break
|
|
else
|
|
echo " ERROR: there is no *.desktop file exported for the app $2."; break
|
|
fi;;
|
|
'-s'|'--service') servicedesktopfile=$(ls ~/.junest/etc/xdg/autostart/ | grep -i $2 | head -1)
|
|
if test -f ~/.config/autostart/$servicedesktopfile > /dev/null 2>&1; then
|
|
rm -f ~/.config/autostart/*$2* > /dev/null 2>&1
|
|
rm -f ~/.config/autostart/$servicedesktopfile > /dev/null 2>&1
|
|
echo " $2 has been successfully removed!"
|
|
break
|
|
else
|
|
echo " ERROR: there is no *.desktop file exported for the service '$2'."; break
|
|
fi;;
|
|
''|*) echo "\n USAGE:\n\n junest-export --remove {APPNAME} {FLAG}\n\n"
|
|
echo " FLAGS:\n\n --app/-a: the item is an application\n --service/-s: the item is a service\n"
|
|
echo " EXAMPLES:\n\n junest-export --remove kdenlive --app\n junest-export --remove pamac --service\n"; exit;;
|
|
esac
|
|
done;;
|
|
|
|
|
|
'-s'|'--service')
|
|
if [ -n "$SUDO_COMMAND" ]; then echo -e "\n WARNING: You don't need to run the option '$1' with SUDO.\n"; exit; fi
|
|
while [ -n "$1" ]
|
|
do
|
|
desktopfile=$(ls ~/.junest/etc/xdg/autostart/ | grep -i $2 | head -1)
|
|
if test -f ~/.junest/etc/xdg/autostart/$desktopfile > /dev/null 2>&1; then
|
|
rm -R -f ~/.cache/junest-export
|
|
mkdir ~/.cache/junest-export
|
|
if test -f ~/.junest/etc/xdg/autostart/*$2* > /dev/null 2>&1; then
|
|
cp ~/.junest/etc/xdg/autostart/*$2* ~/.cache/junest-export > /dev/null 2>&1
|
|
else
|
|
cp ~/.junest/etc/xdg/autostart/$desktopfile ~/.cache/junest-export > /dev/null 2>&1
|
|
fi
|
|
appiconname=$(cat ~/.cache/junest-export/* > /dev/null 2>&1 | grep Icon | cut -c 6- | head -1)
|
|
addmedia='-b "--bind /media /media"'
|
|
sed -i "s#Exec=#Exec=sh -c '~/.local/share/junest/bin/junest -- #g" ~/.cache/junest-export/* > /dev/null 2>&1
|
|
sed -i "/^Exec=/ s/$/$(echo \')/" ~/.cache/junest-export/* > /dev/null 2>&1
|
|
while [ -n "$3" ]
|
|
do
|
|
case "$3" in
|
|
'-S'|'--sudo') sed -i "s#junest #junest -f #g" ~/.cache/junest-export/* > /dev/null 2>&1; break;;
|
|
'-m'|'--media') sed -i "s#junest #junest $addmedia #g" ~/.cache/junest-export/* > /dev/null 2>&1; break;;
|
|
''|*) break;;
|
|
esac
|
|
done
|
|
while [ -n "$4" ]
|
|
do
|
|
case "$4" in
|
|
'-S'|'--sudo') sed -i "s#junest #junest -f #g" ~/.cache/junest-export/* > /dev/null 2>&1; break;;
|
|
'-m'|'--media') sed -i "s#junest #junest $addmedia #g" ~/.cache/junest-export/* > /dev/null 2>&1; break;;
|
|
''|*) break;;
|
|
esac
|
|
done
|
|
mkdir -p ~/.config/autostart
|
|
mv ~/.cache/junest-export/* ~/.config/autostart/ > /dev/null 2>&1
|
|
rm -R -f ~/.cache/junest-export
|
|
mkdir -p ~/.local/share/icons
|
|
ln -s ~/.junest/usr/share/icons/hicolor ~/.local/share/icons/hicolor > /dev/null 2>&1
|
|
cp ~/.junest/usr/share/pixmaps/*$appiconname* ~/.local/share/icons/ > /dev/null 2>&1
|
|
echo " $2 has been successfully exported!"
|
|
exit
|
|
else
|
|
echo " $2 is not a valid argument or is not installed."; break;
|
|
fi
|
|
done;;
|
|
'-u'|'--update')
|
|
DIR="$( cd "$( dirname "$0" )" && pwd )"
|
|
wget -q https://raw.githubusercontent.com/ivan-hc/junest/master/bin/junest-export -O /tmp/junest-export.sh && chmod a+x /tmp/junest-export.sh
|
|
mv /tmp/junest-export.sh $DIR/junest-export > /dev/null 2>&1
|
|
echo " This script is updated to the version $($DIR/junest-export -v)";;
|
|
'--disable-completion')
|
|
if [ $(cat ~/.bash_completion | grep -o appman | head -1) == appman ]; then
|
|
grep -v 'complete -W "$(cat ~/.cache/junest-list 2>/dev/null)" junest-export' ~/.bash_completion > ~/.bash_completion.backup &&
|
|
mv ~/.bash_completion.backup ~/.bash_completion
|
|
echo " Completion disabled! "
|
|
else
|
|
echo " Completion script is NOT enabled! "
|
|
fi;;
|
|
'--enable-completion')
|
|
if test -f ~/.bash_completion; then
|
|
echo 'complete -W "$(cat ~/.cache/junest-list 2>/dev/null)" junest-export' >> ~/.bash_completion
|
|
echo " Completion enabled! "
|
|
else
|
|
echo '#!/usr/bin/env bash' >> ~/.bash_completion
|
|
echo 'complete -W "$(cat ~/.cache/junest-list 2>/dev/null)" junest-export' >> ~/.bash_completion
|
|
chmod a+x ~/.bash_completion
|
|
echo " Completion enabled! "
|
|
fi;;
|
|
'-v'|'--version') echo "0.0.4-2";;
|
|
*) junest-export;;
|
|
esac
|
|
|