Index: tools/json_schema_compiler/compiler.py |
diff --git a/tools/json_schema_compiler/compiler.py b/tools/json_schema_compiler/compiler.py |
index 1d0884152e057200c1ca8f54e65cd6594960060b..593f68730339d424895aad151da40dd7c042ab72 100755 |
--- a/tools/json_schema_compiler/compiler.py |
+++ b/tools/json_schema_compiler/compiler.py |
@@ -38,12 +38,16 @@ def load_schema(schema): |
else: |
sys.exit("Did not recognize file extension %s for schema %s" % |
(schema_extension, schema)) |
+ if len(api_defs) != 1: |
+ sys.exit("File %s has multiple schemas. Files are only allowed to contain a" |
+ " single schema." % schema) |
return api_defs |
def handle_single_schema(filename, dest_dir, root, root_namespace): |
schema = os.path.normpath(filename) |
schema_filename, schema_extension = os.path.splitext(schema) |
+ path, short_filename = os.path.split(schema_filename) |
api_defs = load_schema(schema) |
api_model = model.Model() |
@@ -68,9 +72,13 @@ def handle_single_schema(filename, dest_dir, root, root_namespace): |
if not namespace: |
continue |
+ if short_filename != namespace.unix_name: |
+ sys.exit("Filename %s is illegal. Name files using unix_hacker style." % |
+ filename) |
+ |
# The output filename must match the input filename for gyp to deal with it |
# properly. |
- out_file = namespace.name |
+ out_file = namespace.unix_name |
type_generator = cpp_type_generator.CppTypeGenerator( |
root_namespace, namespace, namespace.unix_name) |
for referenced_namespace in api_model.namespaces.values(): |
@@ -78,7 +86,7 @@ def handle_single_schema(filename, dest_dir, root, root_namespace): |
continue |
type_generator.AddNamespace( |
referenced_namespace, |
- referenced_namespace.name) |
+ referenced_namespace.unix_name) |
h_code = (h_generator.HGenerator(namespace, type_generator) |
.Generate().Render()) |
@@ -113,14 +121,24 @@ def handle_bundle_schema(filenames, dest_dir, root, root_namespace): |
api_model = model.Model() |
relpath = os.path.relpath(os.path.normpath(filenames[0]), root) |
- for target_namespace in api_defs: |
- api_model.AddNamespace(target_namespace, relpath) |
+ |
+ for target_namespace, schema_filename in zip(api_defs, filenames): |
+ namespace = api_model.AddNamespace(target_namespace, relpath) |
+ path, filename = os.path.split(schema_filename) |
+ short_filename, extension = os.path.splitext(filename) |
+ |
+ # Filenames are checked against the unix_names of the namespaces they |
+ # generate because the gyp uses the names of the JSON files to generate |
+ # the names of the .cc and .h files. We want these to be using unix_names. |
+ if namespace.unix_name != short_filename: |
+ sys.exit("Filename %s is illegal. Name files using unix_hacker style." % |
+ schema_filename) |
type_generator = cpp_type_generator.CppTypeGenerator(root_namespace) |
for referenced_namespace in api_model.namespaces.values(): |
type_generator.AddNamespace( |
referenced_namespace, |
- referenced_namespace.name) |
+ referenced_namespace.unix_name) |
generator = schema_bundle_generator.SchemaBundleGenerator( |
api_model, api_defs, type_generator) |