{cx=ddlmZmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z e jdk\rdZndZeej"dd eZd Zd Zd ZGd deZy))print_functionabsolute_importN)SqliteDatabase3gettextugettextzcommand-not-foundT)fallbackc d}tt|dzDcgc] }|d|||df}}|Dcgc]\}}|s ||ddz}}}|Dcgc](\}}t|dkDs||dz|dz|ddz*}}}|Dcgc]\}}|D]}|s||z|ddz} }}}|Dcgc]\}}|D] }||z|z } }}}t||z| z| zScc}wcc}}wcc}}wcc}}}wcc}}}w)zw return a set with spelling1 distance alternative spellings based on http://norvig.com/spell-correct.html z&abcdefghijklmnopqrstuvwxyz-_0123456789Nr)rangelenset) wordalphabetisabdeletes transposescreplacesinsertss A/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py similar_wordsrs( 8H',SY]';>& !bii&@$V,DG#$:; ;*_MMO cg}|t|cxkr|jks|S|St|D]3}|j|}|D]\}}}|j ||||f5|S)z try to correct the spelling )rmax_lenr get_packagesappend) r7rmin_lenpossible_alternativeswpackagespackagevercomps rspelling_suggestionsz$CommandNotFound.spelling_suggestionsUs "3t94 4( (5( (t$ FA((+H(0 F$#t%,,a$-DE F F%$r:c8|jj|SN)r3lookupr7commands rr=zCommandNotFound.get_packages`sww~~g&&r:clg}g}tjj|js&t j d|jzggfS t tj5}tj|jddd|g|d}dddt j dz tj|}|D]]}|d |k(r*|j|d |d |jd f5|j|d |d |jd f_||fS#1swYxYw#tj$r&}t j d|zggfcYd}~Sd}~wwxYw#tj$r&}t j d |zggfcYd}~Sd}~wwxYw) Nz %s not existsz advise-snapz --format=jsonz --commandT)stderruniversal_newlinesz.calling snap advice-snap returned an error: %szgot %s from snap advise-snapzcannot decoding json: %sCommandSnapVersion)r-r.r/snap_cmdloggingdebugopendevnull subprocess check_outputCalledProcessErrorjsonloadsJSONDecodeErrorr>get) r7rK exact_resultmispell_resultrVoutputesnapssnaps r get_snapszCommandNotFound.get_snapscs ww~~dmm, MM/DMM9 :r6M bjj! -W#00]]M? '+"'+ - -  4v=> JJv&E \DI')##T&\4 ?DHHYDW$XY%%tIV dhhyFY&Z[  \ ^++) - - ,,  MMJQN Or6M  ##  MM4q8 9r6M sTD>.(D2D>7E:2D;7D>>E7E2,E72E7:F3 F.(F3.F3c< ttjjtjdddf5}|Dcgc]&}|j dk7s|j (c}cdddScc}w#1swYyxYw#t $rgcYSwxYw)NHOMEz/rootz.command-not-found.blacklist)rUr-sepjoingetenvstripIOError)r7 blacklistlines r getBlacklistzCommandNotFound.getBlacklists bffkk299VW#=?]"^_` Rdm1:Qdjjlb>P Q R RQ R R I sG>B BA<A<0B2 B <BB B B BBcL ddl}ddlm}|jt g} |dd}|D]>}|jr|jr|jD]}|j|@|S#tt f$rgcYSwxYw#t$r |d}YpwxYw)Nr) SourcesListFT) withMatcherdeb822)rr) apt_pkgaptsources.sourceslistrqinit SystemError ImportErrorr TypeErrordisabledinvalidcompsadd)r7rtrqr,sourcessource components rr+zCommandNotFound._getSourcesLists   : LLN2w  5!eDAG 0F??6>>!'0I $$Y/0 0[) I  5!e4G 5s"A7 B7B  B B#"B#c8dtjvry|rtd}tjdk\rt |}d}n[|}tj jr9t|tr)|jtj j}|jtdk(r_|jdk(rd}nd}|d |}td |ztj tj |j#d yyy)N COMMAND_NOT_FOUND_INSTALL_PROMPTz Do you want to install it? (N/y)rc|SrH)xs rz0CommandNotFound.install_prompt..sar:yrrgsudo z apt install z%sfileF)shell)r-environ_sysversioninputstdinencoding isinstancestrdecodelowerr6printstdoutrWcallsplit)r7 package_namepromptanswer raw_inputcommand_prefixinstall_commands rinstall_promptzCommandNotFound.install_prompts1RZZ?  9:F{{c!v' "6*99%%*VS*A#]]399+=+=>F||~3'99>%'N%,N8F "Ud_,3::> 5 5 7uE( r:ct|t|z|kDrIttd|t|fz|j|jj yt|t|zdkDrttd|z|j|D]6\}}}|rd|z}nd}ttd|||fz|j8|D]7\}}} }|rd|z}nd}ttd |||fz|j9t|dkDr!ttd |jnat|dkDrS|j r$ttd d z|jn#ttd d z|j|jj y)z3 print spelling suggestions for packages and snaps z6Command '%s' not found, but there are %s similar ones.rNr%Command '%s' not found, did you mean:z (%s)rgz command '%s' from snap %s%s command '%s' from deb %s%s3See 'snap info ' for additional versions.zTry: %s zsudo apt installz apt install)rrr output_fdflushr&) r7rmispell_packages mispell_snapsmax_altrKrcrDrCrEs rprint_spelling_suggestionsz*CommandNotFound.print_spelling_suggestionss  ]!3 3g = !LMQUWZ[kWlPmmtxuCuC D NN "  ! "3}#5 5 9 !; #d1g-DNN C    (472 H #d1g-DNN C !45 6 r:cR|j||jdk(r8td|ddz|j|j |ddn|j r8td|ddz|j|j |ddnqtd|ddz|jtt d|dd|jvr)tt d|ddz|j|jjy)Nrzapt install %srzsudo apt install %srr z1You will have to enable the component called '%s') rr6rrrr&rr,r)r7rKrBrbs radvice_single_deb_packagez)CommandNotFound.advice_single_deb_packages   ) 99> "Xa[^3$.. I    A /    '(1+a.8t~~ N    A / "Xa[^3$.. I !45 6A;q>T%6%66aKLxXY{[\~]dhdrdrs r:c<|jdk7r |jryy)Nrrrg)r6r&)r7s rrzCommandNotFound.sudos 99>d00r:c |j|t||zDcgc]}t|dc}}t|D]\}}d}|dr$|dk(rt|dkDr d|dz}nd|dz}|d|jvr0t d|j ||d|fz|jrt d|j ||d|fzd ztd |dzzd z|j|jdk7r,|js t td |j|jjycc}w) Nrrgr  # version %s, or # version %sr z%sapt install %-*s%srz (z-You will have to enable component called '%s')z.Ask your administrator to install one of them.) rmaxr enumerater,rrrrr6r&r) r7rKrBrbrpadrrCrDs radvice_multi_deb_packagez(CommandNotFound.advice_multi_deb_packages~   )eHn53qt956#H- xJAwCqz6c'lQ..'!*=C*gaj9CqzT..., S'!*c/RRY]YgYgh, S'!*c/RRUYY\]_N]ORYZ[R\]\\_bbimiwiwx x 99>$"4"4 !DEDNN [ 6sEc |j|t||zDcgc]}t|dc}}t|D]_\}}d}|dr$|dk(rt|dkDr d|dz}nd|dz}t d|j ||d|fz|j at td|j |j jycc}w) Nrrgr rr%ssnap install %-*s%srr rrrrrrrrr) r7rKrBrbrrrrcrDs radvice_multi_snap_packagesz*CommandNotFound.advice_multi_snap_packagess   )eHn53qt956 ' cGAtCAw6c%j1n.a8C*T!W4C )TYY[#tAw,LLSWSaSa b c aEFT^^\ 6sC"c |j|t||zDcgc]}t|dc}}t|D]Q\}}d}|dr|dk(r d|dz}nd|dz}t d|j ||d|fz|j S|D]@} d}| drd| dz}t d |j || d|fz|j Bt|dk(r*t td |ddz|j n t td |j |j jycc}w) Nrrgr rrrrr z%sapt install %-*s%sz+See 'snap info %s' for additional versions.rr) r7rKrBrbrrrrcrDrCs radvice_multi_mixed_packagesz+CommandNotFound.advice_multi_mixed_packagessX   )eHn53qt956 ' cGAtCAw6.a8C*T!W4C )TYY[#tAw,LLSWSaSa b c  fGCqz&3 )TYY[#wqz3,OOVZVdVd e  f u:? !ABU1Xa[PW[WeWe f !IJQUQ_Q_ ` %6sEc 8 d}t||jkDry|jdrCtjj |r!tjj |g}n&g}n#|jDcgc]}|||s |}}|rt|sqt|dk(rHttd|tjj|d|dz|jndttd d |iz|j|D]:}td tjj||z|j<tt|ttjd d jdz }t|dkDrettddj|z|jddj|vr ttd|jytjj ds tjj dsy||j!vry|dk(rjttd|z|jttddz|jttddz|jy|j#|}|j%|\}} t'j(d|d|t|dk(rPt|dk(rB|j+|} t| dkDst| dkDr|j-|| | nt|dk(r"t|dk(r|j/|||nt|dkDr"t|dk(r|j1|||nt|dk(r"t|dk(r|j3|||n_t|dkDr"t|dk(r|j5|||n/t|dkDr!t|dkDr|j7|||t|dkDxs.t|dkDxst| dkDxst dkDScc}w)z7 give advice where to find the given command to stderr ctjjtjj||xr>tjj tjj|| S)z? helper that returns if a command is found in the given prefix )r-r.r/riisdir)prefixrKs r _in_prefixz*CommandNotFound.advise.._in_prefix+sOGGNN277<<#@AIGGMM"'',,vw*GHH Jr:F/r z1Command '%(command)s' is available in '%(place)s'r)rKplacerz:Command '%(command)s' is available in the following placesrKz * %sPATHrg:z_The command could not be located because '%s' is not included in the PATH environment variable.sbinzfThis is most likely caused by the lack of administrative privileges associated with your user account.z /usr/bin/aptz/usr/bin/aptitudepythonrr)python3rrg)rzpython-is-python3rgTz got debs: z snaps: )rr< startswithr-r.r/dirnameprefixesrrrirlistrrjrror=rdrSrTrFrrrrrr) r7rKignore_installedrrrmissingrBrbrrs radvisezCommandNotFound.advise)sV J w<$,, &   c "ww~~g&GGOOG45-1]]Z6jQX>YZHZ ,8}!aKL[bmomtmtmymy{CDE{FHOnPPQQX\XfXfgaTUYbdkXllswtBtBC&XF'BGGLL$AAWX3x=3ryy/D/J/J3/O+PPQG7|aayz~A~F~FGN~OOVZVdVdeSXXg..!EFMQM[M[\~.23 d'') ) h  !;,B//9I=Y ]a CJ!O  + +GXu E Z!^H  2  + +GXu E ]a CJ!O  * *7He D ]Q 3u:?  ) )'8U C ]Q 3u:>  , ,Wh FH !DSZ!^DM"Q&D*-.>*?!*C Ek[s ?RRN)z/usr/share/command-not-found)))F)__name__ __module__ __qualname__ programs_dirr<rrRrrMrr9rFr=rdror+rrrrrrrrrrrr:rr(r(8svLGHH I$ %',:*F,:6   $ ,FEr:r() __future__rrrr"rZrSr-os.pathr rrWCommandNotFound.db.dbrr_gettext_methodgetattr translationrrr&r0objectr(rr:rrs~    0;;#O O G   3d C_U : 2wEfwEr: