]> source.dussan.org Git - rspamd.git/commitdiff
[Project] Deprecate and remove getopt library
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 31 May 2018 16:20:12 +0000 (17:20 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 31 May 2018 16:20:12 +0000 (17:20 +0100)
lualib/getopt.lua [deleted file]
lualib/rspamadm/confighelp.lua
lualib/rspamadm/fuzzy_stat.lua
src/rspamadm/confighelp.c

diff --git a/lualib/getopt.lua b/lualib/getopt.lua
deleted file mode 100644 (file)
index 20715c3..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-local function insert_option(tab, name, value)
-  if tab[name] then
-    if type(tab[name]) == 'table' then
-      table.insert(tab[name], value)
-    else
-      local old_val = tab[name]
-      tab[name] = {
-        old_val,
-        value
-      }
-    end
-  else
-    tab[name] = value
-  end
-end
-
-local function getopt(arg, options)
-  local tab = {}
-  for k, v in ipairs(arg) do
-    if string.sub(v, 1, 2) == "--" then
-      local x = string.find(v, "=", 1, true)
-      if x then insert_option(tab, string.sub(v, 3, x - 1), string.sub(v, x + 1))
-      else tab[string.sub(v, 3)] = true
-      end
-    elseif string.sub(v, 1, 1) == "-" then
-      local y = 2
-      local l = string.len(v)
-      local jopt
-      while (y <= l) do
-        jopt = string.sub(v, y, y)
-        if string.find(options, jopt, 1, true) then
-          if y < l then
-            insert_option(tab, jopt, string.sub(v, y + 1))
-            y = l
-          else
-            insert_option(tab, jopt, arg[k + 1])
-          end
-        else
-          tab[jopt] = true
-        end
-        y = y + 1
-      end
-    end
-  end
-  return tab
-end
-
-return {
-  getopt = getopt
-}
index 8f0fd2b7d1e8e4e8ad4906dfd01a748cad593340..d477ff69b1e69b99fb132e42e99f0a43d151aba4 100644 (file)
@@ -1,4 +1,4 @@
-local opts = {}
+local opts
 local known_attrs = {
   data = 1,
   example = 1,
@@ -6,10 +6,20 @@ local known_attrs = {
   required = 1,
   default = 1,
 }
-
-local getopt = require "getopt"
+local argparse = require "argparse"
 local ansicolors = require "ansicolors"
 
+local parser = argparse()
+    :name "rspamadm confighelp"
+    :description "Shows help for the specified configuration options"
+    :help_description_margin(32)
+parser:flag "--no-color"
+    :description "Disable coloured output"
+parser:flag "--short"
+    :description "Show only option names"
+parser:flag "--no-examples"
+    :description "Do not show examples (impied by --short)"
+
 local function maybe_print_color(key)
   if not opts['no-color'] then
     return ansicolors.white .. key .. ansicolors.reset
@@ -100,7 +110,7 @@ local function print_help(key, value, tabs)
 end
 
 return function(args, res)
-  opts = getopt.getopt(args, '')
+  opts = parser:parse(args)
 
   local sorted = sort_values(res)
 
index 20945bd4a7c5ff4b1301e53ceaaeb7dac0802e2f..45e13bb60eb5bfb1268c085fc8195070ab67af11 100644 (file)
@@ -1,6 +1,27 @@
 local util = require "rspamd_util"
 local opts = {}
 
+local argparse = require "argparse"
+local parser = argparse()
+    :name "rspamadm confighelp"
+    :description "Shows help for the specified configuration options"
+    :help_description_margin(32)
+parser:flag "--no-ips"
+      :description "No IPs stats"
+parser:flag "--no-keys"
+      :description "No keys stats"
+parser:flag "--short"
+      :description "Short output mode"
+parser:flag "-n --number"
+      :description "Disable numbers humanization"
+parser:option "-s --sort"
+      :description "Sort order"
+      :convert {
+        matched = "matched",
+        errors = "errors",
+        ip = "ip"
+      }
+
 local function add_data(target, src)
   for k,v in pairs(src) do
     if k ~= 'ips' then
@@ -143,13 +164,11 @@ local function print_result(r)
   return print_num(r)
 end
 
-local getopt = require "getopt"
-
 return function(args, res)
   local res_ips = {}
   local res_databases = {}
   local wrk = res['workers']
-  opts = getopt.getopt(args, '')
+  opts = parser:parse(args)
 
   if wrk then
     for _,pr in pairs(wrk) do
index 08789a468759806a3899b2c80e847b8406d49f05..c77cb609164cd94f5e46b786b484b1afd61eb0ba 100644 (file)
@@ -69,7 +69,7 @@ rspamadm_confighelp_help (gboolean full_help, const struct rspamadm_command *cmd
                                "-j: output pretty formatted JSON\n"
                                "-k: search by keyword in doc string\n"
                                "-P: use specific Lua plugins path\n"
-                               "--no-color: show colored output\n"
+                               "--no-color: disable coloured output\n"
                                "--short: show only option names\n"
                                "--no-examples: do not show examples (impied by --short)\n"
                                "--help: shows available options and commands";