mirror of
https://github.com/iluvcapra/mfbatch.git
synced 2025-12-31 08:50:51 +00:00
Implemented special file keys
This commit is contained in:
@@ -6,10 +6,11 @@ import sys
|
|||||||
import shlex
|
import shlex
|
||||||
import shutil
|
import shutil
|
||||||
import re
|
import re
|
||||||
|
import os.path
|
||||||
|
|
||||||
import mfbatch.metaflac as flac
|
import mfbatch.metaflac as flac
|
||||||
|
|
||||||
from typing import Dict, Tuple
|
from typing import Dict, Tuple, Optional
|
||||||
|
|
||||||
|
|
||||||
class UnrecognizedCommandError(Exception):
|
class UnrecognizedCommandError(Exception):
|
||||||
@@ -33,7 +34,7 @@ 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]
|
onces: Dict[str, Optional[str]]
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.metadatums = dict()
|
self.metadatums = dict()
|
||||||
@@ -60,17 +61,26 @@ class CommandEnv:
|
|||||||
self.onces[key] = self.metadatums.get(key, None)
|
self.onces[key] = self.metadatums.get(key, None)
|
||||||
self.metadatums[key] = value
|
self.metadatums[key] = value
|
||||||
|
|
||||||
|
def set_file_keys(self, path):
|
||||||
|
apath = os.path.abspath(path)
|
||||||
|
self.metadatums['_ABSPATH'] = apath
|
||||||
|
dirname, self.metadatums['_FILENAME'] = os.path.split(apath)
|
||||||
|
_, self.metadatums['_FOLDER'] = os.path.split(dirname)
|
||||||
|
|
||||||
|
def clear_file_keys(self):
|
||||||
|
del self.metadatums['_ABSPATH']
|
||||||
|
del self.metadatums['_FILENAME']
|
||||||
|
del self.metadatums['_FOLDER']
|
||||||
|
|
||||||
def revert_onces(self):
|
def revert_onces(self):
|
||||||
keys = list(self.onces)
|
keys = list(self.onces)
|
||||||
for key in keys:
|
for key in keys:
|
||||||
if self.onces[key] == None:
|
del self.metadatums[key]
|
||||||
del self.metadatums[key]
|
if self.onces[key] != None:
|
||||||
else:
|
self.metadatums[key] = self.onces[key] or ''
|
||||||
self.metadatums[key] = self.onces[key]
|
|
||||||
|
|
||||||
del 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])
|
||||||
@@ -128,6 +138,8 @@ they appear in the batchfile.
|
|||||||
|
|
||||||
def _handle_file(self, line, interactive):
|
def _handle_file(self, line, interactive):
|
||||||
while True:
|
while True:
|
||||||
|
|
||||||
|
self.env.set_file_keys(line)
|
||||||
self.env.evaluate_patterns()
|
self.env.evaluate_patterns()
|
||||||
|
|
||||||
if self.dry_run:
|
if self.dry_run:
|
||||||
@@ -165,6 +177,7 @@ they appear in the batchfile.
|
|||||||
|
|
||||||
self.env.increment_all()
|
self.env.increment_all()
|
||||||
self.env.revert_onces()
|
self.env.revert_onces()
|
||||||
|
self.env.clear_file_keys()
|
||||||
|
|
||||||
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),
|
||||||
|
|||||||
Reference in New Issue
Block a user