diff --git a/setup/cli/modules/class.module.php b/setup/cli/modules/class.module.php
index b91b020eaeda7512bcd1fa439d6f91cea5047922..02c9b5f5c11b0327c8027084f69f30bb91212d00 100644
--- a/setup/cli/modules/class.module.php
+++ b/setup/cli/modules/class.module.php
@@ -205,8 +205,11 @@ class Module {
             $this->parseArgs(array_slice($argv, 1));
 
         foreach (array_keys($this->arguments) as $idx=>$name)
-            if (!isset($this->_args[$idx]))
-                $this->optionError($name . " is a required argument");
+            if (!isset($this->_args[$idx])) {
+                $info = $this->arguments[$name];
+                if (!is_array($info) || !isset($info['required']) || $info['required'])
+                    $this->optionError($name . " is a required argument");
+            }
             elseif (is_array($this->arguments[$name])
                     && isset($this->arguments[$name]['options'])
                     && !isset($this->arguments[$name]['options'][$this->_args[$idx]]))