public function createModule($input)
{
$this->generateHashForNullHashModules();
$this->module_name = $input['name'];
$this->module_vendor = $input['vendor'];
$module_alias = $this->generateModuleAlias($this->module_name);
$this->temp_dir = temp_path() . "/{$module_alias}/{$module_alias}";
$this->getSelectedForms($input);
// Copy the template to temporary folder
$this->copyTemplate();
// Generate the inner portion of the form
$this->generateInnerForm();
// Adjust the template files, based on the input
$this->adjustFiles($input);
$requires = $this->getRequiredModulesInfo($input);
// Save the module configuration as json
$this->saveModuleConfig($input, $module_alias, $requires);
// Finally compress the temporary folder
$zip_file = $this->generateZip($module_alias);
return $zip_file;
}