/*
- * Copyright (c) [2019-2020] SUSE LLC
+ * Copyright (c) [2019-2023] SUSE LLC
*
* All Rights Reserved.
*
+ _("\t--csvout\t\t\tSet CSV output format.") + '\n'
+ _("\t--jsonout\t\t\tSet JSON output format.") + '\n'
+ _("\t--separator <separator>\t\tCharacter separator for CSV output format.") + '\n'
+ + _("\t--no-headers\t\t\tNo headers for CSV output format.") + '\n'
+ _("\t--config, -c <name>\t\tSet name of config to use.") + '\n'
+ _("\t--no-dbus\t\t\tOperate without DBus.") + '\n'
+ _("\t--root, -r <path>\t\tOperate on target root (works only without DBus).") + '\n'
Option("csvout", no_argument),
Option("jsonout", no_argument),
Option("separator", required_argument),
+ Option("no-headers", no_argument),
Option("config", required_argument, 'c'),
Option("no-dbus", no_argument),
Option("root", required_argument, 'r'),
_table_style = table_style_value(opts);
_abbreviate = opts.has_option("abbreviate");
_output_format = output_format_value(opts);
+ _headers = !opts.has_option("no-headers");
_separator = separator_value(opts);
_config = config_value(opts);
_root = root_value(opts);
/*
- * Copyright (c) [2019-2020] SUSE LLC
+ * Copyright (c) [2019-2023] SUSE LLC
*
* All Rights Reserved.
*
bool abbreviate() const { return _abbreviate; }
OutputFormat output_format() const { return _output_format; }
string separator() const { return _separator; }
+ bool headers() const { return _headers; }
string config() const { return _config; }
string root() const { return _root; }
Ambit ambit() const { return _ambit; }
bool _abbreviate;
OutputFormat _output_format;
string _separator;
+ bool _headers;
string _config;
string _root;
Ambit _ambit;
void
- output_csv(const vector<Column>& columns, const string& separator, ProxySnapper* snapper)
+ output_csv(const GlobalOptions& global_options, const vector<Column>& columns, const string& separator,
+ ProxySnapper* snapper)
{
- CsvFormatter formatter(separator);
+ CsvFormatter formatter(separator, global_options.headers());
for (Column column : columns)
formatter.header().push_back(toString(column));
break;
case GlobalOptions::OutputFormat::CSV:
- output_csv(columns, global_options.separator(), snapper);
+ output_csv(global_options, columns, global_options.separator(), snapper);
break;
case GlobalOptions::OutputFormat::JSON:
void
- output_csv(const vector<Column>& columns, const string& separator, ProxySnappers* snappers)
+ output_csv(const GlobalOptions& global_options, const vector<Column>& columns, const string& separator,
+ ProxySnappers* snappers)
{
- CsvFormatter formatter(separator);
+ CsvFormatter formatter(separator, global_options.headers());
for (Column column : columns)
formatter.header().push_back(toString(column));
break;
case GlobalOptions::OutputFormat::CSV:
- output_csv(columns, global_options.separator(), snappers);
+ output_csv(global_options, columns, global_options.separator(), snappers);
break;
case GlobalOptions::OutputFormat::JSON:
{
OutputOptions output_options(global_options.utc(), true, false);
- CsvFormatter formatter(global_options.separator());
+ CsvFormatter formatter(global_options.separator(), global_options.headers());
for (Column column : columns)
formatter.header().push_back(toString(column));
/*
- * Copyright (c) [2019-2020] SUSE LLC
+ * Copyright (c) [2019-2023] SUSE LLC
*
* All Rights Reserved.
*
ostream&
operator<<(ostream& stream, const CsvFormatter& csv_formatter)
{
- stream << csv_formatter.csv_line(csv_formatter._header);
+ if (csv_formatter.show_header)
+ stream << csv_formatter.csv_line(csv_formatter._header);
for (const vector<string>& row : csv_formatter._rows)
stream << csv_formatter.csv_line(row);
/*
- * Copyright (c) [2019-2020] SUSE LLC
+ * Copyright (c) [2019-2023] SUSE LLC
*
* All Rights Reserved.
*
static const string default_separator;
- CsvFormatter(const string& separator) : separator(separator) {}
+ CsvFormatter(const string& separator, bool show_header)
+ : separator(separator), show_header(show_header) {}
CsvFormatter(const CsvFormatter&) = delete;
string enclose_with_quotes(const string& value) const;
const string separator;
+ const bool show_header;
vector<string> _header;
vector<vector<string>> _rows;
<para>Specifies the character separator for CSV output format.</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><option>--no-headers</option></term>
+ <listitem>
+ <para>Suppress headers for CSV output format.</para>
+ </listitem>
+ </varlistentry>
<varlistentry>
<term><option>-c, --config <replaceable>name</replaceable></option></term>
<listitem>
BOOST_AUTO_TEST_CASE(test1)
{
- CsvFormatter formatter(";");
+ CsvFormatter formatter(";", true);
formatter.header() = { "column1", "column2", "column3" };
BOOST_CHECK_EQUAL(str(formatter), result);
}
+
+
+BOOST_AUTO_TEST_CASE(test2)
+{
+ CsvFormatter formatter(CsvFormatter::default_separator, false);
+
+ formatter.rows() = {
+ { "value1", "value2" }
+ };
+
+ string result =
+ "value1,value2\n";
+
+ BOOST_CHECK_EQUAL(str(formatter), result);
+}