From a8afdba69af181cbc99791a60afffcedf9398b4f Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Wed, 9 Feb 2022 13:33:17 -0500 Subject: [PATCH] test --- SpiceBot/SpiceBotCore/__init__.py | 9 ++ SpiceBot/SpiceBotCore/config/__init__.py | 15 +++ SpiceBot/SpiceBotCore/versions/__init__.py | 111 +++++++++++++++++++++ SpiceBot/__init__.py | 4 +- SpiceBot/version.json | 3 + 5 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 SpiceBot/SpiceBotCore/config/__init__.py create mode 100644 SpiceBot/SpiceBotCore/versions/__init__.py create mode 100644 SpiceBot/version.json diff --git a/SpiceBot/SpiceBotCore/__init__.py b/SpiceBot/SpiceBotCore/__init__.py index 7834f1d..304556b 100644 --- a/SpiceBot/SpiceBotCore/__init__.py +++ b/SpiceBot/SpiceBotCore/__init__.py @@ -1,4 +1,7 @@ +from .config import Config +from .versions import Versions + class SpiceBotCore_OBJ(): @@ -7,6 +10,12 @@ class SpiceBotCore_OBJ(): self.increment = 1 self.bot = None + self.config = None + self.versions = None + def setup(self, script_dir, bot): self.script_dir = script_dir self.bot = bot + + self.config = Config(script_dir, bot) + self.versions = Versions(self.config) diff --git a/SpiceBot/SpiceBotCore/config/__init__.py b/SpiceBot/SpiceBotCore/config/__init__.py new file mode 100644 index 0000000..0d21b3f --- /dev/null +++ b/SpiceBot/SpiceBotCore/config/__init__.py @@ -0,0 +1,15 @@ + + +class Config(): + + def __init__(self, script_dir, bot): + self.script_dir = script_dir + self.bot = bot + + self.internal = {} + + def core_setup(self): + + self.internal["paths"] = { + "script_dir": self.script_dir + } diff --git a/SpiceBot/SpiceBotCore/versions/__init__.py b/SpiceBot/SpiceBotCore/versions/__init__.py new file mode 100644 index 0000000..063e29a --- /dev/null +++ b/SpiceBot/SpiceBotCore/versions/__init__.py @@ -0,0 +1,111 @@ +import os +import sys +import platform +import pathlib +import json +import re + + +class Versions(): + + def __init__(self, config): + self.config = config + + self.dict = {} + + self.register_spicebot() + + self.register_env() + + def get_core_versions(self): + returndict = {} + for item in list(self.dict.keys()): + if self.dict[item]["type"] == "SpiceBot": + returndict[item] = self.dict[item].copy() + return returndict + + def register_version(self, item_name, item_version, item_type): + """ + Register a version item. + """ + + self.logger.debug("Registering %s item: %s %s" % (item_type, item_name, item_version)) + self.dict[item_name] = { + "name": item_name, + "version": item_version, + "type": item_type + } + + def register_spicebot(self): + """ + Register core version items. + """ + + script_dir = self.config.internal["paths"]["script_dir"] + version_file = pathlib.Path(script_dir).joinpath("version.json") + with open(version_file, 'r') as jsonversion: + versions = json.load(jsonversion) + + for key in list(versions.keys()): + self.register_version(key, versions[key], "SpiceBot") + + def is_docker(self): + path = "/proc/self/cgroup" + if not os.path.isfile(path): + return False + with open(path) as f: + for line in f: + if re.match("\d+:[\w=]+:/docker(-[ce]e)?/\w+", line): + return True + return False + + def is_virtualenv(self): + # return True if started from within a virtualenv or venv + base_prefix = getattr(sys, "base_prefix", None) + # real_prefix will return None if not in a virtualenv enviroment or the default python path + real_prefix = getattr(sys, "real_prefix", None) or sys.prefix + return base_prefix != real_prefix + + def register_env(self): + """ + Register env version items. + """ + + self.register_version("Python", sys.version, "env") + if sys.version_info.major == 2 or sys.version_info < (3, 7): + self.logger.error('Error: SpiceBot requires python 3.7+. Do NOT expect support for older versions of python.') + + opersystem = platform.system() + self.register_version("Operating System", opersystem, "env") + + system_alias = platform.release() + self.register_version("OS Release", system_alias, "env") + + if opersystem in ["Linux", "Darwin"]: + + # Linux/Mac + if os.getuid() == 0 or os.geteuid() == 0: + self.logger.warning('Do not run SpiceBot with root privileges.') + + elif opersystem in ["Windows"]: + + # Windows + if os.environ.get("USERNAME") == "Administrator": + self.logger.warning('Do not run SpiceBot as Administrator.') + + else: + # ['Java'] + if not len(opersystem): + os_string = "." + else: + os_string = ": %s" % opersystem + self.logger.warning("Uncommon Operating System, use at your own risk%s" % os_string) + + cpu_type = platform.machine() + self.register_version("CPU Type", cpu_type, "env") + + isvirtualenv = self.is_virtualenv() + self.register_version("Virtualenv", isvirtualenv, "env") + + isdocker = self.is_docker() + self.register_version("Docker", isdocker, "env") diff --git a/SpiceBot/__init__.py b/SpiceBot/__init__.py index 316419e..b13f08b 100644 --- a/SpiceBot/__init__.py +++ b/SpiceBot/__init__.py @@ -23,6 +23,4 @@ def setup(bot): def test(bot, trigger): bot.say("Testing the bot") bot.say("Attributes: %s" % [x for x in dir(sbcore) if not x.startswith("__")]) - bot.say("Test #%s" % sbcore.increment) - - sbcore.increment += 1 + bot.say("%s" % sbcore.versions.dict) diff --git a/SpiceBot/version.json b/SpiceBot/version.json new file mode 100644 index 0000000..ae8c5a5 --- /dev/null +++ b/SpiceBot/version.json @@ -0,0 +1,3 @@ +{ + "SpiceBot": "v0.9.3-beta" +}