#!/bin/bash ### Imports ################################################################### source ScriptFunctions Import GoboLinux Import OptionParser Import Versions ### Options ################################################################### scriptDescription="Removes a program version from the system." scriptCredits="Copyright (C) 2004 Andre Detsch. Released under the GNU GPL." helpOnNoArguments=yes scriptUsage=" " scriptExample="Qt 3.2.3" Add_Option_Boolean "b" "batch" "Do not ask for confirmation." Add_Option_Entry "u" "unmanaged" "Defines what to do with unmanaged files "\ "from package." "ask" "ask remove keep interactive" Parse_Options "$@" ### Operation ################################################################# Verify_Superuser appname=$(Arg 1) appver=$(Arg 2) [ "${appname}" ] || Die "Argument missing: specify the program name." program=`GuessProgramCase ${appname}` [ ! -d "${goboPrograms}/${program}" ] && Die "${program} not found in ${goboPrograms}" if ! [ "${appver}" ] then Die "Argument missing: specify the program version.\nAvailable versions are:\n$(All_Versions "$appname")" fi version=${appver} if [ ! -d "${goboPrograms}/${program}/${version}" ] then Die "${program} ${version} not found in ${goboPrograms}. Available versions:\n$(All_Versions "$program")" fi Log_Terse "Removing $program, version $version." Log_Verbose "Getting program file list..." filesdir=$(Get_System_Paths "${goboPrograms}/${program}/${version}") Is_Real_Nonempty_Directory "${goboPrograms}/${program}/${version}/Shared/mime/packages" && rebuildmimedb=true Is_Real_Nonempty_Directory "${goboPrograms}/${program}/${version}/Shared/applications" && rebuilddesktopdb=true Is_Real_Nonempty_Directory "${goboPrograms}/${program}/${version}/Shared/fonts" && rebuildfontcache=true Is_Real_Nonempty_Directory "${goboPrograms}/${program}/${version}/lib/gtk-2.0" && rebuildgdkpixbufloaders=true Is_Real_Nonempty_Directory "${goboPrograms}/${program}/Settings/gconf/schemas" && Uninstall_GConf_Schemas "$program" Log_Normal "Removing ${goboPrograms}/${program}/${version}..." if [ -f ${disabled}/Resources/UnmanagedFiles ] && ! Is_Entry "unmanaged" "keep" then if Is_Entry "unmanaged" "ask" then Log_Normal "There are unmanaged files present." while true do Ask_Option "Do you want to [k]eep or [r]emove them or go through them [i]nteractively?" case "$REPLY" in [Rr]) failedunmanageddirs=$(Uninstall_Unmanaged_Files "${goboPrograms}/${programname}/${versionnumber}-Disabled/Resources/UnmanagedFiles"); break;; [Ii]) Uninstall_Unmanaged_Files "${goboPrograms}/${programname}/${versionnumber}-Disabled/Resources/UnmanagedFiles" "interactive"; break;; [Kk]) break;; esac # You know what? It's ridiculous done elif Is_Entry "unmanaged" "interactive" then Log_Normal "There are unmanaged files present." Log_Verbose "Will interactivly prompt for each unmanaged files entry." Uninstall_Unmanaged_Files "${goboPrograms}/${programname}/${versionnumber}-Disabled/Resources/UnmanagedFiles" "interactive" elif Is_Entry "unmanaged" "remove" then Log_Normal "Removing unmanaged files..." failedunmanageddirs=$(Uninstall_Unmanaged_Files "${goboPrograms}/${programname}/${versionnumber}-Disabled/Resources/UnmanagedFiles") fi fi rm -rf -- ${goboPrograms}/${program}/${version} # TODO relink current? Quiet RemoveBroken "${goboPrograms}/${program}/Current" Quiet rmdir ${goboPrograms}/${program} Log_Normal "Removing broken links..." echo "$filesdir" | RemoveBroken || Log_Error "Couldn't cleanup links." #Log_Normal "Rebuilding Environment Cache file..." #yes | RebuildLinks -n [ "${rebuildmimedb}" = "true" ] && Rebuild_MIME_Database [ "${rebuilddesktopdb}" = "true" ] && Rebuild_Desktop_Database [ "${rebuildfontcache}" = "true" ] && Rebuild_Font_Cache [ "${rebuildgdkpixbufloaders}" = "true" ] && Rebuild_GDK_Pixbuf_Loaders Gen_Env_Cache Log_Normal "${program} ${version} removed." [ -z "${failedunmanageddirs}" ] || { Log_Terse "The following unmanaged directories were not removed since they were not empty." Log_Verbose "You have to manually delete the following directories." for dir in "${failedunmanageddirs[@]}" do Log_Normal "${dir}" done }