setOptionsDescription() function added

This commit is contained in:
Dmitry Rubashkin 2019-08-22 17:03:37 +03:00
parent bd5dabb15c
commit 095124dcba
3 changed files with 41 additions and 26 deletions

View File

@ -67,6 +67,7 @@
#include <Common/Config/configReadClient.h>
#include <Storages/ColumnsDescription.h>
#include <common/argsToConfig.h>
#include <Common/SetOptionsDescription.h>
#if USE_READLINE
#include "Suggest.h"
@ -1641,23 +1642,16 @@ public:
}
stdin_is_not_tty = !isatty(STDIN_FILENO);
namespace po = boost::program_options;
unsigned line_length = po::options_description::m_default_line_length;
unsigned min_description_length = line_length / 2;
if (!stdin_is_not_tty)
{
if (ioctl(STDIN_FILENO, TIOCGWINSZ, &terminal_size))
throwFromErrno("Cannot obtain terminal window size (ioctl TIOCGWINSZ)", ErrorCodes::SYSTEM_ERROR);
line_length = std::max(
static_cast<unsigned>(strlen("--http_native_compression_disable_checksumming_on_decompress ")),
static_cast<unsigned>(terminal_size.ws_col));
min_description_length = std::min(min_description_length, line_length - 2);
}
namespace po = boost::program_options;
/// Main commandline options related to client functionality and all parameters from Settings.
po::options_description main_description("Main options", line_length, min_description_length);
po::options_description main_description = setOptionsDescription("Main options");
main_description.add_options()
("help", "produce help message")
("config-file,C", po::value<std::string>(), "config-file path")

View File

@ -28,6 +28,7 @@
#include <Core/Settings.h>
#include <Common/Exception.h>
#include <Common/InterruptListener.h>
#include <Common/SetOptionsDescription.h>
#include "TestStopConditions.h"
#include "TestStats.h"
@ -325,22 +326,7 @@ try
using namespace DB;
using po::value;
unsigned line_length = po::options_description::m_default_line_length;
unsigned min_description_length = line_length / 2;
winsize terminal_size {};
if (isatty(STDIN_FILENO))
{
if (ioctl(STDIN_FILENO, TIOCGWINSZ, &terminal_size))
throwFromErrno("Cannot obtain terminal window size (ioctl TIOCGWINSZ)", ErrorCodes::SYSTEM_ERROR);
line_length = std::max(
static_cast<unsigned>(strlen("--http_native_compression_disable_checksumming_on_decompress ")),
static_cast<unsigned>(terminal_size.ws_col));
min_description_length = std::min(min_description_length, line_length - 2);
}
po::options_description desc("Allowed options", line_length, min_description_length);
po::options_description desc = setOptionsDescription("Allowed options");
desc.add_options()
("help", "produce help message")
("lite", "use lite version of output")

View File

@ -0,0 +1,35 @@
#include <unistd.h>
#include <sys/ioctl.h>
#include <Common/Exception.h>
#include <boost/program_options.hpp>
namespace po = boost::program_options;
namespace DB::ErrorCodes
{
extern const int SYSTEM_ERROR;
}
static po::options_description setOptionsDescription(const std::string & caption)
{
unsigned line_length = po::options_description::m_default_line_length;
unsigned min_description_length = line_length / 2;
if (isatty(STDIN_FILENO))
{
winsize terminal_size {};
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 po::options_description(caption, line_length, min_description_length);
}