
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
hj                 @   s:   d dl Z d dlmZ d dlmZ G dd dZdd ZdS )    N)request)SubparsersActionc               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Analyzerc             C   s*   |j ||d}| j|| |j|d dS )a4  
        Add subcommand to existing subcommand group

        Args:
            name(str): Subcommand name
            help_msg(str): Help message for subcommand
            func(function): Function to call on execution
            opts(list of Object()): List of Option objects to add to subcommand
        )help)funcN)Z
add_parser_add_subcommand_optionsZset_defaults)selfZ
subcmd_grpnamehelp_msgr   optsZ
req_parser r   !/usr/lib/python3.6/sss_analyze.pyadd_subcommand   s    zAnalyzer.add_subcommandc             C   sr   xl|D ]d}|j tkrL|jdkr4|j|j|jdd n|j|j|j|jdd |j tkr|j|j|jtd qW dS )z
        Add subcommand options to subcommand parser

        Args:
            parser(str): Subcommand group parser
            opts(list of Object()): List of Option objects to add to subcommand
        N
store_true)r   action)r   type)Zopt_typeboolZ	short_optadd_argumentr	   r
   int)r   parserr   optr   r   r   r      s    




z Analyzer._add_subcommand_optionsc             C   s   t j }t }|j|| dS )z
        Initialize analyzer modules from modules/*

        Args:
            parser (ArgumentParser): Base parser object
            parser_grp (argparse.Action): Parser group that can have
                additional parsers attached.
        N)r   ZRequestAnalyzerr   
setup_args)r   r   
parser_grpZreqZclir   r   r   load_modules/   s    
zAnalyzer.load_modulesc             C   sb   t j}t jd|d}|jddddgd |jddd	d
 |jdtdd}|jd}| j|| |S )z
        Top-level argument setup function.
        Setup analyzer argument parsers and subcommand parser/options.

        Returns:
            parser (ArgumentParser): Base parser object
        z-Analyzer tool to assist with SSSD log parsing)descriptionZformatter_classz--sourcefilesZjournald)defaultchoicesz--logdirz/var/log/sssd/z*SSSD Log directory to parse log files from)r   r   NZCOMMANDS)titler   metavarModules)argparseZRawTextHelpFormatterArgumentParserr   Zadd_subparsersr   Zadd_parser_groupr   )r   Z	formatterr   Z	subparserr   r   r   r   r   >   s    	


zAnalyzer.setup_argsc             C   s4   | j  }|j }t|ds&|j  dS |j| d S )Nr   r   )r   
parse_argshasattrZ
print_helpr   )r   r   argsr   r   r   main[   s    
zAnalyzer.mainN)__name__
__module____qualname__r   r   r   r   r&   r   r   r   r   r      s
   r   c              C   s   t  } | j  d S )N)r   r&   )Zanalyzerr   r   r   runf   s    r*   )r!   Zsssd.modulesr   Zsssd.parserr   r   r*   r   r   r   r   <module>   s   _