
    =	fl<                     N   d dl mZ dZdZdZdZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dl d dl d dlmZmZmZmZmZmZ d dl d d	lmZ ed
ddfdez  d
ddfej0                  ej2                  dej0                  ej4                  ej6                  ej8                  ej:                  ej<                  dddddgZe Z!dZ"ejF                  jI                  d      Z%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-d
Z.d Z/dqdZ0drdZ1d Z2d Z3d Z4d  Z5d! Z6d" Z7e8js                  e       	  ejt                  eeeeee e;fe<e=e>fd      Z?e?j                  d#g d$d%      \  ZAZBZCZ!ZDZE ej                         d k(  r$e8j                  ed& eKeL              e1d'        ej                  d(      re8j                  d)       eAD ]b  \  ZOZPeOd*v r e0        eOd+k(  r	 e0d,       !eOd-k(  r	 e0d.       /eOd/v rePj                         ZRDeOd0k(  r eSed&1        e1d d       ]eOd2v r8ePj                         j                         ZUe8j                  eU      r e0        eOd3v re8j                  d)       eOd4k(  r$eVZ!e8j                  d5        e0         e1d d       eOd6k(  rePZ"eOd7k(  rePZ%eOd8k(  rdZ&eOd9v r#e8j                  d:        e0         e1d d       eOd;k(  rdZ' eOd<k(  rdZ()eOd=k(  rdZ,2eOd>k(  r#e8j                  d?        e0         e1d d       ZeOd@k(  sadZ-e e(se'se,sde?_X        e?j                          e(se're?j                  dAd       ne?j                  dBd       ejF                  j                  dCe\j                  z        Z^ejF                  j                  e^      r	  ej                  e^       e8j                  e^       e8j                  e8j                         e8j                  dDe8j                  e^      z         e8j                  d
       	  egd        ehei      Zj ej                         se8j                  dE        e1d'       elj                  dFdGdH      Zne8j                  dIenz          e5       ZoeodHk(  re8j                  dJ        e1d'       epj                  dBdKeo       e'du re8j                  dLeoz         ne(du r ej                  eneo      se8j                  dM       ndNeoz  ZIejj                         rd'ZtndOZteDdPk(  r ej                         se8j                  dQez          e1d'       	 d dlv d dRlwmxZx  ezej                        Z|e}j                  e| edT      e| edU              exdd
d d eteI      Zej                          e8j                  dV       e|j                          n ej                         se8j                  dWez          e1d'       	 d dXlmzZzmZ d dYlmZ  ezej                        Z| edeteI      Zej                          e8j                  dV       e|j                          nje&du r ej                  eneo      rXe,re8j                  d[eoz          ej                  d\eoz  d]d^gd]      \  ZZered^k(  r8e8j                  d_eoz          e1d d       ne8j                  dM        e1d d       ejj                         se8j                  d`        e1d         ej                         s e1d'       e"re"daeodbZe"daeodcZe"Z%n}e8j                  dd       e8j                  deej                  j!                         j                         j#                         z         ejF                  j                  e%      se8j                  e8j                  dfe%z                ee8j                  dg            Zedhk(  re8j                  di        e1d'       nejF                  j                  e      s,e8j                  e8j                  djez                e1d'       n[ ej&                  eej(                  ej*                  z        s,e8j                  e8j                  dkez                e1d'       neZ% e7e%eo      \  ZZ ej,                         Zej1                  ee      \  ZZeek7  r1eeeefv r e6e      s" e1d'       ne8j                  e        e1d'        ej>                         Z. ej@                  e%       dlez  Ze8j                  dmez          ejD                  e      Z ej@                  e.       ed k(  r!e8j                  e8j                  dn             n#e8j                  e8j                  doez                egd       e?jI                           e/        y# ej                  $ r-ZGe8j                  eGj                          e0        Y dZG[GdZG[Gww xY w# ea$ r Y kw xY w# ey$ r e8j                  dS        e1d'       Y w xY w# ey$ r e8j                  dZ        e1d'       Y mw xY w# e$ r3 e.r ej@                  e.       e,se8j                  dp        e1d'       Y yw xY w)s    )print_functionz1.0zHPLIP upgrade latest versionz
hp-upgradez-HPLIP installer to upgrade to latest version.N)*)utilstuimoduleos_utilsservices
validation)input nameTzUsage: %s [OPTIONS]summary)zRun in interactive mode:z-i or --interactive (Default)optionF)zCheck for update and notify:--notifyr   F)zCheck only available version:--checkr   F)z2Specify the path to the .run file on local system:z-p<path>r   F)z Download HPLIP package location:z'-d<path> (default location ~/Downloads)r   F)zIOverride existing HPLIP installation even if latest vesrion is installed:-or   Fz~/DownloadsFz+http://hplip.sourceforge.net/hplip_web.confz@https://developers.hp.com/hp-linux-imaging-and-printing/gethplipz1http://sourceforge.net/projects/hplip/files/hplipc                  `    t         rt        j                  d       	 	 	 y # t        $ r Y y w xY w)Nz'

Please close this terminal manually. )DONOT_CLOSE_TERMINALloginfoKeyboardInterrupt     /usr/share/hplip/upgrade.pyhold_terminalr   G   s;    <=	  
 ! 		s   ! 	--c                     | dk(  rt        j                  t        t               t        j                  t
        | t        t        t               t                t        j                  d       y )Ntextr   )
r   	log_title	__title____version__format_textUSAGE__mod__r   sysexit)typs    r   usager'   Q   s=    
f}	;/	eS)WkBOHHQKr   c                     t         s6t        s0t        s*t        j	                  d       t        j	                  d       t        d       t        j                          t                t        j                  |        y )Nr   zDone.T)NOTIFYCHECKING_ONLYIS_QUIET_MODEr   r   change_spinner_statemodunlockInstancer   r$   r%   )codewaitTerminals     r   
clean_exitr1   Y   sD    -OHHTNr   c                    d}t         j                  j                  |       s|S 	 t        | d      }|j                         }|j                         D ]9  }d|v s|j                  |      r |j                  |      j                  d      } n t
        j                  d|z         |S # t        $ r t
        j                  d| z         |cY S w xY w)N0.0.0rz7Failed to get hplip version since %s file is not found.z<title>HP Developers Portalr   zLatest HPLIP version = %s.)ospathexistsopenIOErrorr   errorread
splitlinessearchgroupdebug)hplip_version_filepatverfpdatalines         r   parse_HPLIP_versionrF   c   s    
C77>>,-
#S) 779D! (D0zz$jj&,,Q/	 II*S01J  		KL^^_
s   B' '#CCc                      d} t        j                  t              \  }}|dk(  r3t        |      }|j	                  ddd      } t        j                  |       | S )Nr3   r   HPLIPLatest_version)r   download_from_network#HPLIP_VERSION_INFO_SOURCEFORGE_SITE
ConfigBasegetr5   unlink)HPLIP_latest_verstsHPLIP_Ver_filehplip_version_confs       r   "get_hplip_version_from_sourceforgerS   x   sZ      556YZC
ax'7-11':J7S
		.!r   c                      d} t        j                  d      }t        j                  t              \  }}|dk(  r!t        ||      } t        j                  |       | S )Nr3   z\d\.\d\d\.\d|\d\dr   )recompiler   rJ   HPLIP_WEB_SITErF   r5   rN   )rO   rA   rP   rQ   s       r   &get_hplip_version_from_hplipopensourcerX      sR    
**)
*C55nEC
ax.~sC
		.!r   c                  8    t               } | dk(  r
t               } | S )Nr3   )rX   rS   )rO   s    r   get_latest_hplip_versionrZ      s"    =?7"=?r   c                     t         j                  t         j                  |              t        j                  dddgd      \  }}|r|dk(  ryy)NzKDo you want continue without Digital Signature verification (y=yes, n=no*):ynFT)r   r:   boldr   enter_choice)msgokchoices      r   #digital_signature_fail_confirmationrc      sF    IIchhsm  !nqtuxpyz}~IBv3r   c                 L   t         d|d|d}| d|d}t        j                  d|z         t        j                  ||d      \  }}t        j                  d       t
        j                  j                  |      st        j                  d|z         yt        j                  d	|z         |d
z   }|d
z   }t        j                  ||      \  }}t        j                  d       t
        j                  j                  |      st        j                  d|z         |dfS ||fS )N//hplip-.runz0Downloading hplip-%s.run file..... Please wait. Tr   zFailed to download %s file.)r   r   z4Downloading hplip-%s.run.asc file..... Please wait. z.asc)	HPLIP_PACKAGE_SITEr   r   r   rJ   r5   r6   r7   r:   )path_to_downloadhplip_versionurlhplip_packagerP   download_filehplip_digsigs          r   download_hplip_installerro      s    1=-PC(8-HMHH?MO33CMCHHRL77>>-(		/=>HHCMQS!&(L
v+C33CFCHHRL77>>,'		/=>b  ,&&r   zhl:gniup:d:of:sw)notifycheckhelpz	help-restzhelp-manz	help-descinteractiveguizlang=zlogging=r?   )handle_device_printer    HPLIP_DEBUGr?   )z-hz--helpz--help-restrestz
--help-manman)z-qz--langz--help-desc)end)z-lz	--logging)z-gz--debugz-nz*NON_INTERACTIVE mode is not yet supported.z-pz-dr   )z-uz--guizGUI is not yet supported.r   r   z-sz-fz%Option from file is not yet supportedz-wrq   upgradez%s/hp-upgrade.logzUpgrade log saved in: %sz8Either Internet is not working or Wget is not installed.hplipversionr3   z%HPLIP previous installed version =%s.z&Failed to get latest version of HPLIP.latest_available_versionzAvailable HPLIP version =%s.z-Latest version of HPLIP is already installed.z(Latest version of HPLIP-%s is available.   qt3z5%s requires GUI support. Is Qt3 Installed?.. Exiting.)UpgradeFormz-Unable to load Qt3 support. Is it installed? zlastWindowClosed()zquit()zStarting GUI loop...z6%s requires GUI support . Is Qt4 installed?.. Exiting.)QApplicationQMessageBox)UpgradeDialogz,Unable to load Qt4 support. Is it installed?z'Newer version of HPLIP-%s is available.z9Press 'y' to continue to upgrade HPLIP-%s (y=yes*, n=no):r\   r]   z1Recommended to install latest version of HPLIP-%szsPlease install HPLIP manually as mentioned in 'http://hplipopensource.com/hplip-web/install/manual/index.html' siterf   rg   z.run.ascz)
 Calling download_hplip_installer(...) 
z
 System Time : %s 
zNo such file or directory%sz7Please specify the path to download. Press 'q' to quit:qzUser selected to quit.z,Specified path does not exist. Exiting...%s
z;Specified path do not have enough permissions Exiting...%s
zsh %szUpgrading  %szUpgrade is Completed.z%Upgrade Failed or Skipped. status: %sz	User exit)r   )r   T)
__future__r   r    r   r#   __doc__getoptr5   r$   rU   timedatetimebase.gbase.stringsbaser   r   r   r   r	   r
   installer.core_installbase.sixext.movesr   USAGE_SPACE
USAGE_MODEUSAGE_OPTIONS
USAGE_HELPUSAGE_LOGGING1USAGE_LOGGING2USAGE_LOGGING3r"   INTERACTIVE_MODEmodeEXISTING_PACKAGE_PATHr6   
expanduserPATH_TO_DOWNLOAD_INSTALLERFORCE_INSTALLr*   r)   rK   rW   rh   r+   r   CURRENT_WORKING_DIRr   r'   r1   rF   rS   rX   rZ   rc   ro   r   
set_moduleModuleGUI_MODEUI_TOOLKIT_QT3UI_TOOLKIT_QT4UI_TOOLKIT_QT5r-   parseStdOptsopts
device_uriprinter_name
ui_toolkitlocGetoptErrorer:   r`   geteuidqueryStringERROR_RUNNING_AS_ROOTgetenv	set_leveloalowerlanguageprintstrip	log_levelNON_INTERACTIVE_MODEr   quiet	showTitlelockInstancenormpathpropuser_dirlog_filer7   removeOSErrorset_logfile	set_whereLOG_TO_CONSOLE_AND_FILEr?   r^   r,   CoreInstall
MODE_CHECKcorecheck_network_connectionsys_confrM   installed_versionrO   	user_confsetIs_HPLIP_older_versionis_auto_installer_supportdistro_typecanEnterGUIModeqtui.upgradeformr   ImportErrorr   argvappQObjectconnectSIGNALSLOTdialogshow	exec_loopcanEnterGUIMode4PyQt4.QtGuir   ui4.upgradedialogr   exec_r_   ra   rb   close_running_hp_processesdownloaded_filedigsig_filenow	isoformatdownload_pathaccessR_OKW_OKGPG_Verificationgpg_objvalidate
digsig_sts	error_strERROR_SUCCESSERROR_UNABLE_TO_RECV_KEYSERROR_DIGITAL_SIGN_NOT_FOUNDERROR_DIGITAL_SIGN_BADgetcwdchdircmdexecuterP   r.   r   r   r   r   <module>r      sH
  , &*	

9 + * *   C C $ # 2vt	$
'
)2y$	?							W												u33U5I5I	C	C	Z	g	j	
&  77--m< %R #RH   *
'4 w 
&--K%%x0#^^DdLC
  2  5g+0   2 :D*lD*c 2::<1II+.C"DEFqM299]MM' 7$DAq	
m	f	
l	e	
	779	
m	g31U	
!	!GGIOO%	}}Y'G	
	g	
d#=>1U	
d	
d#$"	
d	
o	,-1e	
i	
j	
d	
d891e	
d#o7$r mMCIMMO	]WT"Yt$77/=>77>>(		(   c)) * 		
$sxx'9
9 : 		"[
#D)5))+		LM1ll79W=II57HHI/17"		:;1MM)67GH		01AAB	4+u++,=?OPIIEF ==MMC--/U",u,,.IIUX__`qM"$: #388,V,@%A3XW$T2a+sC		01 .u--/IIVY``aqM"E?
 #388,&t[#>		01		 E!+u++,=?OP HHFGWWX,C,,-hiy-y|  AD  |E  FI  J	6Vs]HHPQaabq%(HI1U# --/HH  K  LqM2x224qM 1FHXYO1FHXYK)>&IICDII.x/@/@/D/D/F/K/K/M/W/W/YYZ77>>"<=		#((#@A[#[\] %chh/h&i j C'HH56qM6IIchh'VWd'defqM"="''BGG2CDIIchh'efs'stuqM1>.+CD^`p+q(O[ .*--/ ' 0 0+ N
I&8:VXnoo:9EqM		)$1 (biik+, (		/O34hs#$%!8HHSXX567HHSXXEcIJKO[  IIaee	GGd  ` # "IIMNqM"* # "IILMqM"p  $%		+qMs   ;g !h D*i, ?h" 
B"i, -i ;Oi, h&"hhhh"i i, ii, i)%i, (i))i, ,5j$#j$