1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
from logging import getLogger
from os import path
from ..localplatform.localsocket import LocalSocket
from .. import helpers
from ..customtypes import UserType
from ..localplatform.localplatform import get_username
from typing import Dict, List
class SandboxedPlugin:
def __init__(self,
socket: LocalSocket,
name: str,
flags: List[str],
file: str,
plugin_directory: str,
plugin_path: str,
version: str|None,
author: str,
env: Dict[str, str]) -> None:
self.name = name
self.flags = flags
self.file = file
self.plugin_path = plugin_path
self.plugin_directory = plugin_directory
self.version = version
self.author = author
self.log = getLogger("plugin")
self.env = env
self.socket = socket
# export a bunch of environment variables to help plugin developers
self.env.update({
"HOME": helpers.get_home_path(UserType.ROOT if "root" in self.flags else UserType.HOST_USER),
"USER": "root" if "root" in self.flags else get_username(),
"DECKY_VERSION": helpers.get_loader_version(),
"DECKY_USER": get_username(),
"DECKY_USER_HOME": helpers.get_home_path(),
"DECKY_HOME": helpers.get_homebrew_path(),
"DECKY_PLUGIN_SETTINGS_DIR": path.join(helpers.get_homebrew_path(), "settings", self.plugin_directory),
"DECKY_PLUGIN_DIR": path.join(self.plugin_path, self.plugin_directory),
"DECKY_PLUGIN_NAME": self.name,
"DECKY_PLUGIN_AUTHOR": self.author,
"DECKY_PLUGIN_VERSION": self.version or "",
"DECKY_PLUGIN_RUNTIME_DIR": path.join(helpers.get_homebrew_path(), "data", self.plugin_directory),
"DECKY_PLUGIN_LOG_DIR": path.join(helpers.get_homebrew_path(), "logs", self.plugin_directory)
})
helpers.mkdir_as_user(self.env["DECKY_PLUGIN_SETTINGS_DIR"])
helpers.mkdir_as_user(self.env["DECKY_PLUGIN_RUNTIME_DIR"])
helpers.mkdir_as_user(self.env["DECKY_PLUGIN_LOG_DIR"])
def start(self): pass
async def stop(self): pass
|