/** * Writes all or specific groups of settings as a JSON file and * returns a message with some information about that. * * @param IReport $report report to take results (and settings) from * * @return string messages for CLI output */ public function format(IReport $report) { $output = ''; $params = $this->getParameters(); $file = $params->get('location', 'environaut-config.json'); $pretty = $params->get('pretty', true); $nested = $params->get('nested', true); $groups = $params->get('groups'); if (is_writable($file)) { $output .= '<comment>Overwriting</comment> '; } else { $output .= 'Writing '; } if (empty($groups)) { $output .= 'all groups '; } else { $output .= 'group(s) "' . implode(', ', $groups) . '" '; } $output .= 'to file "<comment>' . $file . '</comment>"...'; $flags = JSON_FORCE_OBJECT; if ($pretty && version_compare(PHP_VERSION, '5.4.0') >= 0) { $flags |= JSON_PRETTY_PRINT; } $all_settings = $report->getSettingsAsArray($groups); $grouped_settings = array(); foreach ($all_settings as $setting) { if ($nested === true) { $grouped_settings[$setting['group']][$setting['name']] = $setting['value']; } else { $grouped_settings[$setting['name']] = $setting['value']; } } $content = json_encode($grouped_settings, $flags); $ok = file_put_contents($file, $content, LOCK_EX); if ($ok !== false) { $output .= '<info>ok</info>.'; } else { $output .= '<error>FAILED</error>.'; } return $output; }
/** * Writes all or specific groups of settings as a PHP file and * returns a message with some information about that. * * @param IReport $report report to take results (and settings) from * * @return string messages for CLI output */ public function format(IReport $report) { $output = ''; $params = $this->getParameters(); $file = $params->get('location', 'environaut-config.php'); $groups = $params->get('groups'); $nested = $params->get('nested', true); if (is_writable($file)) { $output .= '<comment>Overwriting</comment> '; } else { $output .= 'Writing '; } if (empty($groups)) { $output .= 'all groups '; } else { $output .= 'group(s) "' . implode(', ', $groups) . '" '; } $output .= 'to file "<comment>' . $file . '</comment>"...'; $default_template = <<<EOT <?php return %settings\$s; EOT; $template = $params->get('template', $default_template); $all_settings = $report->getSettingsAsArray($groups); $grouped_settings = array(); foreach ($all_settings as $setting) { if ($nested === true) { $grouped_settings[$setting['group']][$setting['name']] = $setting['value']; } else { $grouped_settings[$setting['name']] = $setting['value']; } } $content = XmlSettingsWriter::vksprintf($template, array('settings' => var_export($grouped_settings, true))); $ok = file_put_contents($file, $content, LOCK_EX); if ($ok !== false) { $output .= '<info>ok</info>.'; } else { $output .= '<error>FAILED</error>.'; } return $output; }
/** * Writes all or specific groups of settings as a shell file and * returns a message with some information about that. * * @param IReport $report report to take results (and settings) from * * @return string messages for CLI output */ public function format(IReport $report) { $output = ''; $params = $this->getParameters(); $file = $params->get('location', 'environaut-config.sh'); $groups = $params->get('groups'); if (is_writable($file)) { $output .= '<comment>Overwriting</comment> '; } else { $output .= 'Writing '; } if (empty($groups)) { $output .= 'all groups '; } else { $output .= 'group(s) "' . implode(', ', $groups) . '" '; } $output .= 'to file "<comment>' . $file . '</comment>"...'; $default_template = <<<EOT %settings\$s EOT; $template = $params->get('template', $default_template); $all_settings = $report->getSettingsAsArray($groups); $grouped_settings = array(); $content = ''; foreach ($all_settings as $setting) { $name = $this->makeShellVariableName($setting['name'], $setting['group']); $value = $this->mapValue($setting['value']); $content .= $name . "='" . $value . "'\n"; } $content = self::vksprintf($template, array('settings' => $content)); $ok = file_put_contents($file, $content, LOCK_EX); if ($ok !== false) { $output .= '<info>ok</info>.'; } else { $output .= '<error>FAILED</error>.'; } return $output; }
/** * Writes all or specific groups of settings as a plain text file and * returns a message with some information about that. * * @param IReport $report report to take results (and settings) from * * @return string messages for CLI output */ public function format(IReport $report) { $params = $this->getParameters(); $file = $params->get('location', 'environaut-config'); $groups = $params->get('groups'); $output = $this->startOutput($file, $groups); $embed_group_path = $params->get('embed_group_path', true); $filter_settings = $params->get('filter_settings', array()); $template = $params->get('template', false); if (!$template) { throw new RuntimeException(sprintf("The %s does not support a default template. Please define one.", __CLASS__)); } $template_settings = array(); foreach ($report->getSettingsAsArray($groups) as $setting) { if ($embed_group_path === true) { $setting_key = $setting['group'] . '.' . $setting['name']; } else { $setting_key = $setting['name']; } $template_settings[$setting_key] = $setting['value']; } $content = self::vksprintf($template, $template_settings); return $this->endOutput(file_put_contents($file, $content, LOCK_EX)); }