-
Notifications
You must be signed in to change notification settings - Fork 0
/
CmdLine.lua
49 lines (43 loc) · 1.51 KB
/
CmdLine.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
require 'torch'
require 'strict'
--------------------------------------- CmdLine---------------------------------------
-- Modifies handling of bool arguments, they have to be explicitely specified.
-- Possible alternative: https://github.com/davidm/lua-pythonic-optparse/blob/master/lmod/pythonic/optparse.lua
local CmdLine, parent = torch.class('myrock.CmdLine', 'torch.CmdLine')
local function strip(str)
return string.match(str, '%-*(.*)')
end
function CmdLine:__readOption__(params, arg, i)
local key = arg[i]
local option = self.options[key]
if not option then
self:error('unknown option ' .. key)
end
if not self.boolsfull and option.type and option.type == 'boolean' then
params[strip(key)] = not option.default
return 1
else
local value = arg[i+1]
if not value then
self:error('missing argument for option ' .. key)
end
if not option.type or option.type == 'string' then
--
elseif option.type == 'number' then
value = tonumber(value)
elseif option.type == 'boolean' then
value = (string.lower(value) == 'true')
else
self:error('unknown required option type ' .. option.type)
end
if value==nil then
self:error('invalid type for option ' .. key .. ' (should be ' .. option.type .. ')')
end
params[strip(key)] = value
return 2
end
end
function CmdLine:__init(argseparator_,keyseparator_)
parent.__init(self,argseparator_,keyseparator_)
self.boolsfull = true
end