mirror of
https://github.com/darlinghq/darling-JavaScriptCore.git
synced 2024-11-26 21:50:53 +00:00
72 lines
2.5 KiB
Python
Executable File
72 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# Copyright (C) 2013 Apple 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:
|
|
# 1. Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# 2. 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.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.
|
|
|
|
import glob
|
|
import json
|
|
import os
|
|
import re
|
|
import sys
|
|
|
|
if len(sys.argv) < 2:
|
|
print("usage: %s [json files or directory of json files ...]" % os.path.basename(sys.argv[0]))
|
|
sys.exit(1)
|
|
|
|
files = []
|
|
for arg in sys.argv[1:]:
|
|
if not os.access(arg, os.F_OK):
|
|
raise Exception("File \"%s\" not found" % arg)
|
|
elif os.path.isdir(arg):
|
|
files.extend(glob.glob(os.path.join(arg, "*.json")))
|
|
else:
|
|
files.append(arg)
|
|
files.sort()
|
|
|
|
# To keep as close to the original JSON formatting as possible, just
|
|
# dump each JSON input file unmodified into an array of "domains".
|
|
# Validate each file is valid JSON and that there is a "domain" key.
|
|
|
|
first = True
|
|
print("{\"domains\":[")
|
|
for file in files:
|
|
if first:
|
|
first = False
|
|
else:
|
|
print(",")
|
|
|
|
string = open(file).read()
|
|
|
|
try:
|
|
regex = re.compile(r"\/\*.*?\*\/", re.DOTALL)
|
|
dictionary = json.loads(re.sub(regex, "", string))
|
|
if not "domain" in dictionary:
|
|
raise Exception("File \"%s\" does not contains a \"domain\" key." % file)
|
|
except ValueError:
|
|
sys.stderr.write("File \"%s\" does not contain valid JSON:\n" % file)
|
|
raise
|
|
|
|
print(string.rstrip())
|
|
print("]}")
|
|
|