54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import importlib.resources
|
|
import os
|
|
import socket
|
|
|
|
import click
|
|
from zope import component
|
|
|
|
from ..krb_check import krb_check
|
|
from .members import members
|
|
from .groups import groups
|
|
from .positions import positions
|
|
from .updateprograms import updateprograms
|
|
from ceo_common.interfaces import IConfig, IHTTPClient
|
|
from ceo_common.model import Config, HTTPClient
|
|
|
|
|
|
@click.group()
|
|
@click.pass_context
|
|
def cli(ctx):
|
|
# ensure ctx exists and is a dict
|
|
ctx.ensure_object(dict)
|
|
|
|
princ = krb_check()
|
|
user = princ[:princ.index('@')]
|
|
ctx.obj['user'] = user
|
|
|
|
if os.environ.get('PYTEST') != '1':
|
|
register_services()
|
|
|
|
|
|
cli.add_command(members)
|
|
cli.add_command(groups)
|
|
cli.add_command(positions)
|
|
cli.add_command(updateprograms)
|
|
|
|
|
|
def register_services():
|
|
# Using base component directly so events get triggered
|
|
baseComponent = component.getGlobalSiteManager()
|
|
|
|
# Config
|
|
# This is a hack to determine if we're in the dev env or not
|
|
if socket.getfqdn().endswith('.csclub.internal'):
|
|
with importlib.resources.path('tests', 'ceo_dev.ini') as p:
|
|
config_file = p.__fspath__()
|
|
else:
|
|
config_file = os.environ.get('CEO_CONFIG', '/etc/csc/ceo.ini')
|
|
cfg = Config(config_file)
|
|
baseComponent.registerUtility(cfg, IConfig)
|
|
|
|
# HTTPService
|
|
http_client = HTTPClient()
|
|
baseComponent.registerUtility(http_client, IHTTPClient)
|