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():
|
||||
|
||||
@ -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)
|
||||
|
||||
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):
|
||||
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
3
SpiceBot/version.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"SpiceBot": "v0.9.3-beta"
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user