This commit is contained in:
deathbybandaid 2022-02-09 13:33:17 -05:00
parent 4dfda826c5
commit a8afdba69a
5 changed files with 139 additions and 3 deletions

View File

@ -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)

View File

@ -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
}

View File

@ -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")

View File

@ -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)

3
SpiceBot/version.json Normal file
View File

@ -0,0 +1,3 @@
{
"SpiceBot": "v0.9.3-beta"
}