4 #include <boost/filesystem.hpp>
5 #include <boost/program_options.hpp>
8 #include "libaktualizr/config.h"
9 #include "logging/logging.h"
10 #include "utilities/aktualizr_version.h"
12 namespace bpo = boost::program_options;
14 void check_info_options(
const bpo::options_description &description,
const bpo::variables_map &vm) {
15 if (vm.count(
"help") != 0 || (vm.count(
"command") == 0 && vm.count(
"version") == 0)) {
16 std::cout << description <<
'\n';
19 if (vm.count(
"version") != 0) {
20 std::cout <<
"Current aktualizr-get version is: " << aktualizr_version() <<
"\n";
25 bpo::variables_map parse_options(
int argc,
char **argv) {
26 bpo::options_description description(
27 "A tool similar to wget that will do an HTTP get on the given URL using the device's configured credentials.");
31 description.add_options()
32 (
"help,h",
"print usage")
33 (
"version,v",
"Current aktualizr-get version")
34 (
"config,c", bpo::value<std::vector<boost::filesystem::path> >()->composing(),
"configuration file or directory")
35 (
"loglevel", bpo::value<int>(),
"set log level 0-5 (trace, debug, info, warning, error, fatal)")
36 (
"url,u", bpo::value<std::string>(),
"url to get");
39 bpo::variables_map vm;
40 std::vector<std::string> unregistered_options;
42 bpo::basic_parsed_options<char> parsed_options = bpo::command_line_parser(argc, argv).options(description).run();
43 bpo::store(parsed_options, vm);
44 check_info_options(description, vm);
46 }
catch (
const bpo::required_option &ex) {
48 std::cout << ex.what() << std::endl << description;
50 }
catch (
const bpo::error &ex) {
51 std::cout << ex.what() << std::endl;
52 std::cout << description;
59 int main(
int argc,
char *argv[]) {
60 logger_init(isatty(1) == 1);
61 logger_set_threshold(boost::log::trivial::info);
63 bpo::variables_map commandline_map = parse_options(argc, argv);
67 Config config(commandline_map);
68 std::string body = aktualizrGet(config, commandline_map[
"url"].as<std::string>());
72 }
catch (
const std::exception &ex) {
73 LOG_ERROR << ex.what();