test
This commit is contained in:
parent
4dfda826c5
commit
a8afdba69a
@ -1,4 +1,7 @@
|
|||||||
|
|
||||||
|
from .config import Config
|
||||||
|
from .versions import Versions
|
||||||
|
|
||||||
|
|
||||||
class SpiceBotCore_OBJ():
|
class SpiceBotCore_OBJ():
|
||||||
|
|
||||||
@ -7,6 +10,12 @@ class SpiceBotCore_OBJ():
|
|||||||
self.increment = 1
|
self.increment = 1
|
||||||
self.bot = None
|
self.bot = None
|
||||||
|
|
||||||
|
self.config = None
|
||||||
|
self.versions = None
|
||||||
|
|
||||||
def setup(self, script_dir, bot):
|
def setup(self, script_dir, bot):
|
||||||
self.script_dir = script_dir
|
self.script_dir = script_dir
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
|
|
||||||
|
self.config = Config(script_dir, bot)
|
||||||
|
self.versions = Versions(self.config)
|
||||||
|
|||||||
15
SpiceBot/SpiceBotCore/config/__init__.py
Normal file
15
SpiceBot/SpiceBotCore/config/__init__.py
Normal 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
|
||||||
|
}
|
||||||
111
SpiceBot/SpiceBotCore/versions/__init__.py
Normal file
111
SpiceBot/SpiceBotCore/versions/__init__.py
Normal 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")
|
||||||
@ -23,6 +23,4 @@ def setup(bot):
|
|||||||
def test(bot, trigger):
|
def test(bot, trigger):
|
||||||
bot.say("Testing the bot")
|
bot.say("Testing the bot")
|
||||||
bot.say("Attributes: %s" % [x for x in dir(sbcore) if not x.startswith("__")])
|
bot.say("Attributes: %s" % [x for x in dir(sbcore) if not x.startswith("__")])
|
||||||
bot.say("Test #%s" % sbcore.increment)
|
bot.say("%s" % sbcore.versions.dict)
|
||||||
|
|
||||||
sbcore.increment += 1
|
|
||||||
|
|||||||
3
SpiceBot/version.json
Normal file
3
SpiceBot/version.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"SpiceBot": "v0.9.3-beta"
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user