diff --git a/scripts/_common.sh b/scripts/_common.sh index 234217a..a76b808 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -75,6 +75,31 @@ ynh_remove_fail2ban_config () { sudo systemctl restart fail2ban } +ynh_smart_mktemp () { + local min_size="${1:-300}" + # Transform the minimum size from megabytes to kilobytes + min_size=$(( $min_size * 1024 )) + + # Check if there's enough free space in a directory + is_there_enough_space () { + local free_space=$(df --output=avail "$1" | sed 1d) + test $free_space -ge $min_size + } + + if is_there_enough_space /tmp; then + local tmpdir=/tmp + elif is_there_enough_space /var; then + local tmpdir=/var + elif is_there_enough_space /; then + local tmpdir=/ + elif is_there_enough_space /home; then + local tmpdir=/home + else + ynh_die "Insufficient free space to continue..." + fi + + echo "$(sudo mktemp --directory --tmpdir="$tmpdir")" +} #================================================= # FUTURE OFFICIAL HELPERS #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 1c12d3d..bdcf354 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -56,7 +56,7 @@ ynh_abort_if_errors #================================================= ynh_print_info "Upgrading source files..." # Create a temporary directory -tmpdir="$(mktemp -d)" +tmpdir="$(ynh_smart_mktemp 6000)" # Backup the config file in the temp dir cp -a "$final_path/.htconfig.php" "$tmpdir/.htconfig.php" cp -a "$final_path/store" "$tmpdir/store"