Fix after review

This commit is contained in:
dimarub2000 2019-08-23 16:19:12 +03:00
parent e9d813bff7
commit a367f94923
9 changed files with 52 additions and 40 deletions

View File

@ -32,6 +32,7 @@
#include <Client/Connection.h>
#include <Common/InterruptListener.h>
#include <Common/Config/configReadClient.h>
#include <Common/TerminalDisplaying.h>
/** A tool for evaluating ClickHouse performance.
@ -439,7 +440,7 @@ int mainEntryClickHouseBenchmark(int argc, char ** argv)
{
using boost::program_options::value;
boost::program_options::options_description desc("Allowed options");
boost::program_options::options_description desc = setOptionsDescription("Allowed options", getTerminalWidth());
desc.add_options()
("help", "produce help message")
("concurrency,c", value<unsigned>()->default_value(1), "number of parallel queries")

View File

@ -67,7 +67,7 @@
#include <Common/Config/configReadClient.h>
#include <Storages/ColumnsDescription.h>
#include <common/argsToConfig.h>
#include <Common/SetOptionsDescription.h>
#include <Common/TerminalDisplaying.h>
#if USE_READLINE
#include "Suggest.h"
@ -131,7 +131,7 @@ private:
bool print_time_to_stderr = false; /// Output execution time to stderr in batch mode.
bool stdin_is_not_tty = false; /// stdin is not a terminal.
winsize terminal_size {}; /// Terminal size is needed to render progress bar.
unsigned short int terminal_width; /// Terminal width is needed to render progress bar.
std::unique_ptr<Connection> connection; /// Connection to DB.
String query_id; /// Current query_id.
@ -1466,7 +1466,7 @@ private:
if (show_progress_bar)
{
ssize_t width_of_progress_bar = static_cast<ssize_t>(terminal_size.ws_col) - written_progress_chars - strlen(" 99%");
ssize_t width_of_progress_bar = static_cast<ssize_t>(terminal_width) - written_progress_chars - strlen(" 99%");
if (width_of_progress_bar > 0)
{
std::string bar = UnicodeBar::render(UnicodeBar::getWidth(progress.read_rows, 0, total_rows_corrected, width_of_progress_bar));
@ -1642,16 +1642,14 @@ public:
}
stdin_is_not_tty = !isatty(STDIN_FILENO);
if (!stdin_is_not_tty)
{
if (ioctl(STDIN_FILENO, TIOCGWINSZ, &terminal_size))
throwFromErrno("Cannot obtain terminal window size (ioctl TIOCGWINSZ)", ErrorCodes::SYSTEM_ERROR);
}
terminal_width = getTerminalWidth();
namespace po = boost::program_options;
/// Main commandline options related to client functionality and all parameters from Settings.
po::options_description main_description = setOptionsDescription("Main options");
po::options_description main_description = setOptionsDescription("Main options", terminal_width);
main_description.add_options()
("help", "produce help message")
("config-file,C", po::value<std::string>(), "config-file path")
@ -1697,7 +1695,7 @@ public:
context.getSettingsRef().addProgramOptions(main_description);
/// Commandline options related to external tables.
po::options_description external_description("External tables options");
po::options_description external_description = setOptionsDescription("External tables options", terminal_width);
external_description.add_options()
("file", po::value<std::string>(), "data file or - for stdin")
("name", po::value<std::string>()->default_value("_data"), "name of the table")

View File

@ -12,8 +12,9 @@
#include <IO/copyData.h>
#include <Parsers/parseQuery.h>
#include <Parsers/ExpressionElementParsers.h>
#include <Compression/CompressionFactory.h>
#include <Common/TerminalDisplaying.h>
namespace DB
{
@ -59,7 +60,7 @@ void checkAndWriteHeader(DB::ReadBuffer & in, DB::WriteBuffer & out)
int mainEntryClickHouseCompressor(int argc, char ** argv)
{
boost::program_options::options_description desc("Allowed options");
boost::program_options::options_description desc = setOptionsDescription("Allowed options", getTerminalWidth());
desc.add_options()
("help,h", "produce help message")
("decompress,d", "decompress")

View File

@ -6,13 +6,13 @@
#include <Parsers/ParserQuery.h>
#include <Parsers/parseQuery.h>
#include <Parsers/formatAST.h>
#include <Common/TerminalDisplaying.h>
int mainEntryClickHouseFormat(int argc, char ** argv)
{
using namespace DB;
boost::program_options::options_description desc("Allowed options");
boost::program_options::options_description desc = setOptionsDescription("Allowed options", getTerminalWidth());
desc.add_options()
("help,h", "produce help message")
("hilite", "add syntax highlight with ANSI terminal escape sequences")

View File

@ -35,6 +35,7 @@
#include <boost/program_options/options_description.hpp>
#include <boost/program_options.hpp>
#include <common/argsToConfig.h>
#include <Common/TerminalDisplaying.h>
namespace DB
@ -409,17 +410,7 @@ void LocalServer::init(int argc, char ** argv)
/// Don't parse options with Poco library, we prefer neat boost::program_options
stopOptionsProcessing();
unsigned line_length = po::options_description::m_default_line_length;
unsigned min_description_length = line_length / 2;
if (isatty(STDIN_FILENO))
{
winsize terminal_size{};
ioctl(0, TIOCGWINSZ, &terminal_size);
line_length = std::max(3U, static_cast<unsigned>(terminal_size.ws_col));
min_description_length = std::min(min_description_length, line_length - 2);
}
po::options_description description("Main options", line_length, min_description_length);
po::options_description description = setOptionsDescription("Main options", getTerminalWidth());
description.add_options()
("help", "produce help message")
("config-file,c", po::value<std::string>(), "config-file path")

View File

@ -36,6 +36,7 @@
#include <boost/program_options.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/container/flat_map.hpp>
#include <Common/TerminalDisplaying.h>
static const char * documantation = R"(
@ -948,7 +949,7 @@ try
using namespace DB;
namespace po = boost::program_options;
po::options_description description("Options");
po::options_description description = setOptionsDescription("Options", getTerminalWidth());
description.add_options()
("help", "produce help message")
("structure,S", po::value<std::string>(), "structure of the initial table (list of column and type names)")

View File

@ -28,7 +28,7 @@
#include <Core/Settings.h>
#include <Common/Exception.h>
#include <Common/InterruptListener.h>
#include <Common/SetOptionsDescription.h>
#include <Common/TerminalDisplaying.h>
#include "TestStopConditions.h"
#include "TestStats.h"
@ -325,7 +325,7 @@ try
using po::value;
using Strings = DB::Strings;
po::options_description desc = setOptionsDescription("Allowed options");
po::options_description desc = setOptionsDescription("Allowed options", getTerminalWidth());
desc.add_options()
("help", "produce help message")
("lite", "use lite version of output")

View File

@ -1,8 +1,7 @@
#include <unistd.h>
#include <sys/ioctl.h>
#include <Common/Exception.h>
#include <boost/program_options.hpp>
#include <Common/TerminalDisplaying.h>
namespace po = boost::program_options;
@ -12,11 +11,8 @@ namespace DB::ErrorCodes
extern const int SYSTEM_ERROR;
}
static po::options_description setOptionsDescription(const std::string & caption)
unsigned short int getTerminalWidth()
{
unsigned line_length = po::options_description::m_default_line_length;
unsigned min_description_length = line_length / 2;
if (isatty(STDIN_FILENO))
{
winsize terminal_size {};
@ -24,12 +20,19 @@ static po::options_description setOptionsDescription(const std::string & caption
if (ioctl(STDIN_FILENO, TIOCGWINSZ, &terminal_size))
DB::throwFromErrno("Cannot obtain terminal window size (ioctl TIOCGWINSZ)", DB::ErrorCodes::SYSTEM_ERROR);
std::string longest_option_desc = "--http_native_compression_disable_checksumming_on_decompress";
line_length = std::max(static_cast<unsigned short>(longest_option_desc.size()), terminal_size.ws_col);
min_description_length = std::min(min_description_length, line_length - 2);
return terminal_size.ws_col;
}
return 0;
}
po::options_description setOptionsDescription(const std::string & caption, unsigned short terminal_width)
{
unsigned line_length = po::options_description::m_default_line_length;
unsigned min_description_length = line_length / 2;
std::string longest_option_desc = "--http_native_compression_disable_checksumming_on_decompress";
line_length = std::max(static_cast<unsigned short>(longest_option_desc.size()), terminal_width);
min_description_length = std::min(min_description_length, line_length - 2);
return po::options_description(caption, line_length, min_description_length);
}
}

View File

@ -0,0 +1,17 @@
#pragma once
#include <iostream>
#include <string>
#include <boost/program_options.hpp>
namespace po = boost::program_options;
unsigned short int getTerminalWidth();
/** Sets a name and an appropriate size for option displaying
* when program is called with option --help
* */
po::options_description setOptionsDescription(const std::string & caption, unsigned short terminal_width);