aboutsummaryrefslogtreecommitdiff
path: root/src/zen/cmds/cache.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-05-15 18:53:38 +0200
committerGitHub <[email protected]>2023-05-15 18:53:38 +0200
commit3fb79e25865c3bafa9156c2db767ddc16f5019f3 (patch)
treed476cf8c3b05793642b1a029171d76dfcf9f092d /src/zen/cmds/cache.cpp
parentadded trace::DescribeSession to TraceInit (diff)
downloadarchived-zen-3fb79e25865c3bafa9156c2db767ddc16f5019f3.tar.xz
archived-zen-3fb79e25865c3bafa9156c2db767ddc16f5019f3.zip
Better defaults for zen cli (#302)
added ZenCmdBase::ResolveTargetHostSpec - this is a helper which provides better default behaviour for commands which interact with a local zen server instance. more specifically it picks a default based on which processes are actually running on the local machine this change also wires up the Scrub command along with some required HttpClient improvements
Diffstat (limited to 'src/zen/cmds/cache.cpp')
-rw-r--r--src/zen/cmds/cache.cpp36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/zen/cmds/cache.cpp b/src/zen/cmds/cache.cpp
index 0de3f8bc3..15c24f9ee 100644
--- a/src/zen/cmds/cache.cpp
+++ b/src/zen/cmds/cache.cpp
@@ -17,7 +17,7 @@ ZEN_THIRD_PARTY_INCLUDES_END
DropCommand::DropCommand()
{
m_Options.add_options()("h,help", "Print help");
- m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value("http://localhost:1337"), "<hosturl>");
+ m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value(""), "<hosturl>");
m_Options.add_option("", "n", "namespace", "Namespace name", cxxopts::value(m_NamespaceName), "<namespacename>");
m_Options.add_option("", "b", "bucket", "Bucket name", cxxopts::value(m_BucketName), "<bucketname>");
m_Options.parse_positional({"namespace", "bucket"});
@@ -35,6 +35,13 @@ DropCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
return 0;
}
+ m_HostName = ResolveTargetHostSpec(m_HostName);
+
+ if (m_HostName.empty())
+ {
+ throw zen::OptionParseException("unable to resolve server specification");
+ }
+
if (m_NamespaceName.empty())
{
throw zen::OptionParseException("Drop command requires a namespace");
@@ -76,7 +83,7 @@ DropCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
CacheInfoCommand::CacheInfoCommand()
{
m_Options.add_options()("h,help", "Print help");
- m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value("http://localhost:1337"), "<hosturl>");
+ m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value(""), "<hosturl>");
m_Options.add_option("", "n", "namespace", "Namespace name", cxxopts::value(m_NamespaceName), "<namespacename>");
m_Options.add_option("", "b", "bucket", "Bucket name", cxxopts::value(m_BucketName), "<bucketname>");
m_Options.parse_positional({"namespace", "bucket"});
@@ -94,6 +101,13 @@ CacheInfoCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
return 0;
}
+ m_HostName = ResolveTargetHostSpec(m_HostName);
+
+ if (m_HostName.empty())
+ {
+ throw zen::OptionParseException("unable to resolve server specification");
+ }
+
cpr::Session Session;
Session.SetHeader(cpr::Header{{"Accept", "application/json"}});
if (m_HostName.empty())
@@ -136,7 +150,7 @@ CacheInfoCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
CacheStatsCommand::CacheStatsCommand()
{
m_Options.add_options()("h,help", "Print help");
- m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value("http://localhost:1337"), "<hosturl>");
+ m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value(""), "<hosturl>");
}
CacheStatsCommand::~CacheStatsCommand() = default;
@@ -151,6 +165,13 @@ CacheStatsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv
return 0;
}
+ m_HostName = ResolveTargetHostSpec(m_HostName);
+
+ if (m_HostName.empty())
+ {
+ throw zen::OptionParseException("unable to resolve server specification");
+ }
+
cpr::Session Session;
Session.SetUrl({fmt::format("{}/stats/z$", m_HostName)});
Session.SetHeader(cpr::Header{{"Accept", "application/json"}});
@@ -179,7 +200,7 @@ CacheStatsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv
CacheDetailsCommand::CacheDetailsCommand()
{
m_Options.add_options()("h,help", "Print help");
- m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value("http://localhost:1337"), "<hosturl>");
+ m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value(""), "<hosturl>");
m_Options.add_option("", "c", "csv", "Info on csv format", cxxopts::value(m_CSV), "<csv>");
m_Options.add_option("", "d", "details", "Get detailed information about records", cxxopts::value(m_Details), "<details>");
m_Options.add_option("",
@@ -205,6 +226,13 @@ CacheDetailsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** ar
return 0;
}
+ m_HostName = ResolveTargetHostSpec(m_HostName);
+
+ if (m_HostName.empty())
+ {
+ throw zen::OptionParseException("unable to resolve server specification");
+ }
+
cpr::Session Session;
cpr::Parameters Parameters;
if (m_Details)