ê_ddlmZddlmZddlmZddlZddlZddlZddlmZ ddl m Z ddl m Z ddl mZmZejd ejZd Zd ZGd d eZdS))print_function)division)absolute_importN) configparser)SafeConfigParser) check_output)file_writelinesfile_readlinesz"^(?P.+) \((?P.+)\)$z/var/lve/rubygemsz0/usr/share/l.v.e-manager/utils/cache_rubygems.pyceZdZdZddZdZdZdZdZdZ d Z e d Z e d Z e d Ze d Ze dZdS) ExtensionInfozhttp://rubygems.org/gemsNct|r ||_dSttjdd|_dS)Nz/opt/alt/ruby??/bin/gem)gemsortedglob)selfrs 1./commons/lib/clselect/clselectruby/extensions.py__init__zExtensionInfo.__init__ s9  HDHHHdi(ABBCCBGDHHHcbt|jdd}t|S)Nlist--remote)rrEXTENSION_PATTERNfindall)routputs r _list_gemszExtensionInfo._list_gems&s)dh ;; ((000rc t|jdd|zdzdd}dt|D}t t t d|dDS) Nr^$rz--allc>g|]\}}|dS),split).0 extensionversions r z3ExtensionInfo._list_gem_version..,s)ccc+=9gGMM#&&cccrc3pK|]1}|ddV2dS) rN)stripr#)r$r&s r z2ExtensionInfo._list_gem_version..-s=XXw}}44S99!<XXXXXXrr)rrrrrrset)rrrversionss r_list_gem_versionzExtensionInfo._list_gem_version*svdhc CWUUccARAZAZ[aAbAbcccd3XXHUVKXXXXXYYZZZrcrd|D}t|S)Ncg|]\}}|Sr1r$r%_s rr'z1ExtensionInfo.list_extensions..0FFFLIqiFFFr)rr extensions_docsr extensionss rlist_extensionszExtensionInfo.list_extensions/s3FFDOO4E4EFFF ,,Z888rctjts|}ndt tD}t |S)Nc6g|]}|Sr1r*)r$is rr'z8ExtensionInfo.list_extensions_cached..7s CCC!''))CCCr)ospathisfileCACHE write_cacher r r5r6s rlist_extensions_cachedz$ExtensionInfo.list_extensions_cached3s[w~~e$$ D))++JJCC^E-B-BCCCJ,,Z888rcd|D} ttd|Ddtjtdn#t $rYnwxYw|S)Ncg|]\}}|Sr1r1r2s rr'z-ExtensionInfo.write_cache..;r4rcg|]}d|zS)z%s r1r$r%s rr'z-ExtensionInfo.write_cache..=s#S#S#S9FY$6#S#S#Srwi)rr r@r=chmodIOErrorr6s rrAzExtensionInfo.write_cache:sFFDOO4E4EFFF   E#S#S #S#S#SUX Y Y Y HUE " " " "    D s:A A('A(c:tfd|DS)Nc3JK|]}|d|ifVdS)r-N)r.)r$r%rs rr+z8ExtensionInfo.list_extensions_version..DsO11!T-C-CI-N-N OP111111r)dictr6s` rlist_extensions_versionz%ExtensionInfo.list_extensions_versionCs;1111%/11111 1rc\ tjtdS#t$rYdSwxYwN)r=unlinkr@OSErrorr1rr delete_cachezExtensionInfo.delete_cacheGs?  Ie         DD s  ++cPtdtj|fS)N/)strjoinr url)r%s r extension_doczExtensionInfo.extension_docNsxxm/;<<.TsD--++I66------rc3(K|] \}}|d|ifVdS)docNr1)r$r%r\s rr+z0ExtensionInfo.extensions_docs..VsKAA& 3 -AAAAAAr)rLzip)r7docss rr5zExtensionInfo.extensions_docsRs`--!+---AA*-j$*?*?AAAAA Arc|dd}tjd|dd}tj|sCtjtjt dd}tdd}|| | |}n#tj $rd }YnwxYwtd |DS) N.z/opt/altetczlocked_extensions.iniz..F) interpolationstrictr1c3^K|](\}}|d|dDfV)dS)c:g|]}||Sr1r;)r$vs rr'zAExtensionInfo.get_locked_extensions...fs% M M Mq1 M M M Mrr!Nr")r$r%r-s rr+z6ExtensionInfo.get_locked_extensions..fsZ66+ 8 M MHNN34G4G M M MN666666r) replacer=r>rVexistsdirname__file__rreaditems ConfigParserNoSectionErrorrL) interpreteralt_ver file_pathparserrms rget_locked_extensionsz#ExtensionInfo.get_locked_extensionsYs%%c"--GLLWe=TUU w~~i(( _ RW__X%>%>F]^^I!UCCC I LL--EE*   EEE 66/466666 6sCC,+C,c||vottfddDt||zp%t ||dkS)Nc^g|])}tdk|*S)r)lenr*)r$rgr&s rr'z6ExtensionInfo.is_extensions_locked..ls1PPPAs7||a?O?Oaggii?O?O?Orr!r)rr,r#getrw)locked_extensionsr%r&s `ris_extensions_lockedz"ExtensionInfo.is_extensions_lockedis.. PPPPs););PPPQQ'++I66778 9 9 7 !%%i00 1 1Q 6 rrO)__name__ __module__ __qualname__rWrrr.r8rBrArM staticmethodrRrXr5rtrzr1rrr r s $CHHHH 111[[[ 999999111\ ==\=AA\A  6 6\ 6  \   rr ) __future__rrrrr=re future.movesrrnfuture.moves.configparserrclselect.utilsrr r compile MULTILINErr@ CACHE_BINARYobjectr r1rrrs&%%%%%&&&&&& 555555666666''''''::::::::BJC!|-- A S S S S S FS S S S S r