Browse Source

made globals/save whitelist instead of blacklist and tested

master
Raphael Roberts 7 years ago
parent
commit
7592a94479
  1. 6
      ext_open/ext_open.py
  2. 46
      ext_open/opts.py
  3. 2
      ext_open/util.py

6
ext_open/ext_open.py

@ -16,9 +16,11 @@ for ext in exts:
for opt in ext['opts']+common:
opt = opt.copy()
sub_parser.add_argument(*opt.pop('ostring'),**opt)
debug = True
if __name__ == '__main__':
args = parser.parse_args()
ext = arsg.ext
if not debug and __name__ == "__main__":
ext = args.ext
s = searcher.Searcher(ext,args.case_insensitive)
if args.update:
s.update()
@ -32,7 +34,7 @@ if __name__ == '__main__':
if len(matches) == 1:
row = matches[0]
else:
row = picker(matches
row = picker(matches)
path = row[-1]
if args.path:
print(path)

46
ext_open/opts.py

@ -6,21 +6,18 @@ class ArgumentHandler:
self.args_file = args_file
self.exts = set()
with open(self.args_file) as file:
self.data = json.load(file)
self.reload()
for _ext in self.data['exts']:
ext = _ext['ext']
self.exts.add(ext)
args = _ext['opts']
self.set(ext,ArgumentContainer(args))
self.set(ext,ArgumentContainer(args,self.data['prefix']))
for key,value in self.data.items():
if key != 'exts' and isinstance(value,list):
self.set(key,ArgumentContainer(value))
self.set(key,ArgumentContainer(value,self.data['prefix']))
self.prefix_char = self.data['prefix_char']
@ -30,23 +27,26 @@ class ArgumentHandler:
def set(self,item,value):
self.__dict__[item] = value
def add_ext(self,ext):
self.set(ext,ArgumentContainer([]))
self.exts.add(ext)
def reload(self):
with open(self.args_file) as file:
self.data = json.load(file)
def save(self):
data = []
for ext in self.exts:
data.append({'ext':ext,'opts':self.get(ext).to_dict()})
valid = set(self.__dict__.keys()) - self.exts
valid -= {'self.args_file'}
for key in valid:
self.data['exts'] = data
for key in ['bools', 'exe', 'exts', 'prefix', 'prefix_char']:
value = self.get(key)
if isinstance(value,str):
self.data[key] = value
elif isinstance(value,ArgumentContainer):
self.data[key] = value.to_dict()
def add_ext(self,ext):
self.set(ext,ArgumentContainer([]))
self.exts.add(ext)
def commit(self):
backup_name = self.args_file + '.bak'
if os.path.exists(backup_name):
@ -62,14 +62,22 @@ class ArgumentHandler:
os.rename(backup_name,self.args_file)
class ArgumentContainer:
def __init__(self,l_of_args):
def __init__(self,l_of_args,prefix):
self.args = l_of_args
self._argnames = None
self.prefix = prefix
def add_argument(self,*args,**kwargs):
new_arg = {
'ostring': args,
}
new_arg = {'ostring': args,}
new_arg.update(kwargs)
self.args.append(new_arg)
self._argnames = None
@property
def argnames(self):
if self._argnames is None:
self._argnames = set(max(arg['ostring'],key=len).lstrip(self.prefix) for arg in self.args)
return self._argnames
def to_dict(self):
return copy.deepcopy(self.args)
@ -83,5 +91,5 @@ class ArgumentContainer:
return str(self)
cur = ArgumentHandler('opts.json')
globals().update(cur.data)
common = bools+other
globals().update((key,cur.data[key]) for key in ['bools', 'exe', 'exts', 'other', 'prefix', 'prefix_char'])
common = bools+other

2
ext_open/util.py

@ -18,7 +18,7 @@ def get_drives():
bitmask = windll.kernel32.GetLogicalDrives()
for letter in uppercase:
if bitmask & 1:
drives.append('{letter}:\\'.format(letter=letter)
drives.append('{letter}:\\'.format(letter=letter))
bitmask >>= 1
return drives

Loading…
Cancel
Save