mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
79 lines
2.0 KiB
Python
Executable File
79 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Copyright (c) 2013-2023 Igor Pecovnik, igor@armbian.com
|
|
#
|
|
# This file is a part of the Armbian Build Framework
|
|
# https://github.com/armbian/build/
|
|
#
|
|
import logging
|
|
import os
|
|
import sys
|
|
|
|
log: logging.Logger = logging.getLogger("armbian_utils")
|
|
|
|
|
|
def parse_env_for_tokens(env_name):
|
|
result = []
|
|
# Read the environment; if None, return an empty list.
|
|
val = os.environ.get(env_name, None)
|
|
if val is None:
|
|
return result
|
|
# tokenize val; split by whitespace, line breaks, commas, and semicolons.
|
|
# trim whitespace from tokens.
|
|
return [token for token in [token.strip() for token in (val.split())] if token != ""]
|
|
|
|
|
|
def get_from_env(env_name):
|
|
value = os.environ.get(env_name, None)
|
|
if value is not None:
|
|
value = value.strip()
|
|
return value
|
|
|
|
|
|
def get_from_env_or_bomb(env_name):
|
|
value = get_from_env(env_name)
|
|
if value is None:
|
|
raise Exception(f"{env_name} environment var not set")
|
|
if value == "":
|
|
raise Exception(f"{env_name} environment var is empty")
|
|
return value
|
|
|
|
|
|
def yes_or_no_or_bomb(value):
|
|
if value == "yes":
|
|
return True
|
|
if value == "no":
|
|
return False
|
|
raise Exception(f"Expected yes or no, got {value}")
|
|
|
|
|
|
def show_incoming_environment():
|
|
log.debug("--ENV-- Environment:")
|
|
for key in os.environ:
|
|
log.debug(f"--ENV-- {key}={os.environ[key]}")
|
|
|
|
|
|
def setup_logging():
|
|
try:
|
|
import coloredlogs
|
|
level = "INFO"
|
|
if get_from_env("LOG_DEBUG") == "yes":
|
|
level = "DEBUG"
|
|
format = "%(message)s"
|
|
styles = {
|
|
'trace': {'color': 'white', 'bold': False},
|
|
'debug': {'color': 'white', 'bold': False},
|
|
'info': {'color': 'green', 'bold': True},
|
|
'warning': {'color': 'yellow', 'bold': True},
|
|
'error': {'color': 'red'},
|
|
'critical': {'bold': True, 'color': 'red'}
|
|
}
|
|
coloredlogs.install(level=level, stream=sys.stderr, isatty=True, fmt=format, level_styles=styles)
|
|
except ImportError:
|
|
level = logging.INFO
|
|
if get_from_env("LOG_DEBUG") == "yes":
|
|
level = logging.DEBUG
|
|
logging.basicConfig(level=level, stream=sys.stderr)
|