|
1 | 1 | #!/usr/bin/env python3
|
2 | 2 |
|
| 3 | +import logging |
3 | 4 | import subprocess
|
4 | 5 | import sys
|
5 | 6 | from os import chdir
|
|
8 | 9 |
|
9 | 10 | from PyLoadBar import load
|
10 | 11 |
|
11 |
| -from setup_loggers import mainLogger, processLogger |
| 12 | + |
12 | 13 |
|
13 | 14 | chdir(dirname(__file__))
|
14 | 15 |
|
15 | 16 | __version__ = '0.1.0'
|
16 | 17 |
|
17 | 18 | textborder: str = f'\n<{"*" * 120}>\n'
|
18 | 19 |
|
| 20 | +def config_logs(__file__) -> tuple[logging.Logger, logging.Logger]: |
| 21 | + """Set program logging configuration and generate loggers. |
| 22 | +
|
| 23 | +--- |
| 24 | +
|
| 25 | + Parameters: |
| 26 | + :param __file__: file to be logged. |
| 27 | + :type __file__: Any |
| 28 | + :return: program logging configuration. |
| 29 | + :rtype: tuple[Logger, Logger] |
| 30 | + """ |
| 31 | + # Log activity from file. |
| 32 | + mainLogger = logging.getLogger(__file__) |
| 33 | + mainLogger.setLevel(logging.INFO) |
| 34 | + |
| 35 | +# Log activity from upgrade script `global_upgrade.ps1`. |
| 36 | + processLogger = logging.getLogger('Subprocess') |
| 37 | + processLogger.setLevel(logging.INFO) |
| 38 | + |
| 39 | +# Handler for pre/post upgrade subprocess. |
| 40 | + mainFormatter = logging.Formatter( |
| 41 | + '[{asctime} :: {levelname} :: Line: {lineno}] - {message}\n', style='{') |
| 42 | + mainHandler = logging.FileHandler('./logs/output.log') |
| 43 | + mainHandler.setFormatter(mainFormatter) |
| 44 | + |
| 45 | +# Handler for during upgrade subprocess |
| 46 | + processFormatter = logging.Formatter( |
| 47 | + '[{asctime} :: {levelname} :: {funcName}] - {message}\n', style='{') |
| 48 | + processHandler = logging.FileHandler('./logs/output.log') |
| 49 | + processHandler.setFormatter(processFormatter) |
| 50 | + |
| 51 | +# Add handlers to both loggers. |
| 52 | + mainLogger.addHandler(mainHandler) |
| 53 | + processLogger.addHandler(processHandler) |
| 54 | + |
| 55 | + return mainLogger,processLogger |
| 56 | + |
| 57 | +# Set logger names. |
| 58 | +mainLogger, processLogger = config_logs(__file__) |
| 59 | + |
19 | 60 | def get_outdated_pkgs():
|
20 | 61 | """Subprocess to retrieve outdated global pip packages using `pip list --outdated`.
|
21 | 62 |
|
22 | 63 | ---
|
23 | 64 |
|
24 | 65 | Parameters:
|
25 |
| - :return: retrieve and pass outdated global pip packages into a list for upgrading. |
| 66 | + :return: retrieve and pass outdated global pip packages to a list to be upgraded. |
26 | 67 | :rtype: (List[str] | None)
|
27 | 68 | """
|
28 | 69 | outdated_pkgs =[]
|
@@ -54,7 +95,6 @@ def upgrade_outdated(outdated_pkgs: list):
|
54 | 95 | :rtype: tuple[list, list] | None
|
55 | 96 | """
|
56 | 97 | processLogger.info('Upgrading outdated pip packages...')
|
57 |
| - |
58 | 98 | print('Upgrading outdated pip packages...\n')
|
59 | 99 |
|
60 | 100 | processLogger.info('No. Package Version Latest Type Status ')
|
@@ -103,7 +143,7 @@ def upgrade_all():
|
103 | 143 | processLogger.info('Upgrading outdated pip packages using "brute force"...')
|
104 | 144 | print('Upgrading outdated pip packages using "brute force"...\n')
|
105 | 145 |
|
106 |
| - script_p = subprocess.Popen(['powershell.exe', './scripts/force_upgrade_pip_pkgs.ps1'], stdout=subprocess.PIPE, stderr = subprocess.STDOUT) |
| 146 | + script_p = subprocess.Popen(['powershell.exe', './scripts/force_upgrade_pip_pkgs.ps1'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
107 | 147 | with script_p.stdout:
|
108 | 148 | try:
|
109 | 149 | for line in iter(script_p.stdout.readline, b''):
|
@@ -160,13 +200,13 @@ def main() -> NoReturn | None:
|
160 | 200 | upgradelist, errorlist = upgrade_outdated(outdated_pkgs)
|
161 | 201 | total=len(outdated_pkgs)
|
162 | 202 | mainLogger.info('Successfully completed upgrade process!')
|
163 |
| - mainLogger.info('\nSUMMARY:') |
| 203 | + mainLogger.info('SUMMARY:') |
164 | 204 | mainLogger.info(f'No. of packages upgraded = {len(upgradelist)}/{total}')
|
165 |
| - mainLogger.info(f'No. of upgrade errors = {len(upgradelist)}/{total}') |
| 205 | + mainLogger.info(f'No. of upgrade errors = {len(errorlist)}/{total}') |
166 | 206 | print('\nSuccessfully completed upgrade process!')
|
167 | 207 | print('\nSUMMARY:')
|
168 | 208 | print(f'No. of packages upgraded = {len(upgradelist)}/{total}')
|
169 |
| - print(f'No. of upgrade errors = {len(upgradelist)}/{total}') |
| 209 | + print(f'No. of upgrade errors = {len(errorlist)}/{total}') |
170 | 210 | input('\nPress Enter to Exit.')
|
171 | 211 | return exitProgram(0)
|
172 | 212 | else:
|
|
0 commit comments