From 8810f231ccc11f541ba4a832339484284858bca7 Mon Sep 17 00:00:00 2001 From: Sebastian Riesenberg Date: Tue, 13 Feb 2024 11:11:27 +0100 Subject: [PATCH] fix logger writing to hardcoded path --- awsume/autoawsume/main.py | 14 +++++--------- awsume/awsumepy/lib/config_management.py | 12 +++++++++--- awsume/awsumepy/lib/constants.py | 8 ++++++++ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/awsume/autoawsume/main.py b/awsume/autoawsume/main.py index 9670696..eaf0806 100644 --- a/awsume/autoawsume/main.py +++ b/awsume/autoawsume/main.py @@ -1,19 +1,17 @@ import json -import subprocess import configparser import time -import sys -import os import logging from logging.handlers import RotatingFileHandler -from pathlib import Path from datetime import datetime, timedelta import dateutil -from ..awsumepy.lib.aws_files import get_aws_files, delete_section +from ..awsumepy.lib.aws_files import get_aws_files from ..awsumepy.lib.logger import LogFormatter from ..awsumepy.lib.logger import logger as awsume_logger +from ..awsumepy.lib import constants from ..awsumepy.lib import exceptions +from ..awsumepy.lib.config_management import migrate_to_xdg_base_directories from .. import awsumepy logger = logging.getLogger('autoawsume') # type: logging.Logger @@ -80,11 +78,9 @@ def main(): def configure_logger(): - log_dir = str(Path('~/.awsume/logs/').expanduser()) - log_file = str(Path('~/.awsume/logs/autoawsume.log').expanduser()) + migrate_to_xdg_base_directories() - if not os.path.exists(log_dir): - os.makedirs(log_dir) + log_file = str(constants.AWSUME_LOG_DIR / 'autoawsume.log') log_handler = RotatingFileHandler( filename=log_file, diff --git a/awsume/awsumepy/lib/config_management.py b/awsume/awsumepy/lib/config_management.py index 34d0a0b..22da832 100644 --- a/awsume/awsumepy/lib/config_management.py +++ b/awsume/awsumepy/lib/config_management.py @@ -29,14 +29,15 @@ - set [config_key] [config_value] """ - -def load_config() -> dict: +def migrate_to_xdg_base_directories() -> None: if not os.path.exists(str(constants.AWSUME_DIR)): os.makedirs(str(constants.AWSUME_DIR)) if not os.path.exists(str(constants.AWSUME_CONFIG.parent)): os.makedirs(str(constants.AWSUME_CONFIG.parent)) if not os.path.isfile(str(constants.AWSUME_CONFIG)): open(str(constants.AWSUME_CONFIG), 'a').close() + if not os.path.exists(str(constants.AWSUME_LOG_DIR)): + os.makedirs(str(constants.AWSUME_LOG_DIR)) if constants.IS_USING_XDG_CONFIG_HOME and os.path.isfile(constants.AWSUME_CONFIG_LEGACY_PATH): # handle migration to XDG base directory: config file move(constants.AWSUME_CONFIG_LEGACY_PATH, constants.AWSUME_CONFIG) @@ -46,16 +47,21 @@ def load_config() -> dict: if constants.IS_USING_XDG_DATA_HOME and os.path.isdir(constants.AWSUME_CACHE_DIR_LEGACY_PATH): # handle migration to XDG base directory: data dir move(constants.AWSUME_DIR_LEGACY_PATH, constants.AWSUME_DIR) + if constants.IS_USING_XDG_STATE_HOME and os.path.isdir(constants.AWSUME_LOG_DIR_LEGACY_PATH): + # handle migration to XDG base directory: log dir + move(constants.AWSUME_LOG_DIR_LEGACY_PATH, constants.AWSUME_LOG_DIR) if ( constants.IS_USING_XDG_CONFIG_HOME and constants.IS_USING_XDG_DATA_HOME and constants.IS_USING_XDG_CACHE_HOME and + constants.IS_USING_XDG_STATE_HOME and os.path.isdir(constants.AWSUME_DIR_LEGACY_PATH) ): # cleanup legacy ~/.awsume dir os.rmdir(constants.AWSUME_DIR_LEGACY_PATH) - +def load_config() -> dict: + migrate_to_xdg_base_directories() options = None try: diff --git a/awsume/awsumepy/lib/constants.py b/awsume/awsumepy/lib/constants.py index 8dc28d5..185a978 100644 --- a/awsume/awsumepy/lib/constants.py +++ b/awsume/awsumepy/lib/constants.py @@ -4,10 +4,12 @@ IS_USING_XDG_CONFIG_HOME = bool(os.getenv('XDG_CONFIG_HOME')) IS_USING_XDG_DATA_HOME = bool(os.getenv('XDG_DATA_HOME')) IS_USING_XDG_CACHE_HOME = bool(os.getenv('XDG_CACHE_HOME')) +IS_USING_XDG_STATE_HOME = bool(os.getenv('XDG_STATE_HOME')) AWSUME_DIR_LEGACY_PATH = Path('~/.awsume').expanduser() AWSUME_CONFIG_LEGACY_PATH = Path('~/.awsume' + '/config.yaml').expanduser() AWSUME_CACHE_DIR_LEGACY_PATH = Path('~/.awsume/cache').expanduser() +AWSUME_LOG_DIR_LEGACY_PATH = Path('~/.awsume/logs').expanduser() if IS_USING_XDG_CONFIG_HOME: XDG_CONFIG_HOME = Path(os.getenv('XDG_CONFIG_HOME')).expanduser() @@ -27,5 +29,11 @@ else: AWSUME_CACHE_DIR = AWSUME_CACHE_DIR_LEGACY_PATH +if IS_USING_XDG_STATE_HOME: + XDG_STATE_HOME = Path(os.getenv('XDG_STATE_HOME')).expanduser() + AWSUME_LOG_DIR = XDG_STATE_HOME / 'awsume/logs' +else: + AWSUME_LOG_DIR = AWSUME_LOG_DIR_LEGACY_PATH + DEFAULT_CREDENTIALS_FILE = Path('~/.aws/credentials').expanduser() DEFAULT_CONFIG_FILE = Path('~/.aws/config').expanduser()