2024-06-21 14:04:58 +02:00
#!/usr/bin/env python3
import typing as _typing
import sys as _sys
import os as _os
import json as _json
import argparse as _argparse
from log import *
from conf import *
from backend import *
def main ( ) :
## args
argument_parser = _argparse . ArgumentParser (
prog = " mondvogel " ,
description = " CLI-Client-Programm für Espe " ,
formatter_class = _argparse . ArgumentDefaultsHelpFormatter
)
argument_parser . add_argument (
type = str ,
dest = " action " ,
choices = [
" member-list " ,
" member-project " ,
2024-06-23 09:31:05 +02:00
" member-delete "
2024-06-21 14:04:58 +02:00
] ,
metavar = " <action> " ,
2024-06-23 09:31:05 +02:00
help = " auszuführende Aktion; Optionen: ' conf-schema ' : JSON-Schema der Konfiguration ausgeben | ' conf-expose ' : vervollständigte Konfiguration ausgegeben | ' member-list ' : Liste der Mitglieder ausgeben | ' member-project ' : ein Mitglied anlegen und die ID des erzeugten Datensatzes ausgeben | ' member-delete ' : einer Mitglieder-Datensatz löschen " ,
2024-06-21 14:04:58 +02:00
)
argument_parser . add_argument (
" -c " ,
" --conf-path " ,
type = str ,
dest = " conf_path " ,
default = _os . path . join ( _os . path . expanduser ( " ~ " ) , " .mondvogel " , " conf.json " ) ,
metavar = " <conf-path> " ,
help = " Pfad zur Konfigurations-Datei " ,
)
2024-06-23 09:31:05 +02:00
argument_parser . add_argument (
" -i " ,
" --id " ,
type = int ,
dest = " id " ,
default = None ,
metavar = " <id> " ,
help = " ID des Mitglieds " ,
)
2024-06-21 14:04:58 +02:00
argument_parser . add_argument (
" -m " ,
" --membership-number " ,
type = str ,
dest = " membership_number " ,
default = None ,
metavar = " <membership-number> " ,
help = " Mitglieds-Nummer des Mitglieds " ,
)
argument_parser . add_argument (
" -n " ,
" --name " ,
type = str ,
dest = " name " ,
default = None ,
metavar = " <name> " ,
help = " Name des Mitglieds " ,
)
argument_parser . add_argument (
" -e " ,
" --email-address " ,
type = str ,
dest = " email_address " ,
default = None ,
metavar = " <email-address> " ,
help = " E-Mail-Adresse des Mitglieds " ,
)
args = argument_parser . parse_args ( )
## conf
conf_load ( args . conf_path )
log_add_output (
{
" format " : conf_get ( ) [ " log " ] [ " format " ] ,
" min_level " : (
{
" error " : enum_log_level . ERROR ,
" warning " : enum_log_level . WARNING ,
" notice " : enum_log_level . NOTICE ,
" info " : enum_log_level . INFO ,
" debug " : enum_log_level . DEBUG ,
} [ conf_get ( ) [ " log " ] [ " min_level " ] ]
) ,
}
)
## exec
if ( args . action == " conf-schema " ) :
_sys . stdout . write ( _json . dumps ( conf_schema ( ) , indent = " \t " ) + " \n " )
elif ( args . action == " conf-expose " ) :
_sys . stdout . write ( _json . dumps ( conf_get ( ) , indent = " \t " ) + " \n " )
elif ( args . action == " member-list " ) :
data = backend_api_call_member_list (
)
_sys . stdout . write ( _json . dumps ( data , indent = " \t " ) + " \n " )
elif ( args . action == " member-project " ) :
if (
( args . membership_number is None )
or
( args . name is None )
or
( args . email_address is None )
) :
log_error (
" mandatory_parameters_missing " ,
{
" parameters " : [
" membership_number " ,
" name " ,
" email_address " ,
]
}
)
else :
member_id = backend_api_call_member_project (
args . membership_number ,
args . name ,
args . email_address ,
None
)
_sys . stdout . write ( _json . dumps ( member_id , indent = " \t " ) + " \n " )
2024-06-23 09:31:05 +02:00
elif ( args . action == " member-delete " ) :
if (
( args . id is None )
) :
log_error (
" mandatory_parameters_missing " ,
{
" parameters " : [
" id " ,
]
}
)
else :
member_id = backend_api_call_member_delete (
args . id
)
2024-06-21 14:04:58 +02:00
else :
raise NotImplementedError ( )
try :
main ( )
except ValueError as error :
_sys . stderr . write ( str ( error ) + " \n " )
_sys . exit ( 1 )