
    =he                     V    d dl Z d dlZd dlZd dlmZ g dZddgZd Zd Zd Z	d	 Z
d
 Zy)    N)logcolor)dry_runorderinput_fastq_pathinput_manifestoutput_paththreadssoftwareargsc                     | d   d   j                  dd      }|j                  t        j                   dt        j                          y )NGENERALr   " z--> Manifest check successful!)replaceinfor   SUCCESSENDC)configloggermanifest_paths      C/mounts/lovelace/software/shotgun-workflow/dev/workflow/validate.pyvalidate_manifest_filesr   	   sE    9%&67??BGM
KK8##$$B8==/RS    c                    d| vrq|j                  t        j                   dt        j                          |j                  dt        j                   dt        j                   d       t        d       | d   D ]  }|t        vs|j                  t        j                   dt        j                          |j                  dt        j                   | t        j                   dt        j                   dt        j                   d		       t        d        t        D ]  }|| d   vs|j                  t        j                   dt        j                          |j                  d
t        j                   dt        j                   dt        j                   | t        j                   d	       t        d        | D ]^  }|dv r	| |   D ]  }|t        vs|j                  t        j                   dt        j                          |j                  dt        j                   | t        j                   dt        j                   | t        j                   d		       t        d        t        D ]  }|| |   vs|dk7  s|j                  t        j                   dt        j                          |j                  d
t        j                   | t        j                   dt        j                   | t        j                   d	       t        d        a |j                  t        j                   dt        j                          y )Nr   z--> Config check failed!z,It looks like your config file is missing a z	[GENERAL]z6 section. Please refer to the README.md for more help.   zThe option z! is not a valid config option in z.. Please refer to the README.md for more help.zConfig section z is missing the z5 option. Please refer to the README.md for more help.)r   DEFAULTmodez--> Config check successful!)
errorr   ERRORr   	REFERENCEexitVALID_GENERAL_OPTSVALID_STEP_OPTSr   r   )r   r   optsections       r   validate_config_optionsr&      sz   ''?OPCHDVDVCWW`aianan`o  pf  g  	hQi ((LLHNN++CHMM?STLL;x'9'9&:3%Nopx  qC  qC  pD  DM  NV  N[  N[  M\  \J  K  LG	 !
 "fY''LLHNN++CHMM?STLL?8+=+=*>iVfgogygyfz{~z  AI  AN  AN  @O  OD  E  FG	 " ,,go-LLHNN#33KHMM?![\LL;x/A/A.B3%Vw  yA  yK  yK  xL  MT  LU  V^  Vc  Vc  Ud  dR  "S  TG	 '
 'fWo-f}'77OPXP]P]%_`x7I7I6J7)T\TaTaSbbrs{  tF  tF  sG  HK  GL  MU  MZ  MZ  L[  [P  &Q  RQ '   KK8##$$@PQr   c                 H   | d   d   }t         j                  j                  |j                  dd            rr|j	                  t
        j                   dt
        j                          |j	                  dt
        j                   | t
        j                   d       t        d       | d   d	   }t         j                  j                  |j                  dd            sr|j	                  t
        j                   dt
        j                          |j	                  d
t
        j                   | t
        j                   d       t        d       | d   d   }t         j                  j                  |j                  dd            sr|j	                  t
        j                   dt
        j                          |j	                  dt
        j                   | t
        j                   d       t        d       | d   d   }|dvrr|j	                  t
        j                   dt
        j                          |j	                  dt
        j                   | t
        j                   d       t        d       | d   d   j                         D ]  }|| vs|j	                  t
        j                   dt
        j                          |j	                  dt
        j                   | t
        j                   dt
        j                   dt
        j                   d	       t        d        | d   d   j                         D ]  }| |   d   |vs| |   d   }|j	                  t
        j                   dt
        j                          |j	                  dt
        j                   | t
        j                   dt
        j                   | t
        j                   d	       t        d        |j                  t
        j                   dt
        j                          y )Nr   r   r   r   z--> Argument check failed!zOutput path z1 already exists. Please double check your config.r   r   zInput path z1 does not exist. Please double check your config.r   zInput manifest r   )TFTrueFalsez,'dry_run' should be a True/False value, not z". Please double check your config.r   zStep section z is in your z@ option, but is not configured. Please double check your config.r
   z	Software z in section z/ is not valid. Please double check your config.z--> Argument check successful!)ospathexistsr   r   r   r   r   r    r!   splitr   r   )	r   software_dictionaryr   r   r   r   r   r%   failed_softwares	            r   validate_argsr0   2   s   #M2K	ww~~k))#b12''A(--QR|H$6$6#7}X]]O  TE  F  	GQ i();<77>>*223r:;''A(--QR{8#5#5"67G6H  XI  J  	KQ I&'78N77>>.00R89''A(--QRx'9'9&:>:J8==/  ZK  L  	MQ Y	*G44''A(--QRCHDVDVCWX_W`aianan`o  pR  S  	TQ )$W-335& LLHNN++Ehmm_UVLL=););(<WIhmm_T`aiasas`tty  {C  {H  {H  zI  II  J  KG	 6 )$W-335'?:&.AA$Woj9OLLHNN++Ehmm_UVLL9X%7%7$88I(--Xdemewewdx  zA  yB  CK  CP  CP  BQ  Q@  A  BG 6 KK8##$$B8==/RSr   c                 L   |D ]  }| d|v s|j                  t        j                   dt        j                          |j                  dt        j                   | t        j                   dt        j                   |  t        j                   d	       t        d        y )N z--> Additional Argument error!z"It looks like you are including a z arguement in your config step z?. This arguement is generated, and you don't need to supply it.r   )r   r   r   r   r    r!   )stepnameunneeded_argsadditional_step_argsr   args        r   validate_additional_argsr7   a   s    U!9,,LLHNN++I(--YZLL=h>P>P=QRUQVW_WdWdVe  fE  FN  FX  FX  EY  Zb  Yc  dl  dq  dq  cr  rq  r  sG	 r   c                    | D ]  }t        j                  |j                        d k7  r&|j                  t        j
                   dt        j                          |j                  dt        j                   |j                   t        j                   d       t        d        |j                  t        j                   dt        j                          y )Nz--> Environment check failed!zIt looks like zL not in your path. You might need to load a module, or install the software.r   z!--> Environment check successful!)shutilwhichsoftware_namer   r   r   r   r    r!   r   r   )software_stepsr   steps      r   validate_envr>   h   s    <<**+t3LLHNN++HXYLL>(*<*<)=d>P>P=QRZR_R_Q`  am  n  oG  KK8##$$Ehmm_UVr   )r9   r*   csvworkflow.logr   r"   r#   r   r&   r0   r7   r>    r   r   <module>rB      s?      ! j f%	!RF-T^Wr   