ó ¾[/\c@@sÀdZddlmZddlmZddlmZddlZddlZddlZddlm Z ddl m Z ddl m Z dd lmZd „Zd e jfd „ƒYZdS( uUpdateInfo CLI command.i(tabsolute_import(tprint_function(tunicode_literalsN(tcommands(t OptionParser(t_(tunicodecC@std„|DƒƒS(u7Return maximum length of items in a non-empty iterable.cs@s|]}t|ƒVqdS(N(tlen(t.0titem((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pys %s(tmax(titerable((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyt_maxlen#stUpdateInfoCommandcB@sŸeZdZiedƒej6edƒej6edƒej6edƒej6edƒej 6Z iedƒd6edƒd 6ed ƒd 6ed ƒd 6Z idd6dd6dd6dd6dd6dd6dd6Z dge e jƒƒZedƒZdZdddegZd„Zed„ƒZd „Zd!„Zd"„Zd#„Zd$„Zd%„Zd&„Zd'„Zd(„Zd)„Zd*„Z d+„Z!d,„Z"RS(-u)Implementation of the UpdateInfo command.ubugfixu enhancementusecurityuunknownu newpackageu Critical/Sec.uCriticaluImportant/Sec.u Importantu Moderate/Sec.uModerateuLow/Sec.uLowulistulist-updateinfou list-securityulist-secuinfouinfo-updateinfou info-securityuinfo-secusummaryusummary-updateinfou updateinfou!display advisories about packagesu availableu installeduupdatesuallcC@s#tt|ƒj|ƒd|_dS(uInitialize the command.N(tsuperR t__init__tNonet_installed_query(tselftcli((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyRAsc C@sŠ|jƒ}|jddddddddtd ƒƒ|jd dddd dddtd ƒƒ|jd dddddddtdƒƒ|jddddddddtdƒƒdddg}|jƒ}|jddddddddtdƒƒ|jddddddddtdƒƒ|jddddddddtdƒƒ|jdddd d!d"|d#|d$dtjƒdS(%Nu --availabletdestu _availabilitytconstu availabletactionu store_constthelpu?advisories about newer versions of installed packages (default)u --installedu installedu?advisories about equal and older versions of installed packagesu --updatesuupdatesubadvisories about newer versions of those installed packages for which a newer version is availableu--alluallu3advisories about any versions of installed packagesusummaryulistuinfou --summaryu _spec_actionu$show summary of advisories (default)u--listushow list of advisoriesu--infoushow info of advisoriesuspectnargsu*tmetavaruSPECtchoicestdefaulti(tadd_mutually_exclusive_groupt add_argumentRRtPkgNarrowCallback(tparsert availabilitytcmdst output_format((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyt set_argparserFs6         cC@sðt|jj_t|jj_|jjd|jkrW|j|jjd|j_n!|jj rx|jj |j_n|jj r™|jj |j_ nS|jj s¿|jj d|j krÑ|j|j_ n|jj jdƒ|j_ dS(uADo any command-specific configuration based on command arguments.iN(tTrueRtdemandstavailable_repostsack_activationtoptstcommandtdirect_commandst spec_actiont _spec_actiont _availabilityR tspectavailabilitiestavailability_defaulttpop(R((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyt configurees   &cC@s-t}|jjdkr<|j|jjƒ}tdƒ}n“|jjdkrr|j|jjƒ}tdƒ}n]|jjdkr®t}|j|jjƒ}tdƒ}n!|j |jjƒ}tdƒ}|jj dkrô|j ||ƒn5|jj dkr|j ||ƒn|j ||ƒdS(u#Execute the command with arguments.u installeduupdatesuallu availableulistuinfoN(tFalseR(R tinstalled_apkg_adv_instsR.Rtupdating_apkg_adv_instsR$tall_apkg_adv_inststavailable_apkg_adv_instsR+t display_listt display_infotdisplay_summary(Rtmixedtapkg_adv_instst description((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pytrunys$ cC@sd|jdkr3|jjjƒjƒjƒ|_n|jjd|jd|j ƒ}t |ƒdkS(Ntnametevr__gtei( RRtbasetsacktqueryt installedtapplytfilterR?tevrR(Rtapackagetq((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyt_newer_equal_installed‘s$!cC@s¥|jjr%|j|jjkr%tS|jjrctg|jjD]}|j|ƒ^qAƒrctS|jjr¡tg|jjD]}|j|ƒ^qƒr¡tStS(N( R(tseverityR$tbugzillatanyt match_bugtcvest match_cveR3(Rtadvisorytbugtcve((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyt_advisory_matcher—s!::c #@s=tƒ}tƒ}x—|D]}|dkr>|jtjƒq|dkr]|jtjƒq|d kr||jtjƒq|dkr›|jtjƒq|j|ƒqW|jjrË|jtjƒn|jj rê|jtjƒn|jj r |jtjƒn|jj r(|jtjƒn|jj rJ|j |jj ƒnxì|j|ƒD]Û‰ˆj|jjƒ‰| r³| r³|jj r³|jj r³|jj r³t}n:ˆj|kpêt‡fd†|Dƒƒpê|jˆƒ}t‡fd†|Dƒƒ}|s|rZ|jˆƒ} ˆˆ| fVqZqZWdS( u4Return (adv. package, advisory, installed) triplets.ubugfixu enhancementusecurityusecu newpackagec3@s$|]}tjˆj|ƒVqdS(N(tfnmatcht fnmatchcasetid(Rtpat(RQ(s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pys Âsc3@s$|]}tjˆj|ƒVqdS(N(RURVR?(RRX(RH(s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pys ÅsN(usecurityusec(tsettaddthawkeytADVISORY_BUGFIXtADVISORY_ENHANCEMENTtADVISORY_SECURITYtADVISORY_NEWPACKAGER(tbugfixt enhancementt newpackagetsecurityRQtupdatetget_advisory_pkgst get_advisoryRARBRKRLROR$ttypeRMRTRJ( Rt pkgs_querytcmptypetspecst specs_typestspecs_patternsR.tadvisory_matchtapackage_matchRD((RQRHs?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyt_apackage_advisory_installeds sH                cC@s(|j|jjjƒjƒtj|ƒS(u5Return available (adv. package, adv., inst.) triplets(RoRARBRCRDR[tGT(RRj((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyR7ËscC@s/|j|jjjƒjƒtjtjB|ƒS(u5Return installed (adv. package, adv., inst.) triplets(RoRARBRCRDR[tLTtEQ(RRj((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyR4ÐscC@s.|j|jjjƒjdtƒtj|ƒS(u4Return updating (adv. package, adv., inst.) tripletst upgradable(RoRARBRCtfiltermR$R[Rp(RRj((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyR5ÕscC@s6|j|jjjƒjƒtjtjBtjB|ƒS(u5Return installed (adv. package, adv., inst.) triplets( RoRARBRCRDR[RqRrRp(RRj((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyR6ÚscC@szi}x^|D]V\}}}|j||j<|jtjkr |j|jf||j|jfsu %*s %siN(RztprintRR[R_R^RR\R]tADVISORY_UNKNOWNR RRAtconftautocheck_running_kernelRt_check_running_kernel( RR<R=ttyp2cntt label_countstwidthtindenttlabeltcount((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyR:ës2     ,c @s€‡fd†}‡fd†}tƒ}xa|D]Y\}}}d|j|j|jf} |j|jf|j| |ftƒƒ|j"su%s%-*s %-*s %sN(tdictR?RGtarchRgRKt setdefaultRWtsortedtitemsR RtappendR|(RR<R;RˆRŽtnevra_inst_dictRyRQRDtnevratadvlisttidwttlwR‡RxtaidtatypesevR…((R;Rs?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyR8 s  2 . 'c @sûˆjjjƒ‰ˆjjj‰tdƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒtd ƒtd ƒf ‰‡‡‡‡‡fd †}tƒ}x-|D]%\}}}|j|||ƒƒq¬Wtd j t |d d„ƒƒƒdS(u/Display the details about available advisories.u Update IDuTypeuUpdateduBugsuCVEsu DescriptionuSeverityuRightsuFilesu Installedc @sO|jgˆjj|jtdƒƒgt|jƒggg|jpHdjƒ|j g|j pcdjƒt t ‡fd†|j Dƒƒƒdg }xx|jD]m}|jtjkrâ|djdj|j|jpØdƒƒqž|jtjkrž|dj|jƒqžqžW|djƒ|djƒˆsHd|d>siu{} - {}iiiutrueufalsei u=iOu u%*s: %siu (RWR‹RŠRgRRtupdatedR=t splitlinesRKtrightsR•RYtpackagesRt referencesR[tREFERENCE_BUGZILLAR—tformatttitlet REFERENCE_CVEtsortR tzipt enumeratetjoin( RQRDt attributestrefRƒtlinesR…t atr_linestitline(R¡tlabelsR;Rtverbose(s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyt advisory2info4sB  " ,  ( 4u RcS@s |jƒS(N(tlower(R((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyR‘^sN( RARBt list_archesR~R¶RRYRZR|R®R•(RR<R;R·t advisoriesRyRQRD((R¡RµR;RR¶s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyR9,s$$& (#t__name__t __module__t__doc__RR[R\R]R^R}R_R‹R‰R*tlisttkeystaliasestsummaryR0R/Rt staticmethodR#R2R>RJRTRoR7R4R5R6RzR:R8R9(((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyR 'sH          +      #(R½t __future__RRRRuRUR[tdnf.cliRtdnf.cli.option_parserRtdnf.i18nRt dnf.pycompRR tCommandR (((s?/usr/lib/python2.7/site-packages/dnf/cli/commands/updateinfo.pyts