
    id                          d Z dZddlZddlZddlmZ ddlmZ ddlZdZ	dZ
 ej                  e
e	       d ZeZ	 e  G d	 d
      Zy# e$ r eZY w xY w)zu
This module houses the i18n setup and message function. The default is to use
gettext to internationalize messages.
z4.5.6    N)ArgumentParser)SosListOptionz/usr/share/localesosc                 6    t        j                  t        |       S N)gettextdgettextgettext_app)msgs    ./usr/lib/python3/dist-packages/sos/__init__.py_defaultr      s    K--    c                   (    e Zd ZdZd Zd Zd Zd Zy)SoSaR  Main entrypoint for sos from the command line

    Upon intialization, this class loads the basic option parser which will
    include the options shared by support components/subcommands. This is also
    where all subcommands present in the local installation are discovered,
    loaded, and if a matching one is found, intialized.
    c                    || _         dd l}dd l}dd l}|j                  j
                  dgf|j                  j                  ddgf|j                  j                  g fd| _
        	 dd l}|j                  j                  dgf| j                  d<   d
}| j                  D ]i  }| j                  |   d   }|j)                  d|       dj+                  |      }| j                  |   d   j,                  }|dj/                  ||      z  }k d}	|	|z   }	d}
t1        |	|
      | _        | j2                  j5                  ddt6               | j2                  j9                  ddd      | _        d| j:                  _        | j                  D ]  }| j:                  j?                  || j                  |   d   d|z        }d|z  |_         |j5                  ddt6               | jC                  |       | j                  |   d   jE                  |       |jG                  |        | j2                  jI                  | j                         | _%        | jM                          y # t        $ rx}dd l}d|j                   v r&|j"                  j$                  g f| j                  d<   n5d	|j                   v r&|j"                  j&                  g f| j                  d<   n Y d }~Id }~ww xY w)Nr   repcleanermask)reportcleanhelp	collectorcollectzsos.collectorpexpect    z, z	{com:<30}{desc}
)comdescz6%(prog)s <component> [options]

Available components:
z1See `sos <component> --help` for more information)usageepilogactionextend	componentzsos component to run)destmetavarr   Tzsos %s)aliasesprogzsos %s [options])parser)r#   )'cmdline
sos.reportsos.cleanersos.helpr   	SoSReportr   
SoSCleanerr   	SoSHelper_componentssos.collectorr   SoSCollectorModuleNotFoundErrorsos.missingr   missingMissingCollectMissingPexpectinsertjoinr   formatr   r(   registerr   add_subparsers
subparsersrequired
add_parserr   _add_common_optionsadd_parser_optionsset_defaults
parse_argsargs_init_component)selfrD   r   err_com_stringr   r&   _comr   usage_stringr    comp_com_subparsers                r   __init__zSoS.__init__5   s    	zz++eW5kk,,y&.ABXX'',
	 +.==+E+E,7=+:DY' ## 	C&&s+A.GNN1c"99W%D##C(+00D%,,D,AK	2#k1E$<GXx?++44' 5 

 $(  $$ 
	8D!__77((.q1_ 8 N
 $6#<N ##HhF$$^4T"1%888O''$'7
	8 KK**4<<8	c # 
	#'')/2{{/I/I2.N  +cgg%/2{{/I/I2.N  + 
	s   %*I 	K%A-KKc           	      d   |j                  d      }|j                  dddd       |j                  dt        dd	d
d       |j                  dddd       |j                  dddddd       |j                  dddddd       |j                  ddddd       |j                  dddd d!t        d"#       |j                  d$d%d&d'd(d)       |j                  d*d+d,g d-d./       |j	                         }|j                  d0ddd1       |j                  d2d34       |j                  d5d64       y)7z@Adds the options shared across components to the parser
        zGlobal Optionsz--batchF
store_truezDo not prompt interactively)defaultr!   r   z--config-filestoreconfig_filez/etc/sos/sos.confz$specify alternate configuration file)typer!   r$   rP   r   z--debugdebugz6enable interactive debugging using the python debugger)r!   r$   r   z-qz--quietquietzonly print fatal errors)r!   r$   rP   r   z-sz	--sysrootsysrootNz!system rootdir path (default='/')z	--tmp-dirtmp_dirz%specify alternate temporary directoryz-tz	--threadsthreads   zNumber of threads to use)r!   r$   rP   rS   r   z-vz	--verbosecount	verbosityr   zincrease verbosityz-zz--compression-typecompression_type)autogzipxzzcompression technology to use)r$   choicesr   z	--encryptz_Encrypt the archive, either prompting for a password/key or referencing an environment variablez--encrypt-keyz(Encrypt the archive using a GPG key-pair)r   z--encrypt-passz$Encrypt the archive using a password)add_argument_groupadd_argumentstrintadd_mutually_exclusive_group)rF   r(   
global_grpencrypt_grps       r   r@   zSoS._add_common_options~   s    ../?@
	5%B 	  	Dc'%2(;%K 	  	M 		,W&7 	  	8 	i%,e%> 	  	@ 	k'%.%H 	  	J 	G)(,%L 	  	N 	k'%.%? 	  	A 	k'%0!%9 	  	; 	&:%7(>%D 	  	F !==?  e(4(A 	! 	C
 	  '1 	! 	2 	  !1&L 	! 	Nr   c                    | j                   j                  }|| j                  j                         vrt	        d|z         	 | j                  |   d   }|j
                  r"t        j                         dk(  st        d       || j                  | j                   | j                        | _        y# t        $ rH}t	        d|d|       | j                   j                  r|t        j                  d       Y d}~yd}~ww xY w)znDetermine which component has been requested by the user, and then
        initialize that component.
        z!Unknown subcommand '%s' specifiedr   z*Component must be run with root privilegeszCould not initialize 'z': r   N)rD   r#   r0   keysprintroot_requiredosgetuid	Exceptionr(   r)   
_componentrT   sysexit)rF   rI   _to_loadrG   s       r   rE   zSoS._init_component   s     yy""t'',,..5<=
	''-a0H%%biikQ.> LMM&t{{DIIt||LDO 	T3?@yy	HHQKK		s   A-B0 0	D9>C<<Dc                 8    | j                   j                          y r   )ro   execute)rF   s    r   rt   zSoS.execute   s    !r   N)__name__
__module____qualname____doc__rM   r@   rE   rt    r   r   r   r   ,   s    GR-N^&"r   r   )rx   __version__rl   rp   argparser   sos.optionsr   r   gettext_dirr
   bindtextdomainr   _sosr3   	NameErrorImportErrorr   ry   r   r   <module>r      ss     	 
 # % !   {K 0. &
U" U"	  &%&s   A AA