--- /Depot/GoboCVS/tools/Scripts/bin/RemoveProgram	2007-03-30 10:48:51.000000000 +0200
+++ /Depot/GoboCVS/MyTools/Scripts/bin/RemoveProgram	2007-04-04 06:03:56.000000000 +0200
@@ -5,6 +5,7 @@
 source ScriptFunctions
 Import GoboLinux 
 Import OptionParser
+Import Directories
 
 
 ### Options ###################################################################
@@ -15,48 +16,42 @@
 scriptUsage="<program> <version>"
 scriptExample="Qt 3.2.3"
 Add_Option_Boolean "b" "batch" "Do not ask for confirmation."
+Add_Option_Boolean "f" "follow" "Force to delete detached programs."
 Add_Option_Entry "u" "unmanaged" "Defines what to do with unmanaged files "\
 "from package. Options available are \"ask\", \"remove\" and \"keep\"." "ask"
 Parse_Options "$@"
 
 ### Operation #################################################################
 
-Verify_Superuser
-appname=$(Arg 1)
-appver=$(Arg 2)
-[ "${appname}" ] || Die "Argument missing: specify the program name."
-[ "${appver}" ] || Die "Argument missing: specify the program version."
+Is_Writable "$goboPrograms" || Verify_Superuser
 
-program=`GuessProgramCase ${appname} ${appver}`
-version=${appver}
+programname=`GuessProgramCase $(Arg 1) $(Arg 2)`
+[ "$(Arg 2)" ] || Die "Argument missing: specify the program version."
+versionnumber=$(Arg 2)
 
-if [ ! -d ${goboPrograms}/${program}/${version} ]
-then
-   Die "${program} ${version} not found at ${goboPrograms}"
-fi
+Is_Directory `Get_Dir runtime "$programname" "$versionnumber"` || {
+	# Remove links if there are any active
+	IsDetached $programname $programversion && Quiet UnlinkProgram $programname $versionnumber "detached" $(Entry unmanaged)
+	Die "$programname version $versionnumber was not found."
+}
 
-Log_Terse "Removing $program, version $version."
+Is_Directory `Get_Dir runtime "$programname" "$versionnumber"` || Die "${program} ${version} not found at ${goboPrograms}"
 
-Log_Verbose "Getting program file list..."
-filesdir=$(Get_System_Paths "${goboPrograms}/${program}/${version}")
+Log_Terse "Removing $programname, version $versionnumber."
 
-Log_Normal "Removing ${goboPrograms}/${program}/${version}..."
-if [ -f ./Resources/UnmanagedFiles ] && ! Is_Entry "unmanaged" "keep"
+UnlinkCurrent $programname $versionnumber
+# if program is detached, and not --follow option, disable program
+if IsDetached "$programname" "$versionnumber"
 then
-   { Is_Entry "unmanaged" "ask" && ! Ask "There are unmanaged files present. Do you want to remove them?"; } || Uninstall_Unmanaged_Files "${goboPrograms}/$program/$version/Resources/UnmanagedFiles"
+	UnlinkProgram $programname $versionnumber "detached" $(Entry unmanaged)
+	if Boolean "follow"
+	then
+		# Remove detached program
+		RemoveProgram $programname $versionnumber "detached"
+	fi
+else
+	# Remove attached program
+	UnlinkProgram $programname $versionnumber "attached" $(Entry unmanaged)
+	RemoveProgram $programname $versionnumber "attached"
 fi
-rm -rf -- ${goboPrograms}/${program}/${version}
-
-# TODO relink current?
-Quiet RemoveBroken "${goboPrograms}/${program}/Current"
-Quiet rmdir ${goboPrograms}/${program}
-
-Log_Normal "Removing broken links..."
-RemoveBroken $filesdir
-
-#Log_Normal "Rebuilding Environment Cache file..."
-#yes | RebuildLinks -n
-
-Gen_Env_Cache
-
 Log_Normal "${program} ${version} removed."
