Przeglądaj źródła

Utilities: Add a command line client for ConfigServer

This is an alternative to the ini utility which accesses the
configuration files through the newly introduced ConfigServer.
Ralf Donau 3 lat temu
rodzic
commit
e36931fffe
2 zmienionych plików z 37 dodań i 0 usunięć
  1. 1 0
      Userland/Utilities/CMakeLists.txt
  2. 36 0
      Userland/Utilities/config.cpp

+ 1 - 0
Userland/Utilities/CMakeLists.txt

@@ -57,6 +57,7 @@ target_link_libraries(bt LibSymbolication)
 target_link_libraries(checksum LibCrypto)
 target_link_libraries(chres LibGUI)
 target_link_libraries(cksum LibCrypto)
+target_link_libraries(config LibConfig)
 target_link_libraries(copy LibGUI)
 target_link_libraries(crash LibTest)
 target_link_libraries(disasm LibX86)

+ 36 - 0
Userland/Utilities/config.cpp

@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2021, the SerenityOS developers.
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <LibConfig/Client.h>
+#include <LibCore/ArgsParser.h>
+#include <LibCore/EventLoop.h>
+
+int main(int argc, char** argv)
+{
+    Core::EventLoop loop;
+    String domain;
+    String group;
+    String key;
+    String value_to_write;
+
+    Core::ArgsParser args_parser;
+    args_parser.set_general_help("Show or modify values in the configuration files through ConfigServer.");
+    args_parser.add_positional_argument(domain, "Config domain", "domain");
+    args_parser.add_positional_argument(group, "Group name", "group");
+    args_parser.add_positional_argument(key, "Key name", "key");
+    args_parser.add_positional_argument(value_to_write, "Value to write", "value", Core::ArgsParser::Required::No);
+    args_parser.parse(argc, argv);
+
+    if (!value_to_write.is_empty()) {
+        Config::write_string(domain, group, key, value_to_write);
+        return 0;
+    }
+
+    auto value = Config::read_string(domain, group, key);
+    outln("{}", value);
+
+    return 0;
+}