1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/usr/bin/python
- # PYTHON_ARGCOMPLETE_OK
- import sys
- import osex
- import curses
- import pprint
- import locale
- import argparse
- import argcomplete
- import ioex, ioex.selector
- def locate_select(patterns, match_all, ignore_case, update_database, multiple, database_path, update_require_visibility):
- if update_database:
- osex.update_locate_database(
- database_path = database_path,
- require_visibility = update_require_visibility
- )
- paths = osex.locate(
- patterns,
- match_all = match_all,
- ignore_case = ignore_case,
- database_path = database_path
- )
- selected_paths = ioex.curses_tty_wrapper(
- ioex.selector.select_string,
- paths,
- multiple = multiple
- )
- return selected_paths
- def _init_argparser():
- argparser = argparse.ArgumentParser(description = None)
- argparser.add_argument('--database-path')
- argparser.add_argument('--ignore-case', action='store_true')
- argparser.add_argument('--match-all', action='store_true')
- argparser.add_argument('--multiple', action='store_true')
- argparser.add_argument('--update-database', action='store_true')
- argparser.add_argument('--update-require-visibility', choices = ['yes', 'no'])
- argparser.add_argument('patterns', metavar = 'pattern', nargs = '+')
- return argparser
- def main(argv):
- argparser = _init_argparser()
- argcomplete.autocomplete(argparser)
- args = argparser.parse_args(argv)
- params = vars(args)
- if args.update_require_visibility == 'yes':
- args.update_require_visibility = True
- elif args.update_require_visibility == 'no':
- args.update_require_visibility = False
- paths = locate_select(**vars(args))
- if paths is None:
- return 1
- else:
- print('\n'.join(paths).encode(locale.getpreferredencoding()))
- return 0
- if __name__ == "__main__":
- sys.exit(main(sys.argv[1:]))
|