summaryrefslogtreecommitdiff
path: root/src/funcs_worklogger.py
diff options
context:
space:
mode:
authorWayne-Cole <77279425+Wacky404@users.noreply.github.com>2024-12-19 01:06:07 -0600
committerWayne-Cole <77279425+Wacky404@users.noreply.github.com>2024-12-19 01:06:07 -0600
commitfc89c79cf88c47a19a6162aa1d311b26d8376adb (patch)
treea03b22bc4c52d84ee67a27c99854aad8ff2d89d7 /src/funcs_worklogger.py
parent5b94345217a6461091bfda17de75b7e07bd5e9a3 (diff)
downloadworklogger-fc89c79cf88c47a19a6162aa1d311b26d8376adb.tar.xz
worklogger-fc89c79cf88c47a19a6162aa1d311b26d8376adb.zip
feat: worked on implementing merge subcommand functionality; almost finish
Diffstat (limited to 'src/funcs_worklogger.py')
-rw-r--r--src/funcs_worklogger.py72
1 files changed, 30 insertions, 42 deletions
diff --git a/src/funcs_worklogger.py b/src/funcs_worklogger.py
index b645af8..b58efa4 100644
--- a/src/funcs_worklogger.py
+++ b/src/funcs_worklogger.py
@@ -8,9 +8,9 @@ email: wacky404@dev.com
from pprint import pprint
from log_util_worklogger import logger
-from datetime import timezone
+from datetime import timezone, datetime
+from pathlib import Path
import csv
-import datetime
import os
import os.path as osp
import paths_util_worklogger as pu
@@ -21,20 +21,17 @@ def configure(dir_list=None):
for directory in dir_list:
try:
os.makedirs(name=directory, exist_ok=True)
- logger.debug(f"Directory {directory} created")
-
except FileExistsError as e:
- logger.exception(f"An exception of type {type(e).__name__} occurred. "
- f"Details: This is okay, output will save in existing {directory}.")
+ print(f"An exception of type {type(e).__name__} occurred. "
+ f"Details: This is okay, output will save in existing {directory}.")
+
else:
for directory in [pu.output_dir, pu.log_dir]:
try:
os.makedirs(name=directory, exist_ok=True)
- logger.debug(f"Directory {directory} created")
-
except FileExistsError as e:
- logger.exception(f"An exception of type {type(e).__name__} occurred. "
- f"Details: This is okay, output will save in existing {directory}.")
+ print(f"An exception of type {type(e).__name__} occurred. "
+ f"Details: This is okay, output will save in existing {directory}.")
def parse(filepath=None):
@@ -202,48 +199,39 @@ def add_log(file_format=None, proj_settings=None, savepath=None, backuppath=None
logger.info(f"Written {kwargs['job']} worklog to {path}")
-def combine_log(specified_ext, target_job, target_extension=None, savepath=None, backuppath=None, delete=False):
- # you pick a job then if you want you can choose a specific file type to target for combining into your specified_ext
- # TODO: Finish function stopped just before date sorting; getting a data structure prepped for sorting then transformation
+def combine_log(target_job, specified_ext, target_extension=None, savepath=None, backuppath=None, delete=False):
if target_job is None:
logger.info('You must specify a job to run combine_log()')
return None
- for dir in (savepath, backuppath):
- buffer = []
- if osp.exists(dir):
- target_extension = target_extension.strip('.')
- # only thing affected by this blocks if statement
- if target_extension is not None:
- files = list(Path(dir).glob(
- f'**/{target_job.upper()}.{target_extension}'))
- else:
- files = list(Path(dir).glob(f'**/{target_job.upper()}'))
- logger.debug(f"Found file(s): {files}")
- if len(files) < 2:
- logger.exception(
- f'combine_log() reqs 2 or more files. Found less than 2 of {target_job.upper()}.{target_extension}')
- return None
+ buffer = []
+ # changed this from iterating over both dirs; thinking of limiting to one
+ if osp.exists(savepath):
+ files = list(Path(savepath).glob(f'**/{target_job.upper()}.**'))
+ logger.debug(f"Found file(s): {files}")
+ if len(files) < 2:
+ logger.exception(
+ f'combine_log() reqs 2 or more files. Found less than 2 of {target_job.upper()}.*')
+ return None
- for file in files:
- buffer.append(*parse(file))
+ for file in files:
+ buffer.extend(parse(file))
- for index, line in enumerate(buffer):
- buffer[index] = [index, line]
+ for index, line in enumerate(buffer):
+ buffer[index] = [index, line]
- for content in buffer:
- _entry = content[1].split(' ')
- for param in _entry:
- param_split = param.split(':')
- var, val = param_split[0], param_split[1] if len(
- param_split) == 2 else None
- # need to sort datetimes ... actually easy
- if var == 'timestamp':
- buffer[content[0]].append(val)
+ for content in buffer:
+ _entry = content[1].split(' ')
+ buffer[content[0]].append(_entry[0])
+ # TODO: Finished sorting logs, now just need to write to target file and delete if needed.
+ try:
buffer.sort(key=lambda x: datetime.strptime(
x[2], "%Y-%m-%dT%H:%M:%S%Z"))
- pprint(buffer)
+ except ValueError as e:
+ logger.exception(f"An exception of type {type(e).__name__} occurred. "
+ f"Details: {str(e)}")
+ return None
def send_email(sender=None, to=None, subject=None, files=None):