@@ -38,7 +38,15 @@ func (pm *PackageManager) IsManagedPlatformRelease(platformRelease *cores.Platfo
3838 if pm .PackagesDir == nil {
3939 return false
4040 }
41- managed , err := platformRelease .InstallDir .IsInsideDir (pm .PackagesDir )
41+ installDir := platformRelease .InstallDir .Clone ()
42+ if installDir .FollowSymLink () != nil {
43+ return false
44+ }
45+ packagesDir := pm .PackagesDir .Clone ()
46+ if packagesDir .FollowSymLink () != nil {
47+ return false
48+ }
49+ managed , err := installDir .IsInsideDir (packagesDir )
4250 if err != nil {
4351 return false
4452 }
@@ -77,17 +85,35 @@ func (pm *PackageManager) InstallTool(toolRelease *cores.ToolRelease) error {
7785 return toolResource .Install (pm .DownloadDir , pm .TempDir , destDir )
7886}
7987
88+ // IsManagedToolRelease returns true if the ToolRelease is managed by the PackageManager
89+ func (pm * PackageManager ) IsManagedToolRelease (toolRelease * cores.ToolRelease ) bool {
90+ if pm .PackagesDir == nil {
91+ return false
92+ }
93+ installDir := toolRelease .InstallDir .Clone ()
94+ if installDir .FollowSymLink () != nil {
95+ return false
96+ }
97+ packagesDir := pm .PackagesDir .Clone ()
98+ if packagesDir .FollowSymLink () != nil {
99+ return false
100+ }
101+ managed , err := installDir .IsInsideDir (packagesDir )
102+ if err != nil {
103+ return false
104+ }
105+ return managed
106+ }
107+
80108// UninstallTool remove a ToolRelease.
81109func (pm * PackageManager ) UninstallTool (toolRelease * cores.ToolRelease ) error {
82110 if toolRelease .InstallDir == nil {
83111 return fmt .Errorf ("tool not installed" )
84112 }
85113
86114 // Safety measure
87- if safe , err := toolRelease .InstallDir .IsInsideDir (pm .PackagesDir ); err != nil {
88- return fmt .Errorf ("checking if tool is installed in data dir: %s" , err )
89- } else if ! safe {
90- return fmt .Errorf ("tool is not installed inside data dir" )
115+ if ! pm .IsManagedToolRelease (toolRelease ) {
116+ return fmt .Errorf ("Tool %s is not managed by package manager" , toolRelease )
91117 }
92118
93119 if err := toolRelease .InstallDir .RemoveAll (); err != nil {
0 commit comments