diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/zen/cmds/projectstore.cpp | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/src/zen/cmds/projectstore.cpp b/src/zen/cmds/projectstore.cpp index c30383d1b..70670150a 100644 --- a/src/zen/cmds/projectstore.cpp +++ b/src/zen/cmds/projectstore.cpp @@ -123,24 +123,33 @@ ProjectInfoCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg throw zen::OptionParseException("unable to resolve server specification"); } - cpr::Session Session; - Session.SetHeader(cpr::Header{{"Accept", "application/json"}}); + if (!m_OplogName.empty() && m_ProjectName.empty()) + { + throw zen::OptionParseException("an oplog can't be specified without also specifying a project"); + } + + std::string Url; + if (m_ProjectName.empty()) { - ZEN_CONSOLE("Info from '{}'", m_HostName); - Session.SetUrl({fmt::format("{}/prj", m_HostName)}); + Url = fmt::format("{}/prj", m_HostName); + ZEN_CONSOLE("Info from '{}'", Url); } else if (m_OplogName.empty()) { - ZEN_CONSOLE("Info on project '{}' from '{}'", m_ProjectName, m_HostName); - Session.SetUrl({fmt::format("{}/prj/{}", m_HostName, m_ProjectName)}); + Url = fmt::format("{}/prj/{}", m_HostName, m_ProjectName); + ZEN_CONSOLE("Info on project '{}' from '{}'", m_ProjectName, Url); } else { - ZEN_CONSOLE("Info on oplog '{}/{}' from '{}'", m_ProjectName, m_OplogName, m_HostName); - Session.SetUrl({fmt::format("{}/prj/{}/oplog/{}", m_HostName, m_ProjectName, m_OplogName)}); + Url = fmt::format("{}/prj/{}/oplog/{}", m_HostName, m_ProjectName, m_OplogName); + ZEN_CONSOLE("Info on oplog '{}/{}' from '{}'", m_ProjectName, m_OplogName, Url); } + cpr::Session Session; + Session.SetHeader(cpr::Header{{"Accept", "application/json"}}); + Session.SetUrl(Url); + cpr::Response Result = Session.Get(); if (zen::IsHttpSuccessCode(Result.status_code)) @@ -391,14 +400,12 @@ ExportOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg if (m_ProjectName.empty()) { - ZEN_ERROR("Project name must be given"); - return 1; + throw zen::OptionParseException("project name must be specified"); } if (m_OplogName.empty()) { - ZEN_ERROR("Oplog name must be given"); - return 1; + throw zen::OptionParseException("oplog identifier must be specified"); } size_t TargetCount = 0; @@ -407,9 +414,14 @@ ExportOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg TargetCount += m_FileDirectoryPath.empty() ? 0 : 1; if (TargetCount != 1) { - ZEN_ERROR("Provide one target only"); - ZEN_CONSOLE("{}", m_Options.help({""}).c_str()); - return 1; + if (TargetCount == 0) + { + throw zen::OptionParseException("an export target must be specified"); + } + else + { + throw zen::OptionParseException("a single export target must be specified"); + } } cpr::Session Session; @@ -519,7 +531,7 @@ ExportOplogCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg { Writer.BeginObject("file"sv); { - Writer.AddString("file"sv, m_FileDirectoryPath); + Writer.AddString("path"sv, m_FileDirectoryPath); Writer.AddString("name"sv, m_FileName); if (m_DisableBlocks) { |