
    e6+                     @    d Z ddlZddlZddlmZ  G d d          ZdS )z-useful functions when we don't know the impna    N)Rexerc                   n    e Zd ZddZd ZddZd Zd Zd	 Zd
 Z	d Z
ddZd ZddZddZddZd ZdS )AbovoNFc                    || _         d | _        i | _        t          |           | _        i | _        |                                  |                                  |                                  | 	                    d           | 
                                 |                                 D ]}| 	                    |           |                                  || _        |                                  d S )Ntop)e
given_fufidirsr   rexer	constantsread_constantsset_namespacesset_system_constantsset_dirs
set_stagesforked_dirnas
set_learst
do_verboseset_resigndirs)selfr   r   kinds       !/home/ernad/ernad/python/abovo.py__init__zAbovo.__init__   s    	4[[
!!###e&&(( 	  	 DMM$$    c                 Z   g | _         i | _        | j        D ]-}|dd         dk    r|d         }|dd          }|| j        |<   .t          | j                  D ]}| j                             |           | j                                        }|D ]}|| j        ||         <   | j        |= d S )Nr      stages_	   )stagesstager   sortedappendcopy)r   constantnumbernamestages_copys        r   r   zAbovo.set_stages   s    
  	& 	&H!}	))a[FABB<D "&DJvTZ(( 	% 	%FKt$$$$joo''! 	# 	#F.4DJ{6*+
6""	# 	#r   xslt/constants.xslt.xmlc                    d}dt           j        v rt           j        d         }|| _        |dz   | _        | j        dz   |z   }t           j                            |          st          d|z             t          |d          }|                                }i }|D ]Y}| j	        j
        d                             |          }|*|                    d          }	|                    d	          }
|
||	<   Z|d
k    r|| _        |S )Nz/home/ernadHOMEz/ernad/zI can't with with no ris_constants_line      r(   )osenvironhome_dirnase_dirpathisfile	Exceptionopen	readlinesr   rsmatchgroupr   )r   finar2   constants_fuficonstants_fileconstants_linesr   constants_linematchedvariable_attrselect_attrs              r   r   zAbovo.read_constants/   s    RZz&)H  8+,t3w~~n-- 	F3nDEEEnc22(2244	- 	3 	3Njm$78>>~NNG#MM!,,M!--**K'2Im$$,,,&DNr   c                     i | _         | j        d         | j         d<   | j        d         | j         d<   | j        d         | j        d         d| _        | j         S )z*set the namespaces, hardcodes the prefixesns_amfans_ernadr   )rF   r   )nsmapr   xpspaces)r   s    r   r   zAbovo.set_namespacesH   sW    
.2
3.4
3"nX6"nZ8: :zr   c                     | j         }i }i }|D ]R}|                    d          r||         ||dd          <   |                    d          r||         ||dd          <   S|| _        || _        d S )Next_   ns_   )r   
startswithextns)r   r   rP   rQ   r$   s        r   r   zAbovo.set_system_constantsQ   s    N	! 	7 	7H""6** 8$-h$7HQRRL!""5)) 7#,X#68ABB< r   c                     g }| j         D ]S}d|vr|                    d          r|                    d          }|d         }||vr|                    |           T|S )zby implementation directoriesdir_r   r   )r   rO   splitr"   )r   
bymip_dirsr&   partsstarts        r   r   zAbovo.forked_dirnas]   s}    
N 	) 	)DT!!u%% JJv&&E!HEJ&&!!%(((r   c                    g }| j         D ]5}|                    d          s|                    |dd                    6|| _        g }| j         D ]5}|                    d          s|                    |dd                    6|| _        dS )z#learn stages for issues and reportslearist_   Nlearest_)r   rO   r"   learistslearests)r   r\   r&   r]   s       r   r   zAbovo.set_learstk   s    N 	& 	&D??:.. OODH%%%% N 	& 	&D??:.. OODH%%%% tr   c                     | j         }i }|D ]W}|dd         |dz   k    r|dd          }| j        2||         }| j        dz   |z   ||<   |                    d          r|||<   X|| j        |<   d S )Nr      dirr   r+   )r   r   r3   rO   r
   )r   r   r   r
   r$   r&   targets          r   r   zAbovo.set_dirs{   s    N	! 		( 		(H!}u,,ABB<Dv!"8,!]S069T
$$S)) (!'DJ	$r   c                     | j         j        }| j        }| j        D ]E}|dd         dk    r|dd         }| j         #||         }| j         j        d         dz   |z   ||<   F|S )zsets the blatt dirsr   r_   blatt_
   Nblattr+   )r   r
   r   )r   r   r
   r   r$   r&   ra   s          r   set_blatt_dirszAbovo.set_blatt_dirs   s|    v{N	 	A 	AH!}((BCC=Dv!"8,!V[1C7&@T
r   c                     | j         }i }|D ]J}|dd         dk    r|dd          }|| j        d         vrt          d| d          ||         }|||<   K|| j        d<   d S )Nr   r_   resignr   r   zYour resigndir z must be a topdir)r   r
   r6   )r   r   r
   r$   r&   ra   s         r   r   zAbovo.set_resigndirs   s    N	! 	  	 H!}((ABB<D49U+++ I$ I I IJJJx(FDJJ"	(r   c                 ,   t          |t                    r#|                     |          r|| j        _        |S t          |          dk    rN|d         }d|v rB|d|                    d                   }|#|                     |          r|| j        _        |S d}dt          j        v rt          j        d         }|Ct          |          dk    r.|d         }t          j	        
                    |          r|| _        |S |t          |          dk    r"t          d           t          j                     |d         }|                     |          r|| j        _        |S d|v r4|d|                    d                   }|                     |          r|S |                     ||          }|                     |          r|S t          j        d         d	z   |z   d
z   }	t          j	        
                    |	          s"t          d           t          j                     t          j	                            |	          }	|                     |	|          }|                     |          r|S t          d           t          j                     dS )z/we guess the impna from the first argument onlyr.   r   -NIMPNAzAbovo can't see your impna.)r   r*   z/staff/z.amf.xmlzabovo: I can't get the impna.)
isinstancestris_impna_validr   impnalenindexr0   r1   r4   r5   r	   printsysexitimpna_from_fufirealpath)
r   bipasr   r   hint
impna_hint	impna_envpart_before_dashcand_impna_from_file
staff_fufis
             r   guess_impnazAbovo.guess_impna   s    eS!! 	d&9&9%&@&@ 	 DFLLu::??8Dd{{!"24::c??"23
)**:66 *'1))	bj  
7+I  5zzA~~Qx7>>$'' +&*DO=CJJ!OO/000HJJJQxt$$ 	DFLK$;;#$4TZZ__$45""#344 (''  $33D?I  4  K  K344 	(''Z')3d:ZG
w~~j)) 	/000HJJJW%%j11
#33J?I  4  K  K344 	(''-...




r   c                     t          |          dk    rdS | j        d         d         }|dz   |z   }t          j                            |          r|rt          d|z              dS |rt          |dz              dS )	Nr   Fr   styler+   zabovo sees Tz can't be seen by abovo)rp   r
   r0   r4   isdirrr   )r   stringr   	style_dircand_dirs        r   rn   zAbovo.is_impna_valid   s    v;;!5Ie$W-	s?V+7=="" 	 1mi/0004 	8(66777ur   c                    t           j                            |          }|rt          d|z              |t          |dz              d S t           j                            |          s| j        rt          d|z              d S || _        |                    | j                  sS|	                    d          D ]=}| j
                            |          r!|d |                    d                   }|c S >|rt          d|z              | j        d         D ]X}| j        d         |         }|rt          |           |                    |dz   d          }|rt          |           ||k    r nY|rt          d	|z              |                    d          }	|d
|	         }
|rt          d|
z              |                     |
          r|
S d S )Nzabovo tries from fufi z is not a fufizabovo: I don't see fufi r+   rj   zI have a fufi r    zrumpfi r   zThe cand_impna is )r0   r4   abspathrr   r5   r   r	   rO   r3   rT   r   
is_repcoderq   r
   replacefindrn   )r   rx   r   fufifolderr{   	top_dirnatop_fudirumpfipos_of_slash
cand_impnas              r   ru   zAbovo.impna_from_fufi   s   wt$$ 	3*T1222<$))***4w~~d## 	 90478884t}-- 	,**S// , ,:((00 ,'-.@v||C/@/@.@'A$++++,  	+"T)*** 5) 	 	Iy'	2H  h \\(S."55F f~~   	&)f$%%%{{3''AlN+
  	5&3444z** 		 	r   c                 L    d}t           j                            |          rdS dS )Nz/etc/wpa_supplicant.confTF)r0   r4   r5   )r   	test_fufis     r   
is_testingzAbovo.is_testing"  s'    .	7>>)$$ 	4ur   )NF)r(   )N)F)__name__
__module____qualname__r   r   r   r   r   r   r   r   rf   r   r~   rn   ru   r    r   r   r   r      s
          &# # #(   2  
 
 
          # # #A A A AH   + + + +Z    r   r   )__doc__r0   rs   r   r   r   r   r   r   <module>r      sk    3 3 				 



      _ _ _ _ _ _ _ _ _ _r   