1;jnddlmZddlmZddlmZddlZddlZddlmZddl m Z Gdde Z dS) )print_function)division)absolute_importN) configparser)SafeConfigParserceZdZdZd dZdZdZdZdZe dZ e d Z e d Z e d Z e d ZdS) ExtensionInfozhttps://npmjs.org/packageNct|r ||_dSttjdd|_dS)Nz%/opt/alt/alt-nodejs*/root/usr/bin/npm)npmsortedglob)selfr s 7./commons/lib/clselect/clselectnodejsuser/extensions.py__init__zExtensionInfo.__init__s:  VDHHHdi(OPPQQRTUDHHHc tdNz!It's not used for nodejs selectorNotImplementedErrorrs rlist_extensionszExtensionInfo.list_extensions!"EFFFrc tdrrrs rlist_extensions_cachedz$ExtensionInfo.list_extensions_cachedrrc tdrrrs r write_cachezExtensionInfo.write_cache!rrc tdrr)r extensionss rlist_extensions_versionz%ExtensionInfo.list_extensions_version$rrc tdrrrr delete_cachezExtensionInfo.delete_cache's!"EFFFrcDdtj|gS)N/)joinr doc_url) extensions r extension_doczExtensionInfo.extension_doc+sxx. :;;;rchd|D}tdt||DS)NcBg|]}t|Sr")r r)).0exts r z1ExtensionInfo.extensions_docs..1s&GGGS ++C00GGGrc3(K|] \}}|d|ifVdS)docNr")r,r-r0s r z0ExtensionInfo.extensions_docs..2s/NNHCS5#,'NNNNNNr)dictzip)rdocss rextensions_docszExtensionInfo.extensions_docs/s<GGJGGGNNJ8M8MNNNNNNrc|dd}tjd|ddd}tj|sCtjtjt dd}tdd }|| | |}n#tj $rd }YnwxYwtd |DS) N.z/opt/altrootetczlocked_extensions.iniz..F) interpolationstrictr"c3^K|](\}}|d|dDfV)dS)c:g|]}||Sr")strip)r,vs rr.zAExtensionInfo.get_locked_extensions...As% M M Mq1 M M M Mr,N)split)r,r(versionss rr1z6ExtensionInfo.get_locked_extensions..AsZ66+ 8 M MHNN34G4G M M MN666666r) replaceospathr&existsdirname__file__rreaditems ConfigParserNoSectionErrorr2) interpreteralt_ver file_pathparserrKs rget_locked_extensionsz#ExtensionInfo.get_locked_extensions4s%%c2..GLLWfeE\]] 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,r@versions rr.z6ExtensionInfo.is_extensions_locked..Gs1PPPAs7||a?O?Oaggii?O?O?OrrAr)listsetrBgetrU)locked_extensionsr(rVs `ris_extensions_lockedz"ExtensionInfo.is_extensions_lockedDs.. PPPPs););PPPQQ'++I66778 9 9 7 !%%i00 1 1Q 6 r)N)__name__ __module__ __qualname__r'rrrrr staticmethodr#r)r5rRr[r"rrr r s)GVVVV GGGGGGGGGGGGGG\G<<\<OO\O 6 6\ 6  \   rr ) __future__rrrrrE future.movesrrLfuture.moves.configparserrobjectr r"rrrds&%%%%%&&&&&& 5555556666669 9 9 9 9 F9 9 9 9 9 r