* luci/libs: uvl: add support for list values in schemes and configurations
[project/luci.git] / libs / uvl / root / usr / bin / uvl
index 3c9e53f..1631208 100755 (executable)
@@ -11,7 +11,7 @@ You may obtain a copy of the License at
 
         http://www.apache.org/licenses/LICENSE-2.0
 
-$Id: uvl.lua 2873 2008-08-17 21:43:56Z jow $
+$Id$
 
 ]]--
 
@@ -63,13 +63,14 @@ if #arguments == 0 or options.help then
        print([=[
 
 uvl - UCI Validation Layer
-$Id: uvl.lua 2873 2008-08-17 21:43:56Z jow $
+$Id$
 (c) 2008 Jo-Philipp Wich, Steven Barth
 
 Usage:
        uvl --help
-       uvl [--silent] [--no-strict-sections] [--no-strict-options]
-               [--no-strict-validators] config[.section[.option]]
+       uvl [--silent] [--schemedir=DIR]
+               [--no-strict-sections] [--no-strict-options] [--no-strict-validators]
+               [--no-strict-lists] config[.section[.option]]
 
 Options:
        --help
@@ -78,6 +79,9 @@ Options:
        --silent
                Don't produce any output.
 
+       --schemedir=DIR
+               Use DIR as scheme directory.
+
        --no-strict-sections
                Don't treat sections found in config but not in scheme as error.
 
@@ -86,6 +90,9 @@ Options:
 
        --no-strict-validators
                Don't invalidate config if an external validator fails.
+
+       --no-strict-lists
+               Don't invalidate lists that are stored options.
        ]=])
        os.exit(255)
 else
@@ -95,18 +102,23 @@ else
                ( options['no-strict-options'] and false or true )
        luci.uvl.STRICT_EXTERNAL_VALIDATORS =
                ( options['no-strict-validators'] and false or true )
+       luci.uvl.STRICT_LIST_TYPE =
+               ( options['no-strict-lists'] and false or true )
+
+       local uvl = luci.uvl.UVL(
+               type(options.schemedir) == "string" and options.schemedir or nil
+       )
 
-       local uvl = luci.uvl.UVL( options['schemedir'] )
        local cso = luci.util.split( arguments[1], "." )
        local ok, err = uvl:validate( unpack(cso) )
 
        if ok then
                if not options.silent then
                        print( string.format(
-                               '%s "%s.%s.%s" validates fine!',
+                               '%s "%s" validates fine!',
                                        ( #cso == 1 and "Config" or
                                                ( #cso == 2 and "Section" or "Option" ) ),
-                                       cso[1], cso[2], cso[3]
+                                       table.concat(cso, ".")
                        ) )
                end
                os.exit( 0 )