@@ -28,7 +28,7 @@ include(${initfile})
2828
2929# execute command list
3030set(code 0)
31- set(runml 0 )
31+ set(func "module" )
3232string(REPLACE ":" ";" cmdsplit "${cmdlist}")
3333# empty command list, means one empty command
3434list (LENGTH cmdlist cmdcnt)
@@ -38,70 +38,26 @@ else()
3838   foreach(cmd ${cmdsplit})
3939      # call ml procedure instead of module
4040      if("${cmd}" STREQUAL "ml")
41-          set(runml 1)
42-       # if command equals to NOARG string, means call with no arg passed
43-       elseif("${cmd}" STREQUAL "NOARG")
44-          if (${runml} EQUAL 0)
45-             module()
46-          else()
47-             ml()
48-          endif()
41+          set(func "ml")
4942      else()
50-          string(REPLACE "," ";" cmdelt "${cmd}")
51-          list (LENGTH cmdelt eltcnt)
52-          if(${eltcnt} GREATER 4)
53-             list(GET cmdelt 0 elt0)
54-             list(GET cmdelt 1 elt1)
55-             list(GET cmdelt 2 elt2)
56-             list(GET cmdelt 3 elt3)
57-             list(GET cmdelt 4 elt4)
58-             if (${runml} EQUAL 0)
59-                module("${elt0}" "${elt1}" "${elt2}" "${elt3}" "${elt4}")
60-             else()
61-                ml("${elt0}" "${elt1}" "${elt2}" "${elt3}" "${elt4}")
62-             endif()
63-          elseif(${eltcnt} GREATER 3)
64-             list(GET cmdelt 0 elt0)
65-             list(GET cmdelt 1 elt1)
66-             list(GET cmdelt 2 elt2)
67-             list(GET cmdelt 3 elt3)
68-             if (${runml} EQUAL 0)
69-                module("${elt0}" "${elt1}" "${elt2}" "${elt3}")
70-             else()
71-                ml("${elt0}" "${elt1}" "${elt2}" "${elt3}")
72-             endif()
73-          elseif(${eltcnt} GREATER 2)
74-             list(GET cmdelt 0 elt0)
75-             list(GET cmdelt 1 elt1)
76-             list(GET cmdelt 2 elt2)
77-             if (${runml} EQUAL 0)
78-                module("${elt0}" "${elt1}" "${elt2}")
79-             else()
80-                ml("${elt0}" "${elt1}" "${elt2}")
81-             endif()
82-          elseif(${eltcnt} GREATER 1)
83-             list(GET cmdelt 0 elt0)
84-             list(GET cmdelt 1 elt1)
85-             if (${runml} EQUAL 0)
86-                module("${elt0}" "${elt1}")
87-             else()
88-                ml("${elt0}" "${elt1}")
89-             endif()
90-          elseif(${eltcnt} GREATER 0)
91-             list(GET cmdelt 0 elt0)
92-             if (${runml} EQUAL 0)
93-                module("${elt0}")
94-             else()
95-                ml("${elt0}")
96-             endif()
97-          else()
43+          set(quotedArgs "")
44+          # if command equals to NOARG string, means call with no arg passed
45+          if(NOT "${cmd}" STREQUAL "NOARG")
46+             string(REPLACE "," ";" cmdelt "${cmd}")
47+             list (LENGTH cmdelt eltcnt)
9848            # empty arg list, means one empty arg
99-             if (${runml } EQUAL 0)
100-                module( "")
49+             if (${eltcnt } EQUAL 0)
50+                string(APPEND quotedArgs "\"\ "")
10151            else()
102-                ml("")
52+                foreach(elt IN LISTS cmdelt)
53+                   if(NOT "${quotedArgs}" STREQUAL "")
54+                      string(APPEND quotedArgs " ")
55+                   endif()
56+                   string(APPEND quotedArgs "[===[${elt}]===]")
57+                endforeach()
10358            endif()
10459         endif()
60+          cmake_language(EVAL CODE "${func}(${quotedArgs})")
10561      endif()
10662      if(NOT module_result AND NOT ${module_result} STREQUAL "")
10763         set(code 1)
0 commit comments