
    Dc``A(                     Z    d dl Z d dlZd dlZd dlZd dlZd dlmZ  G d d          ZdgZdS )    N)_c                   @    e Zd Zd Zd Zd Zd
dZd Zd Zd Z	d	 Z
dS )	ALCConfigc                    d| _         d| _        d | _        d| _        d | _        d| _        d| _        d| _        d| _        d| _	        d| _
        d | _        d| _        d | _        d | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        g d| _        g d| _        g d	| _        d
| _        d| _        d| _        d| _        d S )NFpagertextbothTz/var/log/apt/listchanges.log)confirmdebugshow_allheadersverbosereverse	dump_seenselect_frontend
no_networkignore_apt_assumeignore_debian_frontendtitled)	frontendemail_addressemail_formatlatestlogfilter	save_seensincewhich)browserr   xtermr   )r   html)r	   news
changelogs)apt_moder   profiler   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
_bool_opts_value_opts_cfgfile_only_optsquietfrontend_from_env_allowed_email_formats_allowed_which)selfs    '/usr/share/apt-listchanges/ALCConfig.py__init__zALCConfig.__init__!   s     !"


$!&&+#1

 
 


 

 

#
 #
 #
 
!&&6#<    c                 j    t          j                    | _        | j                            |           d S N)configparserConfigParserparserread)r-   files     r.   r6   zALCConfig.readf   s.    "/11r0   c                    | j                             | j                  r| j                             | j                  D ]}d }| j                             | j        |          r|| j        v r!| j                             | j        |          }nX|| j        v s	|| j        v r!| j         	                    | j        |          }n%t          j        t          d          |z             t          | ||           d S d S )Nz%Unknown configuration file option: %s)r5   has_sectionr%   options
has_optionr&   
getbooleanr'   r(   getALCLogwarningr   setattr)r-   optionvalues      r.   exposezALCConfig.exposej   s   ;""4<00 	-+--dl;; 
- 
-;))$,?? !00 $ 6 6t|V L L4#333$BY8Y8Y $f E Eq)P'Q'QTZ'Z[[[ fe,,,,	- 	-
- 
-r0   Nc                 $    t          | ||          S r2   )getattr)r-   rA   defvalues      r.   r=   zALCConfig.getx   s    tVX...r0   c                     |dk    rt           j        }nt           j        }|                    t	          d                     t          j        |           d S )Nr   z<Usage: apt-listchanges [options] {--apt | filename.deb ...}
)sysstdoutstderrwriter   exit)r-   exitcodefhs      r.   usagezALCConfig.usage{   sL    q==BBB
RSSTTTr0   c                     ||v r|S t          j        t          d          ||d                    |          dz             t	          j        d           d S )NzGUnknown argument %(arg)s for option %(opt)s.  Allowed are: %(allowed)s.z, )argoptallowed   )r>   errorr   joinrH   rL   )r-   rQ   rR   rS   s       r.   _check_allowedzALCConfig._check_allowed   sb    '>>Jaabb"%cdii>P>PQQR 	T 	T 	Tr0   c                    | j         s| j        rd S |s|                     d           |D ]}t          j                            |          d         }|dk    r:t          j        t          d          d|iz             t          j
        d           t          j                            |          s:t          j        t          d          d|iz             t          j
        d           t          j        |t          j                  s:t          j        t          d          d|iz             t          j
        d           d S )NrT   z.debz&%(deb)s does not have '.deb' extensiondebz'%(deb)s does not exist or is not a filez%(deb)s is not readable)r$   r   rO   ospathsplitextr>   rU   r   rH   rL   isfileaccessR_OK)r-   debsrY   exts       r.   _check_debszALCConfig._check_debs   s)   = 	DN 	F 	JJqMMM 
	 
	C'""3''*Cf}}QGHHESV<WXXX7>>#&& QHIIUTWLXYYY9S"'** Q899USMIJJJ
	 
	r0   c                 &   	 t          j         |dd          dg dd | j        D             z   d | j        D             z             \  }}nQ# t           j        $ r?}t	          j        t          |                     t          j        d           Y d }~nd }~ww xY w|D ] \  }}|dk    r|| _	        |dk    rd| _
        !| j	        | j
        rd	| _	        nd
| _	        |                                  dt          j        v r't          j        d          | _        d| _        d| _        d\  }}}	|D ]k\  }}|dk    r|                     d           "|dv rd| _        .|dv r|| _        :|dk    r|| _        H|dk    r"|                     ||| j                  | _        p|dv rd| _        ||dv r|}|dv r|}|dv rd}	|dv rd| _        |dv r|| _        |dk    rd| _        |dk    r"|                     ||| j                  | _        |dk    rd| _        |dk    rd| _        |dv r	d| _         |dk    r	d| _!        |dk    r	d| _"        &|d k    r	d| _        5|d!k    r	d| _#        D|d"k    r	d#| _#        S|d$v r	|| _$        `|d%v r|| _%        m| j        d&k    rd | _        | j        d&k    rd | _        | j&        | j'        s|8|	r6t	          j        tQ          d'                     t          j        d           n||	r|| _&        |	| _'        | j&        OtS          |          dk    r5t	          j        tQ          d(                     t          j        d           d | _        | j*        | j'        s|8|	r6t	          j        tQ          d)                     t          j        d           n||	r|| _*        |	| _'        | j
        r.| j        s't          j        d*d+          d,k    rd| _+        d#| _        | ,                    |           |S )-NrT   zvf:s:cah)aptzprofile=helpallz
save_seen=c                 :    g | ]}|                     d d          S )r   -replace.0xs     r.   
<listcomp>z$ALCConfig.getopt.<locals>.<listcomp>   s&    CCCAAIIc3''CCCr0   c                 @    g | ]}|                     d d          dz   S )r   rh   =ri   rk   s     r.   rn   z$ALCConfig.getopt.<locals>.<listcomp>   s+    GGGAIIc3''+GGGr0   z	--profilez--aptTrd   cmdlineAPT_LISTCHANGES_FRONTEND)NNFz--helpr   )z-vz	--verbose)z-fz
--frontendz--email-addressz--email-format)z-cz	--confirmz--sincez--latest)z-az
--show-allz--all)z-hz	--headers)z--save-seenz--save_seenz--dump-seenz--whichz--debugz	--reverse)z-nz--no-networkz--select-frontendz--ignore-apt-assumez--ignore-debian-frontendz--titledz
--untitledFz--logz--filternonez7--since=<version> and --show-all are mutually exclusivez<--since=<version> expects a path to exactly one .deb archivez2--latest=<N> and --show-all are mutually exclusiveDEBIAN_FRONTEND noninteractive)-getoptr&   r'   GetoptErrorr>   rU   strrH   rL   r%   r$   rC   rZ   environgetenvr   r*   r   rO   r   r   rW   r+   r   r
   r   r   r   r,   r   r   r   r   r   r   r   r   r   r   r   r   lenr   r)   rb   )
r-   argvoptlistargserrrR   rQ   r   r   r   s
             r.   rw   zALCConfig.getopt   s
   	$mDHj C& C& C& DC$/CCCCD HGT5EGGGCH 	 	OWdd ! 	 	 	LS"""HQKKKKKKKK	
   	% 	%HCk!!" $ <} )$( 	 &33I&@AADM%)D"*.D'$7!   .	" .	"HCh

1+++#,,, #)))%(""((($($7$7S$B]$^$^!!+++###$$555+++#666!$%%!%	!!!00c4;NOO

	!!!

###..."&+++'+$$---)-&&222.2++
"""$$#!!$$!''!%D>V##!DNZ## X QXYYZZZ(DJ$DM:!4yyA~~Q]^^___!DN[$$ X QSTTUUU8 DK$DMM 	!$"= 	!i)2..2BBBDJ DLs   AA
 
B5BBr2   )__name__
__module____qualname__r/   r6   rC   r=   rO   rW   rb   rw    r0   r.   r   r       s        C= C= C=J  - - -/ / / /      "~ ~ ~ ~ ~r0   r   )	r3   rw   rH   rZ   r>   ALChacksr   r   __all__r   r0   r.   <module>r      s   2             z z z z z z z zx /r0   