From 7e80415e797a6da1ca416ea2dd3fb5f4e63736dd Mon Sep 17 00:00:00 2001 From: Craig Scott Date: Sat, 20 Jul 2024 12:19:17 +1000 Subject: [PATCH] ExternalProject: Reduce number of local variables for svn logic We still keep the svn_trust_cert and uses_terminal variables because they improve the readability of if() conditions. --- .../shared_internal_commands.cmake | 77 ++++++++----------- 1 file changed, 30 insertions(+), 47 deletions(-) diff --git a/Modules/ExternalProject/shared_internal_commands.cmake b/Modules/ExternalProject/shared_internal_commands.cmake index acd97f19c8..ae3c0cd8a9 100644 --- a/Modules/ExternalProject/shared_internal_commands.cmake +++ b/Modules/ExternalProject/shared_internal_commands.cmake @@ -898,41 +898,33 @@ function(_ep_add_download_command name) message(FATAL_ERROR "error: could not find svn for checkout of ${name}") endif() - set(svn_revision "${_EP_SVN_REVISION}") - set(svn_username "${_EP_SVN_USERNAME}") - set(svn_password "${_EP_SVN_PASSWORD}") set(svn_trust_cert "${_EP_SVN_TRUST_CERT}") set(uses_terminal "${_EP_USES_TERMINAL_DOWNLOAD}") - # The --trust-server-cert option requires --non-interactive - if(uses_terminal AND NOT svn_trust_cert) - set(svn_interactive_args "") - else() - set(svn_interactive_args "--non-interactive") - endif() get_filename_component(src_name "${source_dir}" NAME) get_filename_component(work_dir "${source_dir}" PATH) set(comment "Performing download step (SVN checkout) for '${name}'") - set(svn_user_pw_args "") - if(DEFINED _EP_SVN_USERNAME) - set(svn_user_pw_args ${svn_user_pw_args} "--username=${svn_username}") - endif() - if(DEFINED _EP_SVN_PASSWORD) - set(svn_user_pw_args ${svn_user_pw_args} "--password=${svn_password}") - endif() - if(svn_trust_cert) - set(svn_trust_cert_args --trust-server-cert) - endif() set(cmd ${Subversion_SVN_EXECUTABLE} co ${svn_repository} - ${svn_revision} - ${svn_interactive_args} - ${svn_trust_cert_args} - ${svn_user_pw_args} - ${src_name} + ${_EP_SVN_REVISION} ) + # The --trust-server-cert option requires --non-interactive + if(svn_trust_cert OR NOT uses_terminal) + list(APPEND cmd "--non-interactive") + endif() + if(svn_trust_cert) + list(APPEND cmd "--trust-server-cert") + endif() + if(DEFINED _EP_SVN_USERNAME) + list(APPEND cmd "--username=${_EP_SVN_USERNAME}") + endif() + if(DEFINED _EP_SVN_PASSWORD) + list(APPEND cmd "--password=${_EP_SVN_PASSWORD}") + endif() + list(APPEND cmd ${src_name}) + if(arg_SCRIPT_FILE) _ep_add_script_commands( step_script_contents @@ -1483,35 +1475,26 @@ function(_ep_add_update_command name) endif() set(work_dir ${source_dir}) set(comment "Performing update step (SVN update) for '${name}'") - set(svn_revision "${_EP_SVN_REVISION}") - set(svn_username "${_EP_SVN_USERNAME}") - set(svn_password "${_EP_SVN_PASSWORD}") set(svn_trust_cert "${_EP_SVN_TRUST_CERT}") set(uses_terminal "${_EP_USES_TERMINAL_UPDATE}") - # The --trust-server-cert option requires --non-interactive - if(uses_terminal AND NOT svn_trust_cert) - set(svn_interactive_args "") - else() - set(svn_interactive_args "--non-interactive") - endif() - set(svn_user_pw_args "") - if(DEFINED _EP_SVN_USERNAME) - set(svn_user_pw_args ${svn_user_pw_args} "--username=${svn_username}") - endif() - if(DEFINED _EP_SVN_PASSWORD) - set(svn_user_pw_args ${svn_user_pw_args} "--password=${svn_password}") - endif() - if(svn_trust_cert) - set(svn_trust_cert_args --trust-server-cert) - endif() set(cmd ${Subversion_SVN_EXECUTABLE} up - ${svn_revision} - ${svn_interactive_args} - ${svn_trust_cert_args} - ${svn_user_pw_args} + ${_EP_SVN_REVISION} ) + # The --trust-server-cert option requires --non-interactive + if(svn_trust_cert OR NOT uses_terminal) + list(APPEND cmd "--non-interactive") + endif() + if(svn_trust_cert) + list(APPEND cmd --trust-server-cert) + endif() + if(DEFINED _EP_SVN_USERNAME) + list(APPEND cmd "--username=${_EP_SVN_USERNAME}") + endif() + if(DEFINED _EP_SVN_PASSWORD) + list(APPEND cmd "--password=${_EP_SVN_PASSWORD}") + endif() set(always 1) if(arg_SCRIPT_FILE)