Skip to content

Commit

Permalink
fix: use tmp dir if $HOME isn't writable
Browse files Browse the repository at this point in the history
  • Loading branch information
atalii committed Oct 1, 2024
1 parent 8972bc5 commit e51e5a7
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 9 deletions.
24 changes: 24 additions & 0 deletions src/alire/alire-platforms-common.adb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
with AAA.Enum_Tools;
with GNAT.OS_Lib;

with Alire.OS_Lib.Subprocess;

Expand Down Expand Up @@ -71,4 +72,27 @@ package body Alire.Platforms.Common is
end Detect;
end Machine_Hardware_Name;

----------------------
-- Unix_Home_Folder --
----------------------

function Unix_Home_Folder return String
is
Home_Var : constant String := OS_Lib.Getenv ("HOME", "unset");
Maybe_Windows : constant Boolean := Home_Var = "unset"
and then GNAT.OS_Lib.Directory_Separator = '\';
begin
if Maybe_Windows then
raise Checked_Error with
"$HOME is not set, you might be running an"
& " `alr` built for a non-Windows OS";
elsif Home_Var = "unset" or else
not GNAT.OS_Lib.Is_Write_Accessible_File (Home_Var)
then
return "/tmp";
else
return Home_Var;
end if;
end Unix_Home_Folder;

end Alire.Platforms.Common;
10 changes: 1 addition & 9 deletions src/alire/alire-platforms-common.ads
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,7 @@ private package Alire.Platforms.Common is
-- Unix_Home_Folder --
---------------------

function Unix_Home_Folder return String
is (if OS_Lib.Getenv ("HOME", "unset") = "unset" and then
GNAT.OS_Lib.Directory_Separator = '\'
then
raise Checked_Error with
"$HOME is not set, you might be running an"
& " `alr` built for a non-Windows OS"
else
OS_Lib.Getenv ("HOME", Default => "/tmp"));
function Unix_Home_Folder return String;

----------------------
-- Unix_Temp_Folder --
Expand Down

0 comments on commit e51e5a7

Please sign in to comment.