# | arg: -s, --size= - Amount of SWAP to add in Mb.
ynh_add_swap (){
# Declare an array to define the options of this helper.
declare -Ar args_array=([s]=size=)
local size
# Manage arguments with getopts
ynh_handle_getopts_args "$@"
localswap_max_size=$(($size*1024))
localfree_space=$(df --output=avail / | sed 1d)
# Because we don't want to fill the disk with a swap file, divide by 2 the available space.
localusable_space=$(($free_space/2))
SD_CARD_CAN_SWAP=${SD_CARD_CAN_SWAP:-0}
# Swap on SD card only if it's is specified
if ynh_is_main_device_a_sd_card &&["$SD_CARD_CAN_SWAP"=="0"]
then
ynh_print_warn --message="The main mountpoint of your system '/' is on an SD card, swap will not be added to prevent some damage of this one, but that can cause troubles for the app $app. If you still want activate the swap, you can relaunch the command preceded by 'SD_CARD_CAN_SWAP=1'"
return
fi
# Compare the available space with the size of the swap.
# And set a acceptable size from the request
if[$usable_space -ge $swap_max_size]
then
localswap_size=$swap_max_size
elif[$usable_space -ge $(($swap_max_size/2))]
then
localswap_size=$(($swap_max_size/2))
elif[$usable_space -ge $(($swap_max_size/3))]
then
localswap_size=$(($swap_max_size/3))
elif[$usable_space -ge $(($swap_max_size/4))]
then
localswap_size=$(($swap_max_size/4))
else
echo"Not enough space left for a swap file" >&2
localswap_size=0
fi
# If there's enough space for a swap, and no existing swap here
if[$swap_size -ne 0]&&[ ! -e /swap_$app]
then
# Preallocate space for the swap file, fallocate may sometime not be used, use dd instead in this case