mirror of
https://github.com/GSA/notifications-admin.git
synced 2025-12-14 00:52:55 -05:00
53 lines
1.4 KiB
Python
Executable File
53 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
import os
|
||
import yaml
|
||
from itertools import chain
|
||
from operator import itemgetter
|
||
from sys import argv
|
||
from app.utils import AgreementInfo
|
||
|
||
_dir_path = os.path.dirname(os.path.realpath(__file__))
|
||
|
||
|
||
if len(argv) < 2:
|
||
raise TypeError('Must specify `orgs` or `domains` as the first argument to this script')
|
||
|
||
|
||
with open('{}/app/domains.yml'.format(_dir_path)) as source:
|
||
|
||
data = yaml.load(source)
|
||
|
||
for domain, details in data.items():
|
||
if isinstance(details, dict):
|
||
# We’re looking at the canonical domain
|
||
data[domain]['domains'] = [domain]
|
||
|
||
for domain, details in data.items():
|
||
if isinstance(details, str):
|
||
# This is an alias, let’s add it to the canonical domain
|
||
data[AgreementInfo(domain).canonical_domain]['domains'].append(domain)
|
||
|
||
out_data = [
|
||
details for domain, details in data.items()
|
||
if isinstance(details, dict)
|
||
]
|
||
|
||
if argv[1] == 'orgs':
|
||
print(yaml.dump(out_data)) # noqa
|
||
elif argv[1] == 'domains':
|
||
print( # noqa
|
||
sorted(
|
||
set(
|
||
chain.from_iterable(
|
||
map(
|
||
itemgetter('domains'), out_data
|
||
)
|
||
)
|
||
)
|
||
)
|
||
)
|
||
else:
|
||
raise TypeError('Must specify `orgs` or `domains` as the first argument to this script')
|