Browse Source

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.
Craig Scott 1 year ago
parent
commit
7e80415e79
1 changed files with 28 additions and 45 deletions
  1. 28 45
      Modules/ExternalProject/shared_internal_commands.cmake

+ 28 - 45
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}")
+    set(cmd
+      ${Subversion_SVN_EXECUTABLE}
+      up
+      ${_EP_SVN_REVISION}
+    )
     # 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")
+    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()
-    set(svn_user_pw_args "")
     if(DEFINED _EP_SVN_USERNAME)
-      set(svn_user_pw_args ${svn_user_pw_args} "--username=${svn_username}")
+      list(APPEND cmd "--username=${_EP_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)
+      list(APPEND cmd "--password=${_EP_SVN_PASSWORD}")
     endif()
-    set(cmd
-      ${Subversion_SVN_EXECUTABLE}
-      up
-      ${svn_revision}
-      ${svn_interactive_args}
-      ${svn_trust_cert_args}
-      ${svn_user_pw_args}
-    )
     set(always 1)
 
     if(arg_SCRIPT_FILE)