]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: extract add_npm_options()
authorKefu Chai <kchai@redhat.com>
Tue, 6 Oct 2020 06:14:07 +0000 (14:14 +0800)
committerKefu Chai <kchai@redhat.com>
Tue, 6 Oct 2020 07:01:11 +0000 (15:01 +0800)
for better readability

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/pybind/mgr/dashboard/CMakeLists.txt

index adbc6092f02316f3d65dc7d6699900ff1e40f737..cb692cba752f55cfa4e88ca9cd2adef636d08044 100644 (file)
@@ -17,6 +17,25 @@ function(add_npm_command)
     COMMENT ${NC_COMMENT})
 endfunction(add_npm_command)
 
+function(add_npm_options)
+  set(commands)
+  cmake_parse_arguments(NC "" "NODEENV_DIR;TARGET" "OPTION" ${ARGN})
+  foreach(opt ${NC_OPTION})
+    string(REPLACE "=" ";" opt ${opt})
+    list(GET opt 0 key)
+    list(GET opt 1 value)
+    list(APPEND commands
+      COMMAND
+      . ${NC_NODEENV_DIR}/bin/activate &&
+      npm config set ${key} ${value} --userconfig ${NC_NODEENV_DIR}/.npmrc &&
+      deactivate)
+  endforeach()
+  add_custom_target(${NC_TARGET}
+    ${commands}
+    DEPENDS ${NC_NODEENV_DIR}/bin/npm
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+endfunction(add_npm_options)
+
 if(WITH_SYSTEM_NPM)
   set(mgr-dashboard-nodeenv-dir )
   set(nodeenv "")
@@ -28,7 +47,6 @@ else(WITH_SYSTEM_NPM)
   set(mgr-dashboard-nodeenv-dir ${CMAKE_CURRENT_BINARY_DIR}/node-env)
   set(nodeenv NODEENV)
   set(mgr-dashboard-userconfig --userconfig ${mgr-dashboard-nodeenv-dir}/.npmrc)
-  set(virt-activate . ${mgr-dashboard-nodeenv-dir}/bin/activate)
   if(DEFINED ENV{NODE_MIRROR})
     set(node_mirror_opt "--mirror=$ENV{NODE_MIRROR}")
   endif()
@@ -40,13 +58,12 @@ else(WITH_SYSTEM_NPM)
     COMMAND mkdir ${mgr-dashboard-nodeenv-dir}/.npm
     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
     COMMENT "dashboard nodeenv is being installed"
-  )
-  add_custom_target(mgr-dashboard-nodeenv
-    COMMAND ${virt-activate} && npm config set python ${MGR_PYTHON_EXECUTABLE} ${mgr-dashboard-userconfig} && deactivate
-    COMMAND ${virt-activate} && npm config set cache ${mgr-dashboard-nodeenv-dir}/.npm ${mgr-dashboard-userconfig} && deactivate
-    DEPENDS ${mgr-dashboard-nodeenv-dir}/bin/npm
-    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-  )
+    )
+  add_npm_options(
+    NODEENV_DIR ${mgr-dashboard-nodeenv-dir}
+    TARGET mgr-dashboard-nodeenv
+    OPTION python=${MGR_PYTHON_EXECUTABLE}
+    OPTION cache=${mgr-dashboard-nodeenv-dir}/.npm)
   add_custom_target(mgr-dashboard-frontend-deps
     DEPENDS frontend/node_modules mgr-dashboard-nodeenv
     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend