3 ܓi @sBddlmZddlZddlZddlmZmZGdddeeZdS))PathN)Plugin RedHatPluginc@seZdZdZdZddZdS) UnpackagedzDCollects a list of files that are not handled by the package manager unpackagedc sdd}dfdd }fdd}jdds2dSjd z}|g}tfd d jjjjjDxD]}|||7}qtWfd d |D}||}|jdj|WdQRXdS)NcSstjdjdS)z3Return a list of directories in $PATH. PATH:)osenvironsplitr r /usr/lib/python3.6/unpackaged.pyget_env_path_listsz-Unpackaged.collect..get_env_path_listcsg}xtj|ddD]\}}}|rJx&|D]fdd|D|dd<q(Wxp|D]h}j||}y"tjtj|jrt|j}Wnt k rwPYnX|j j||tj j |gqPWx.|D]&}j||}|j |tj j |gqWqW|S)zReturn a list of all files present on the system, excluding any directories listed in `exclude`. :param path: the starting path :param exclude: list of paths to exclude T)topdowncsg|]}|kr|qSr r ).0d)excr r (sz@Unpackaged.collect..all_files_system..N) r walk path_joinstatS_ISLNKlstatst_moderZresolve Exceptionappendpathrealpath)rexcludeZ file_listrootdirsfilesname)self)rr all_files_systems$     z,Unpackaged.collect..all_files_systemcspg}xf|D]^}j|}|}d}x6j|rX|dkrXtj|}|d|7}|d7}q$W|j|dq W|S)z4Format the unpackaged list as a string. r z ->  )rZ path_islinkr readlinkr)r!ZexpandedfileoutZlinks)r#r r format_output9s    z)Unpackaged.collect..format_outputT)cmdrc3s0|](tfddDrtjjVqdS)c3s|]}j|VqdS)N) startswith)rp)xr r Vsz/Unpackaged.collect...N)anyr rr)r)paths)r/r r0Tsz%Unpackaged.collect..csg|]\}}|kr|qSr r )rr/Zrp)all_frpmr r r[sz&Unpackaged.collect..)N) Ztest_predicateZcollection_filesetZpolicyZmangle_package_pathZpackage_managerZ all_fileswritejoin) r#rr$r+ZufileZ all_fsystemrZ not_packagedZnot_packaged_expandedr )r3r2r#r collects     zUnpackaged.collectN)__name__ __module__ __qualname__Z short_descZ plugin_namer8r r r r rsr)Zpathlibrr rZsos.report.pluginsrrrr r r r  s