app config, parallel filelist generation

This commit is contained in:
Martinez 2015-02-12 13:15:51 +01:00
commit 242896ba37
2 changed files with 69 additions and 0 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
*.pyc
__pycache__
over

66
find-orphans.py Executable file
View file

@ -0,0 +1,66 @@
#! /bin/env python3
# encoding: utf-8
# library imports
import os
import over
import re
import sys
import time
# --------------------------------------------------
prefix = over.core.textui.prefix
_print = over.core.textui.Output('Find Orphans')
# --------------------------------------------------
# Functions
# --------------------------------------------------
# Classes
# --------------------------------------------------
if __name__ == '__main__':
main = over.core.app.Main('Find Orphans', None, 'AWARE-Overwatch Joint Software License')
main.add_option('filter', 'str', ['/home/*', '/var/*', '*.pyc'], 'Shell globs that should be filtered out.', plural=True)
main.add_option('null-separated', 'bool', False, 'Output each filename separated with a null character. Otherwise use a newline.', short_name='0')
main.add_help('Description', ['Finds files on Gentoo systems that aren\'t owned by any installed package and lists them.'])
main.enable_help('h')
main.parse()
if not main.targets:
_print('specify at least one directory to work on, e.g. \'/\'', prefix.fail)
main.exit(silent=True)
# --------------------------------------------------
# Create a file list
file_list = []
threads = [] # {proc, output_buffer}
for root in main.targets:
proc = over.core.cmd.Command('find', root, '-print0')
proc.run()
threads.append({'proc': proc, 'output_buffer': []})
_print('gathering file list using %d processes' %(len(threads)), prefix.start)
while True:
at_least_one_lives = False
for thread in threads:
tmp = thread['proc'].get_output()
if not tmp is None:
thread['output_buffer'].append(tmp)
at_least_one_lives = True
if at_least_one_lives:
time.sleep(1)
else:
break
_print('post-processing file list')