|
|
|
@ -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 |