Advertisement
Freack100

Lua CLI

Apr 1st, 2015
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.46 KB | None | 0 0
  1. local cli = {}
  2.  
  3. local function getBoolean(bool)
  4.     local _ = {["true"] = true,["1"] = true}
  5.     if(type(bool) == "string") then
  6.         if(_[string.lower(bool)]) then
  7.             return true
  8.         end
  9.     elseif(type(bool) == "boolean") then
  10.         return bool
  11.     end
  12.     return false
  13. end
  14.  
  15. function cli.new(args)
  16.     local self = {arguments=args, defaults={}, parsed={}}
  17.     return setmetatable(self,{__index=cli})
  18. end
  19.  
  20. function cli.setDefault(self,k,v)
  21.     self.defaults[k] = v
  22. end
  23.  
  24. function cli:getBoolean(k)
  25.     if(self.parsed[k]) then
  26.         return getBoolean(self.parsed[k])
  27.     elseif(self.defaults[k]) then
  28.         return getBoolean(self.defaults[k])
  29.     else
  30.         return false
  31.     end
  32. end
  33.  
  34. function cli:getString(k)
  35.     if(self.parsed[k]) then
  36.         return tostring(self.parsed[k])
  37.     elseif(self.defaults[k]) then
  38.         return tostring(self.defaults[k])
  39.     else
  40.         return ""
  41.     end
  42. end
  43.  
  44. function cli:getNumber(k)
  45.     if(self.parsed[k]) then
  46.         return tonumber(self.parsed[k])
  47.     elseif(self.defaults[k]) then
  48.         return tonumber(self.defaults[k])
  49.     else
  50.         return 0
  51.     end
  52. end
  53.  
  54. function cli:parse()
  55.     local parsed = {}
  56.     for k,v in pairs(self.arguments) do
  57.         if(string.sub(v,1,1) == "-") then --it is a key
  58.             if(self.arguments[k+1]) then --there is more
  59.                 if(string.sub(self.arguments[k+1],1,1) == "-") then
  60.                     parsed[v] = true
  61.                 else
  62.                     parsed[v] = self.arguments[k+1]
  63.                 end
  64.             else
  65.                 parsed[v] = true
  66.             end
  67.         end
  68.     end
  69.     self.parsed = parsed
  70.     return self
  71. end
  72.  
  73. cli = setmetatable(cli,{__index=cli})
  74. return cli
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement