blob: dc9467b15a683c6cfba94316fa00e476083864e9 [file] [log] [blame]
#!/usr/bin/env python
# ---
# weinre is available under *either* the terms of the modified BSD license *or* the
# MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
#
# Copyright (c) 2010, 2011 IBM Corporation
# ---
import os
import re
import sys
import json
import optparse
#--------------------------------------------------------------------
def main():
if len(sys.argv) < 3:
error("expecting parameters outputFile inputDir")
min = False
if sys.argv[1] == "-min":
min = True
oFileName = sys.argv[2]
iDirName = sys.argv[3]
else:
oFileName = sys.argv[1]
iDirName = sys.argv[2]
entries = os.listdir(iDirName)
if 0 == len(entries): error("no files found in '" + iDirName + "'")
entries = [entry for entry in entries if entry.endswith(".json")]
if 0 == len(entries): error("no JSON files found in '" + iDirName + "'")
result = []
for entry in entries:
iFileName = os.path.join(iDirName, entry)
if not os.path.exists(iFileName): error("File not found: '" + iFileName + "'")
iFile = open(iFileName, "r")
contents = iFile.read()
iFile.close()
result.append(json.loads(contents))
if min:
result = minimize(result)
jsonString = json.dumps(result)
else:
jsonString = json.dumps(result, indent=4)
jsString = "require('weinre/common/Weinre').addIDLs(%s)" % jsonString
oFile = open(oFileName, "w")
oFile.write(jsString)
oFile.close()
log("generated collected json idls in: " + oFileName)
#--------------------------------------------------------------------
def minimize(idl):
for module in idl:
for interface in module["interfaces"]:
if "extendedAttributes" in interface:
del interface["extendedAttributes"]
if "methods" in interface:
for method in interface["methods"]:
if "returns" in method:
del method["returns"]
if "callbackParameters" in method:
del method["callbackParameters"]
if "extendedAttributes" in method:
del method["extendedAttributes"]
if "parameters" in method:
for parameter in method["parameters"]:
if "type" in parameter:
del parameter["type"]
return idl
#--------------------------------------------------------------------
def log(message):
message = "%s: %s" % (PROGRAM_NAME, message)
print >>sys.stderr, message
#--------------------------------------------------------------------
def error(message):
log(message)
sys.exit(-1)
#--------------------------------------------------------------------
PROGRAM_NAME = os.path.basename(sys.argv[0])
main()