82 if (arguments.
peek(
"memory"))
84 else if (arguments.
peek(
"server"))
87 else if (arguments.
peek(
"sftp"))
89 const auto port = arguments.
next_option<
unsigned>(
"port",
"p", 22);
90 const auto verbosity = arguments.
next_option<
int>(
"verbosity",
"v", 0);
91 const std::string_view user = arguments.
get_next();
92 const std::string_view host = arguments.
get_next();
93 const std::string_view path = arguments.
get_next();
98 logger.
log(
"creating ssh session");
99 ssh_session.emplace(user.data(), host.data(), port, verbosity);
101 logger.
log(
"initializing sftp");
102 sftp.emplace(*ssh_session);
104 logger.
log(
"opening file");
105 file.reset(
new SFTP_File(*sftp, path.data()));
109 else if (arguments.
peek(
"curl"))
111 const bool verbose = arguments.
peek(
"--verbose");
112 const std::string_view url = arguments.
get_next();
117 file.reset(
new CURL_File(url.data(), verbose));
120#ifdef JOEDB_HAS_BROTLI
121 else if (arguments.
peek(
"brotli"))
123 bool readonly =
false;
127 else if (arguments.
peek(
"--read"))
130 const std::string_view file_name = arguments.
get_next();
135 logger.
log(
"opening brotli file");
145 const bool interpreted = arguments.
peek(
"interpreted");
146 arguments.
peek(
"file");
152 for (
size_t i = 0; i < open_modes; i++)
158 if (arguments.
peek(option.data()))
163 const std::string_view file_name = arguments.
get_next();
170 "opening local file, open_mode = " +
177 file.reset(
new File(file_name.data(), open_mode));
180 logger.
log(
"file is opened");