diff --git a/helpers/utils b/helpers/utils index 60cbedb5c..f59a203fe 100644 --- a/helpers/utils +++ b/helpers/utils @@ -63,10 +63,11 @@ ynh_abort_if_errors() { # Download, check integrity, uncompress and patch the source from app.src # -# usage: ynh_setup_source --dest_dir=dest_dir [--source_id=source_id] [--keep="file1 file2"] +# usage: ynh_setup_source --dest_dir=dest_dir [--source_id=source_id] [--keep="file1 file2"] [--replace] # | arg: -d, --dest_dir= - Directory where to setup sources # | arg: -s, --source_id= - Name of the source, defaults to `app` # | arg: -k, --keep= - Space-separated list of files/folders that will be backup/restored in $dest_dir, such as a config file you don't want to overwrite. For example 'conf.json secrets.json logs/' +# | arg: -r, --replace= - Remove previous sources before installing new sources # # This helper will read `conf/${source_id}.src`, download and install the sources. # @@ -102,14 +103,16 @@ ynh_abort_if_errors() { ynh_setup_source() { # Declare an array to define the options of this helper. local legacy_args=dsk - local -A args_array=([d]=dest_dir= [s]=source_id= [k]=keep=) + local -A args_array=([d]=dest_dir= [s]=source_id= [k]=keep= [r]=replace=) local dest_dir local source_id local keep + local replace # Manage arguments with getopts ynh_handle_getopts_args "$@" source_id="${source_id:-app}" keep="${keep:-}" + replace="${replace:-0}" local src_file_path="$YNH_APP_BASEDIR/conf/${source_id}.src" @@ -172,6 +175,10 @@ ynh_setup_source() { done fi + if [ "$replace" -eq 1 ]; then + ynh_secure_remove --file="$dest_dir" + fi + # Extract source into the app dir mkdir --parents "$dest_dir"