|
|
|
import os
|
|
|
|
import optparse
|
|
|
|
|
|
|
|
from lib import miscutils, fsutils
|
|
|
|
|
|
|
|
sources = {}
|
|
|
|
|
|
|
|
|
|
|
|
def optparse_init() -> tuple:
|
|
|
|
parser = optparse.OptionParser()
|
|
|
|
parser.add_option('-f', '--file', type='string', dest='s_file', help='Searching lines in the given file.')
|
|
|
|
parser.add_option('-d', '--directory', type='string', dest='s_dir', help='Searching files in a directory.')
|
|
|
|
parser.add_option('-q', '--query', type='string', dest='query', help='The search term. Supporting "".')
|
|
|
|
parser.add_option('-l', '--loop', action='store_true', default=False, dest='loop', help="""Runs the program in
|
|
|
|
an endless loop.""")
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
|
|
|
|
|
|
def read_file_source(fname):
|
|
|
|
finfo = fsutils.FileInfo(fname)
|
|
|
|
if finfo.exist:
|
|
|
|
with finfo.open('r') as f:
|
|
|
|
return list(f.readlines())
|
|
|
|
|
|
|
|
|
|
|
|
def read_directory_source(dirname):
|
|
|
|
""" Reading the contents of the directory """
|
|
|
|
dinfo = fsutils.DirInfo(dirname)
|
|
|
|
if dinfo.exist:
|
|
|
|
return dinfo.get_full_content()
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
options, args = optparse_init()
|
|
|
|
engines = []
|
|
|
|
|
|
|
|
if options.s_file:
|
|
|
|
e_file = miscutils.SearchEngine(read_file_source(options.s_file))
|
|
|
|
engines.append(e_file)
|
|
|
|
|
|
|
|
if options.s_dir:
|
|
|
|
e_dir = miscutils.SearchEngine(read_directory_source(options.s_dir))
|
|
|
|
engines.append(e_dir)
|
|
|
|
|
|
|
|
while True:
|
|
|
|
if options.query and not options.loop:
|
|
|
|
query = options.query
|
|
|
|
else:
|
|
|
|
query = input('Search: ')
|
|
|
|
|
|
|
|
for engine in engines:
|
|
|
|
for res in engine.search(query):
|
|
|
|
print(res)
|
|
|
|
if not options.loop:
|
|
|
|
break
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|