
    e6+                     8    d Z ddlZddlZddlmZ  G d d      Zy)z-useful functions when we don't know the impna    N)Rexerc                   l    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y)AbovoNc                    || _         d | _        i | _        t        |       | _        i | _        | j                          | j                          | j                          | j                  d       | j                          | j                         D ]  }| j                  |        | j                          || _        | j                          y )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                 p   g | _         i | _        | j                  D ]$  }|dd dk7  r|d   }|dd  }|| j                  |<   & t        | j                        D ]  }| j                   j	                          | j                  j                         }|D ]!  }|| j                  ||   <   | j                  |= # y )Nr      stages_	   )stagesstager   sortedappendcopy)r   constantnumbernamestages_copys        r   r   zAbovo.set_stages   s    
  	&H!}	)a[FAB<D "&DJJv	& TZZ( 	%FKKt$	%jjoo'! 	#F.4DJJ{6*+

6"	#r   c                    d}dt         j                  v rt         j                  d   }|| _        |dz   | _        | j                  dz   |z   }t         j                  j                  |      st        d|z         t        |d      }|j                         }i }|D ]T  }| j                  j                  d   j                  |      }|.|j                  d      }	|j                  d	      }
|
||	<   V |d
k(  r|| _        |S )Nz/home/ernadHOMEz/ernad/zI can't with with no ris_constants_line      xslt/constants.xslt.xml)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     RZZzz&)H  8+,t3ww~~n-3nDEEnc2(224	- 	3Njjmm$78>>~NG#MM!,M!--*K'2Im$	3 ,,&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   s`    
..2

3..4

3"nnX6"nnZ8:zzr   c                     | j                   }i }i }|D ];  }|j                  d      r||   ||dd  <   |j                  d      s1||   ||dd  <   = || _        || _        y )Next_   ns_   )r   
startswithextns)r   r   rP   rQ   r$   s        r   r   zAbovo.set_system_constantsQ   sz    NN	! 	7H""6*$-h$7HQRL!""5)#,X#68AB< 		7
 r   c                     g }| j                   D ]E  }d|vr|j                  d      r|j                  d      }|d   }||vs5|j                  |       G |S )zby implementation directoriesdir_r   r   )r   rO   splitr"   )r   
bymip_dirsr&   partsstarts        r   r   zAbovo.forked_dirnas]   si    
NN 	)DT!u%JJv&E!HEJ&!!%(	) r   c                    g }| j                   D ](  }|j                  d      s|j                  |dd        * || _        g }| j                   D ](  }|j                  d      s|j                  |dd        * || _        y)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    NN 	&D??:.OODH%	& !NN 	&D??:.OODH%	& !r   c                     | j                   }i }|D ]Q  }|dd |dz   k7  r|dd  }| j                  !||   }| j                  dz   |z   ||<   |j                  d      sM|||<   S || j                  |<   y )Nr      dirr   r*   )r   r   r3   rO   r
   )r   r   r   r
   r$   r&   targets          r   r   zAbovo.set_dirs{   s    NN	! 		(H!}u,AB<Dvv!"8,!]]S069T
$$S)!'DJ		( 		$r   c                     | j                   j                  }| j                  }| j                  D ]D  }|dd dk7  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    vv{{NN	 	AH!}(BC=Dvv!"8,!VV[[1C7&@T
	A r   c                     | j                   }i }|D ]:  }|dd dk7  r|dd  }|| j                  d   vrt        d| d      ||   }|||<   < || j                  d<   y )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    NN	! 	 H!}(AB<D499U++/$7H IJJx(FDJ	  #		(r   c                    t        |t              r$| j                  |      r|| j                  _        |S t        |      dk(  rC|d   }d|v r:|d|j                  d       }|$| j                  |      r|| j                  _        |S d}dt        j                  v rt        j                  d   }|;t        |      dkD  r+|d   }t        j                  j                  |      r|| _        |S |t        |      dk(  rt        d       t        j                          |d   }| j                  |      r|| j                  _        |S d|v r'|d|j                  d       }| j                  |      r|S | j                  ||      }| j                  |      r|S t        j                  d   d	z   |z   d
z   }	t        j                  j                  |	      st        d       t        j                          t        j                  j!                  |	      }	| j                  |	|      }| j                  |      r|S t        d       t        j                          y)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%&@ DFFLLu:?8Dd{!"24::c?3
)**:6'1))	bjj 

7+I  5zA~Qx77>>$'&*DO=CJ!O/0HHJQxt$DFFLK$;#$4TZZ_5""#34''  $33D?I  4  K34''ZZ')3d:ZG
ww~~j)/0HHJWW%%j1
#33J?I  4  K34''-.
r   c                     t        |      dk(  ry| j                  d   d   }|dz   |z   }t        j                  j	                  |      r|rt        d|z          y|rt        |dz          y)	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   si    v;!IIe$W-	s?V+77=="mi/0(667r   c                 8   t         j                  j                  |      }|rt        d|z          |t        |dz          y t         j                  j	                  |      s| j
                  rt        d|z          y || _        |j                  | j                        sI|j                  d      D ]5  }| j                  j                  |      s|d |j                  d       }|c S  |rt        d|z          | j                  d   D ]J  }| j                  d   |   }|rt        |       |j                  |dz   d      }|rt        |       ||k7  sJ n |rt        d	z          j                  d      }	|d
|	 }
|rt        d|
z          | j!                  |
      r|
S y )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   wwt$*T12<$))*ww~~d#0478t}}-**S/ ,::((0'-.@v||C/@'A$++, "T)* 5) 	Iyy'	2Hh \\(S."5Ff~	 )f$%{{3'Al+
 &34z* +r   c                 H    d}t         j                  j                  |      ryy)Nz/etc/wpa_supplicant.confTF)r0   r4   r5   )r   	test_fufis     r   
is_testingzAbovo.is_testing"  s    .	77>>)$r   )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      sK    &#(2
 #AH+Zr   r   )__doc__r0   rs   r   r   r   r   r   r   <module>r      s    3 	 
 _ _r   