mirror of
https://github.com/HorlogeSkynet/archey4
synced 2026-01-03 04:00:10 +01:00
* Moved constants and logo ascii art out of the main file
* Moved Configuration class to separate file
* Moved Output class to a separate file
* Moved hostname class definition to it's own separate file
* Moved Model class definition to it's own file
* Moved Kernel class to its own file
* Moved uptime class definition to it's own file
* Moved Disk class definition to its own file
* Moved RAM class definition to it's own file
* Moved CPU class definition to it's own file
* Moved LanIp class definition to it's own file
* Moved WanIp class definition to a separate file
* Moved Packages class definition to separate file
* Moved User class definition to its own file
* Moved entry class definitions to their own directory
* Moved GPU entry class definition to a separate file
* Moved temperature entry class definition to a separate file
* Moved terminal entry class definition to separate file
* Moved shell entry class definition to separate file
* Rewrited the `LanIp` module to handle more cases and optimizations
* Moved window manager and desktop environment class definitions to separate files
* Moved distro class definition to separate file
* Removed direct use of COLOR_DICT in disk.py and ram.py
* Moved unit tests and modified import paths
* Moved {DE,WM}_DICT constants to their respective modules
* Made `Configuration` & `Processes` (new class) act as singletons
* Set the `Configuration` internal `config` dictionary to "private" attribute
+ Now relies on a `.pylintrc` file for Pylint (now almost fully-compliant)
+ Fixed typos
+ Added another dependency on `netifaces`, but this should remove the assumption about tools available in the user's environment
+ The project may now be run as a Python module
+ Marked Python 3.8 as supported for SetupTools
+ Added instructions (and tests) to build a standalone version of Archey
+ Adds @lannuttia to COPYRIGHT (initiator of the major rework)
- Removed the dependency to `net-tools`
Co-authored-by: Samuel FORESTIER <dev@samuel.domains>
79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
"""
|
|
Output class file.
|
|
It supports entries lazy-insertion, logo detection, and final printing.
|
|
"""
|
|
|
|
import re
|
|
import sys
|
|
from subprocess import check_output
|
|
|
|
import distro
|
|
|
|
from archey.distributions import Distributions
|
|
from archey.constants import COLOR_DICT, LOGOS_DICT
|
|
|
|
|
|
class Output:
|
|
"""
|
|
This is the object handling output entries populating.
|
|
It also handles the logo choice based on some system detections.
|
|
"""
|
|
def __init__(self):
|
|
# First we check whether the Kernel has been compiled as a WSL.
|
|
if re.search(
|
|
'Microsoft',
|
|
check_output(['uname', '-r'], universal_newlines=True)):
|
|
self.distribution = Distributions.WINDOWS
|
|
|
|
else:
|
|
distribution_id = distro.id()
|
|
|
|
for distribution in Distributions:
|
|
if re.fullmatch(
|
|
distribution.value,
|
|
distribution_id,
|
|
re.IGNORECASE):
|
|
self.distribution = distribution
|
|
break
|
|
|
|
else:
|
|
self.distribution = Distributions.LINUX
|
|
|
|
# Each class output will be added in the list below afterwards
|
|
self.results = []
|
|
|
|
def append(self, key, value):
|
|
"""Append a pre-formatted entry to the final output content"""
|
|
self.results.append(
|
|
'{0}{1}:{2} {3}'.format(
|
|
COLOR_DICT[self.distribution][1],
|
|
key,
|
|
COLOR_DICT['clear'],
|
|
value
|
|
)
|
|
)
|
|
|
|
def output(self):
|
|
"""
|
|
Finally render the output entries.
|
|
It handles text centering additionally to value and colors replacing.
|
|
"""
|
|
# Let's center the entries according to the logo (handles odd numbers)
|
|
self.results[0:0] = [''] * ((18 - len(self.results)) // 2)
|
|
self.results.extend([''] * (18 - len(self.results)))
|
|
|
|
try:
|
|
print(
|
|
LOGOS_DICT[self.distribution].format(
|
|
c=COLOR_DICT[self.distribution],
|
|
r=self.results
|
|
) + COLOR_DICT['clear']
|
|
)
|
|
|
|
except UnicodeError:
|
|
print(
|
|
'Your locale or TTY seems not supporting UTF8 encoding.\n'
|
|
'Please disable Unicode within your configuration file.',
|
|
file=sys.stderr
|
|
)
|