Use default python logger
This commit is contained in:
parent
571cfe4585
commit
24d86e7eab
7 changed files with 33 additions and 54 deletions
|
@ -1,4 +1,5 @@
|
||||||
import sys
|
import sys
|
||||||
|
import logging
|
||||||
|
|
||||||
from os.path import isdir
|
from os.path import isdir
|
||||||
from osdk import const, shell
|
from osdk import const, shell
|
||||||
|
@ -9,19 +10,20 @@ import osdk.vt100 as vt100
|
||||||
|
|
||||||
|
|
||||||
def main() -> int:
|
def main() -> int:
|
||||||
|
logging.basicConfig(
|
||||||
|
level=logging.INFO,
|
||||||
|
format=f"{vt100.CYAN}%(asctime)s{vt100.RESET} {vt100.YELLOW}%(levelname)s{vt100.RESET} %(name)s: %(message)s",
|
||||||
|
datefmt="%Y-%m-%d %H:%M:%S",
|
||||||
|
)
|
||||||
a = parse(sys.argv[1:])
|
a = parse(sys.argv[1:])
|
||||||
|
|
||||||
if not a.consumeOpt("verbose", False):
|
|
||||||
if not isdir(const.OSDK_DIR):
|
|
||||||
shell.mkdir(const.OSDK_DIR)
|
|
||||||
sys.stderr = open(f"{const.OSDK_DIR}/osdk.log", "w")
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
loadAll()
|
loadAll()
|
||||||
exec(a)
|
exec(a)
|
||||||
return 0
|
return 0
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"{vt100.RED}{e}{vt100.RESET}")
|
logging.error(f"{vt100.RED}{e}{vt100.RESET}")
|
||||||
print()
|
print()
|
||||||
|
|
||||||
usage()
|
usage()
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import os
|
import os
|
||||||
|
import logging
|
||||||
from typing import TextIO
|
from typing import TextIO
|
||||||
|
|
||||||
from osdk.model import Props
|
from osdk.model import Props
|
||||||
from osdk.ninja import Writer
|
from osdk.ninja import Writer
|
||||||
from osdk.logger import Logger
|
|
||||||
from osdk.context import ComponentInstance, Context, contextFor
|
from osdk.context import ComponentInstance, Context, contextFor
|
||||||
from osdk import shell, rules
|
from osdk import shell, rules
|
||||||
|
|
||||||
logger = Logger("builder")
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def gen(out: TextIO, context: Context):
|
def gen(out: TextIO, context: Context):
|
||||||
|
|
|
@ -2,13 +2,12 @@ from typing import cast, Protocol, Iterable
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import os
|
import os
|
||||||
|
import logging
|
||||||
|
|
||||||
from osdk.model import ProjectManifest, TargetManifest, ComponentManifest, Props, Type, Tool, Tools
|
from osdk.model import ProjectManifest, TargetManifest, ComponentManifest, Props, Type, Tool, Tools
|
||||||
from osdk.logger import Logger
|
|
||||||
from osdk import const, shell, jexpr, utils, rules, mixins
|
from osdk import const, shell, jexpr, utils, rules, mixins
|
||||||
|
|
||||||
logger = Logger("context")
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class IContext(Protocol):
|
class IContext(Protocol):
|
||||||
|
@ -238,7 +237,7 @@ def contextFor(targetSpec: str, props: Props = {}) -> Context:
|
||||||
if targetSpec in context:
|
if targetSpec in context:
|
||||||
return context[targetSpec]
|
return context[targetSpec]
|
||||||
|
|
||||||
logger.log(f"Loading context for '{targetSpec}'")
|
logger.info(f"Loading context for '{targetSpec}'")
|
||||||
|
|
||||||
targetEls = targetSpec.split(":")
|
targetEls = targetSpec.split(":")
|
||||||
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
import sys
|
|
||||||
import osdk.vt100 as vt100
|
|
||||||
|
|
||||||
|
|
||||||
class Logger:
|
|
||||||
name: str
|
|
||||||
|
|
||||||
def __init__(self, name: str):
|
|
||||||
self.name = name
|
|
||||||
|
|
||||||
def log(self, message: str):
|
|
||||||
print(
|
|
||||||
f"{vt100.CYAN}[{self.name}]{vt100.RESET} {message}", file=sys.stderr)
|
|
||||||
|
|
||||||
def warn(self, message: str):
|
|
||||||
print(
|
|
||||||
f"{vt100.YELLOW}[{self.name}]{vt100.RESET} {message}", file=sys.stderr)
|
|
||||||
|
|
||||||
def error(self, message: str):
|
|
||||||
print(
|
|
||||||
f"{vt100.RED}[{self.name}]{vt100.RESET} {message}", file=sys.stderr)
|
|
|
@ -1,12 +1,12 @@
|
||||||
import os
|
import os
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
import logging
|
||||||
|
|
||||||
from osdk.jexpr import Json
|
from osdk.jexpr import Json
|
||||||
from osdk.logger import Logger
|
|
||||||
|
|
||||||
|
|
||||||
logger = Logger("model")
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
Props = dict[str, Any]
|
Props = dict[str, Any]
|
||||||
|
|
||||||
|
@ -259,13 +259,13 @@ class ComponentManifest(Manifest):
|
||||||
def isEnabled(self, target: TargetManifest) -> tuple[bool, str]:
|
def isEnabled(self, target: TargetManifest) -> tuple[bool, str]:
|
||||||
for k, v in self.enableIf.items():
|
for k, v in self.enableIf.items():
|
||||||
if not k in target.props:
|
if not k in target.props:
|
||||||
logger.log(
|
logger.info(
|
||||||
f"Component {self.id} disabled by missing {k} in target")
|
f"Component {self.id} disabled by missing {k} in target")
|
||||||
return False, f"Missing props '{k}' in target"
|
return False, f"Missing props '{k}' in target"
|
||||||
|
|
||||||
if not target.props[k] in v:
|
if not target.props[k] in v:
|
||||||
vStrs = [f"'{str(x)}'" for x in v]
|
vStrs = [f"'{str(x)}'" for x in v]
|
||||||
logger.log(
|
logger.info(
|
||||||
f"Component {self.id} disabled by {k}={target.props[k]} not in {v}")
|
f"Component {self.id} disabled by {k}={target.props[k]} not in {v}")
|
||||||
return False, f"Props missmatch for '{k}': Got '{target.props[k]}' but expected {', '.join(vStrs)}"
|
return False, f"Props missmatch for '{k}': Got '{target.props[k]}' but expected {', '.join(vStrs)}"
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
import os
|
import os
|
||||||
|
import logging
|
||||||
|
|
||||||
import importlib.util as importlib
|
import importlib.util as importlib
|
||||||
from osdk.logger import Logger
|
|
||||||
from osdk.shell import readdir
|
from osdk.shell import readdir
|
||||||
|
|
||||||
logger = Logger("plugins")
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def load(path: str):
|
def load(path: str):
|
||||||
logger.log(f"Loading plugin {path}")
|
logger.info(f"Loading plugin {path}")
|
||||||
spec = importlib.spec_from_file_location("plugin", path)
|
spec = importlib.spec_from_file_location("plugin", path)
|
||||||
|
|
||||||
if not spec or not spec.loader:
|
if not spec or not spec.loader:
|
||||||
|
@ -20,7 +19,7 @@ def load(path: str):
|
||||||
|
|
||||||
|
|
||||||
def loadAll():
|
def loadAll():
|
||||||
logger.log("Loading plugins...")
|
logger.info("Loading plugins...")
|
||||||
for files in readdir(os.path.join("meta", "plugins")):
|
for files in readdir(os.path.join("meta", "plugins")):
|
||||||
if files.endswith(".py"):
|
if files.endswith(".py"):
|
||||||
plugin = load(os.path.join("meta", "plugins", files))
|
plugin = load(os.path.join("meta", "plugins", files))
|
||||||
|
|
|
@ -8,11 +8,11 @@ import re
|
||||||
import shutil
|
import shutil
|
||||||
import fnmatch
|
import fnmatch
|
||||||
import platform
|
import platform
|
||||||
|
import logging
|
||||||
|
|
||||||
from osdk.logger import Logger
|
|
||||||
from osdk import const
|
from osdk import const
|
||||||
|
|
||||||
logger = Logger("shell")
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Uname:
|
class Uname:
|
||||||
|
@ -45,7 +45,7 @@ def sha256sum(path: str) -> str:
|
||||||
|
|
||||||
|
|
||||||
def find(path: str | list[str], wildcards: list[str] = [], recusive: bool = True) -> list[str]:
|
def find(path: str | list[str], wildcards: list[str] = [], recusive: bool = True) -> list[str]:
|
||||||
logger.log(f"Looking for files in {path} matching {wildcards}")
|
logger.info(f"Looking for files in {path} matching {wildcards}")
|
||||||
|
|
||||||
result: list[str] = []
|
result: list[str] = []
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ def find(path: str | list[str], wildcards: list[str] = [], recusive: bool = True
|
||||||
|
|
||||||
|
|
||||||
def mkdir(path: str) -> str:
|
def mkdir(path: str) -> str:
|
||||||
logger.log(f"Creating directory {path}")
|
logger.info(f"Creating directory {path}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
os.makedirs(path)
|
os.makedirs(path)
|
||||||
|
@ -92,7 +92,7 @@ def mkdir(path: str) -> str:
|
||||||
|
|
||||||
|
|
||||||
def rmrf(path: str) -> bool:
|
def rmrf(path: str) -> bool:
|
||||||
logger.log(f"Removing directory {path}")
|
logger.info(f"Removing directory {path}")
|
||||||
|
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
return False
|
return False
|
||||||
|
@ -111,7 +111,7 @@ def wget(url: str, path: str | None = None) -> str:
|
||||||
if os.path.exists(path):
|
if os.path.exists(path):
|
||||||
return path
|
return path
|
||||||
|
|
||||||
logger.log(f"Downloading {url} to {path}")
|
logger.info(f"Downloading {url} to {path}")
|
||||||
|
|
||||||
r = requests.get(url, stream=True)
|
r = requests.get(url, stream=True)
|
||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
|
@ -125,7 +125,7 @@ def wget(url: str, path: str | None = None) -> str:
|
||||||
|
|
||||||
|
|
||||||
def exec(*args: str):
|
def exec(*args: str):
|
||||||
logger.log(f"Executing {args}")
|
logger.info(f"Executing {args}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
proc = subprocess.run(args)
|
proc = subprocess.run(args)
|
||||||
|
@ -147,7 +147,7 @@ def exec(*args: str):
|
||||||
|
|
||||||
|
|
||||||
def popen(*args: str) -> str:
|
def popen(*args: str) -> str:
|
||||||
logger.log(f"Executing {args}")
|
logger.info(f"Executing {args}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
proc = subprocess.run(args, stdout=subprocess.PIPE, stderr=sys.stderr)
|
proc = subprocess.run(args, stdout=subprocess.PIPE, stderr=sys.stderr)
|
||||||
|
@ -165,7 +165,7 @@ def popen(*args: str) -> str:
|
||||||
|
|
||||||
|
|
||||||
def readdir(path: str) -> list[str]:
|
def readdir(path: str) -> list[str]:
|
||||||
logger.log(f"Reading directory {path}")
|
logger.info(f"Reading directory {path}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return os.listdir(path)
|
return os.listdir(path)
|
||||||
|
@ -174,13 +174,13 @@ def readdir(path: str) -> list[str]:
|
||||||
|
|
||||||
|
|
||||||
def cp(src: str, dst: str):
|
def cp(src: str, dst: str):
|
||||||
logger.log(f"Copying {src} to {dst}")
|
logger.info(f"Copying {src} to {dst}")
|
||||||
|
|
||||||
shutil.copy(src, dst)
|
shutil.copy(src, dst)
|
||||||
|
|
||||||
|
|
||||||
def cpTree(src: str, dst: str):
|
def cpTree(src: str, dst: str):
|
||||||
logger.log(f"Copying {src} to {dst}")
|
logger.info(f"Copying {src} to {dst}")
|
||||||
|
|
||||||
shutil.copytree(src, dst, dirs_exist_ok=True)
|
shutil.copytree(src, dst, dirs_exist_ok=True)
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ def latest(cmd: str) -> str:
|
||||||
if cmd in LATEST_CACHE:
|
if cmd in LATEST_CACHE:
|
||||||
return LATEST_CACHE[cmd]
|
return LATEST_CACHE[cmd]
|
||||||
|
|
||||||
logger.log(f"Finding latest version of {cmd}")
|
logger.info(f"Finding latest version of {cmd}")
|
||||||
|
|
||||||
regex = re.compile(r"^" + re.escape(cmd) + r"(-.[0-9]+)?(\.exe)?$")
|
regex = re.compile(r"^" + re.escape(cmd) + r"(-.[0-9]+)?(\.exe)?$")
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@ def latest(cmd: str) -> str:
|
||||||
versions.sort()
|
versions.sort()
|
||||||
chosen = versions[-1]
|
chosen = versions[-1]
|
||||||
|
|
||||||
logger.log(f"Chosen {chosen} as latest version of {cmd}")
|
logger.info(f"Chosen {chosen} as latest version of {cmd}")
|
||||||
|
|
||||||
LATEST_CACHE[cmd] = chosen
|
LATEST_CACHE[cmd] = chosen
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue