Fixed setinc command, renamed it, implemented set1

This commit is contained in:
Jamie Hardt
2024-06-30 13:46:44 -07:00
parent b91f383058
commit 2b6bafe1f6

View File

@@ -33,11 +33,13 @@ class CommandEnv:
metadatums: Dict[str, str] metadatums: Dict[str, str]
incr: Dict[str, str] incr: Dict[str, str]
patterns: Dict[str, Tuple[str, str, str]] patterns: Dict[str, Tuple[str, str, str]]
oncse: Dict[str, str]
def __init__(self) -> None: def __init__(self) -> None:
self.metadatums = dict() self.metadatums = dict()
self.incr = dict() self.incr = dict()
self.patterns = dict() self.patterns = dict()
self.onces = dict()
def unset_key(self, k): def unset_key(self, k):
del self.metadatums[k] del self.metadatums[k]
@@ -54,6 +56,21 @@ class CommandEnv:
from_value = self.metadatums[from_key] from_value = self.metadatums[from_key]
self.metadatums[to_key] = re.sub(pattern, replacement, from_value) self.metadatums[to_key] = re.sub(pattern, replacement, from_value)
def set_once(self, key, value):
self.onces[key] = self.metadatums.get(key, None)
self.metadatums[key] = value
def revert_onces(self):
keys = list(self.onces)
for key in keys:
if self.onces[key] == None:
del self.metadatums[key]
else:
self.metadatums[key] = self.onces[key]
del self.onces[key]
def increment_all(self): def increment_all(self):
for k in self.incr.keys(): for k in self.incr.keys():
v = int(self.metadatums[k]) v = int(self.metadatums[k])
@@ -147,6 +164,7 @@ they appear in the batchfile.
sys.stdout.write("Complete!") sys.stdout.write("Complete!")
self.env.increment_all() self.env.increment_all()
self.env.revert_onces()
elif val.startswith(self.COMMAND_LEADER): elif val.startswith(self.COMMAND_LEADER):
self._handle_command(val.lstrip(self.COMMAND_LEADER), self._handle_command(val.lstrip(self.COMMAND_LEADER),
@@ -171,6 +189,16 @@ they appear in the batchfile.
value = args[1] value = args[1]
self.env.metadatums[key] = value self.env.metadatums[key] = value
def set1(self, args):
"""
set1 KEY VALUE
KEY is set to VALUE for the next file only. After the next file is
written the value of KEY reverts to its previous value
"""
key = args[0]
value = args[1]
self.env.set_once(key, value)
def unset(self, args): def unset(self, args):
""" """
unset KEY unset KEY
@@ -190,9 +218,9 @@ they appear in the batchfile.
for k in all_keys: for k in all_keys:
self.env.unset_key(k) self.env.unset_key(k)
def seti(self, args): def setinc(self, args):
""" """
seti KEY INITIAL [FORMAT] setinc KEY INITIAL [FORMAT]
KEY in the next file appearing in the batchfile will be set to INITIAL, KEY in the next file appearing in the batchfile will be set to INITIAL,
which must be an integer. INITIAL will then be incremented by one and which must be an integer. INITIAL will then be incremented by one and
this process will be repeated for each subsequent file in the this process will be repeated for each subsequent file in the
@@ -206,7 +234,7 @@ they appear in the batchfile.
if len(args) > 2: if len(args) > 2:
fmt = args[2] fmt = args[2]
self.env.metadatums[key] = initial self.env.metadatums[key] = fmt % (int(initial))
self.env.incr[key] = fmt self.env.incr[key] = fmt
def setp(self, args): def setp(self, args):