Index: services/catalog/public/tools/generate_manifest.py |
diff --git a/services/catalog/public/tools/generate_manifest.py b/services/catalog/public/tools/generate_manifest.py |
index 316ee687936dc6c3eb4ddaa2e3800bbaf20c8ac1..20ec8f41436cbdd1c57146ae00c61caad92dc048 100755 |
--- a/services/catalog/public/tools/generate_manifest.py |
+++ b/services/catalog/public/tools/generate_manifest.py |
@@ -43,30 +43,11 @@ |
services[name] = entry |
-def SanityCheckCatalog(catalog): |
- """Ensures any given service name appears only once within the catalog.""" |
- known_services = set() |
- |
- def has_no_dupes(root): |
- if "name" in root: |
- name = root["name"] |
- if name in known_services: |
- raise ValueError("Duplicate catalog entry found for service: %s" % name) |
- known_services.add(name) |
- |
- if "services" not in root: |
- return True |
- |
- return all(has_no_dupes(service) for service in root["services"]) |
- |
- return all(has_no_dupes(service["manifest"]) |
- for service in catalog["services"].itervalues()) |
- |
- |
def main(): |
parser = argparse.ArgumentParser( |
description="Generates a Service Manager catalog manifest.") |
parser.add_argument("--output") |
+ parser.add_argument("--packages-dir") |
parser.add_argument("--pretty", action="store_true") |
parser.add_argument("--embedded-services", nargs="+", |
dest="embedded_services", default=[]) |
@@ -78,8 +59,8 @@ |
dest="executable_override_specs", default=[]) |
args, _ = parser.parse_known_args() |
- if args.output is None: |
- raise Exception("--output required") |
+ if args.output is None or args.packages_dir is None: |
+ raise Exception("--output and --packages-dir required") |
services = {} |
for subcatalog_path in args.included_catalogs: |
@@ -92,15 +73,16 @@ |
service_name, exe_path = override_spec.split(":", 1) |
executable_overrides[service_name] = exe_path |
- for manifest_path in args.embedded_services: |
+ for name in args.embedded_services: |
+ manifest_path = os.path.join(args.packages_dir, name, "manifest.json") |
service_name, manifest = ParseManifest(manifest_path) |
entry = { "embedded": True, "manifest": manifest } |
AddServiceEntryToCatalog(services, service_name, entry) |
- for manifest_path in args.standalone_services: |
+ for name in args.standalone_services: |
+ manifest_path = os.path.join(args.packages_dir, name, "manifest.json") |
service_name, manifest = ParseManifest(manifest_path) |
- entry = { "embedded": False, "manifest": manifest } |
- name = manifest["name"] |
+ entry = { "embedded": False, "manifest": ParseJSONFile(manifest_path) } |
if name in executable_overrides: |
entry["executable"] = executable_overrides[name] |
AddServiceEntryToCatalog(services, service_name, entry) |
@@ -109,10 +91,6 @@ |
with open(args.output, 'w') as output_file: |
json.dump(catalog, output_file, indent=2 if args.pretty else -1) |
- # NOTE: We do the sanity check and possible failure *after* outputting the |
- # catalog manifest so it's easier to inspect erroneous output. |
- SanityCheckCatalog(catalog); |
- |
return 0 |
if __name__ == "__main__": |