-- Copyright (c) 2008, OmniTI Computer Consulting, Inc.
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions are
-- met:
-- 
--     * Redistributions of source code must retain the above copyright
--       notice, this list of conditions and the following disclaimer.
--     * Redistributions in binary form must reproduce the above
--       copyright notice, this list of conditions and the following
--       disclaimer in the documentation and/or other materials provided
--       with the distribution.
--     * Neither the name OmniTI Computer Consulting, Inc. nor the names
--       of its contributors may be used to endorse or promote products
--       derived from this software without specific prior written
--       permission.
-- 
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


rc = 0
bit = { }
package.preload['noit'] = { }
package.loaded.noit = {}
package.preload['mtev'] = { }
package.loaded.mtev = { }
package.preload['mtev.HttpClient'] = { }
package.loaded['mtev.HttpClient'] = { }
package.preload['snmp'] = { }
package.loaded.snmp = {}

function extract(file, outfile)
  local module = file:gsub('.lua$', ''):gsub('/', '.')
  local M = require(module)
  if not M or not M.onload then
    return
  end
  M.onload( {
    name = function() return module end,
    xml_description =
      function(xml)
        local f = io.open(outfile, "w+")
        if not f then
          rc = 2
        end
        f:write(xml)
        f:close()
      end
  })
end

if arg[0] == nil then
  local newarg = {}
  for i, v in ipairs(arg) do
    newarg[i-1] = arg[i]
  end
  arg = newarg
end

if (#arg) ~= 2 then
  print(string.format("%s <module> <outputfile>\n", (arg[0])))
  os.exit(1)
end

extract(arg[1], arg[2])
os.exit(rc)
