summaryrefslogtreecommitdiff
path: root/backend/decky_loader/plugin/sandboxed_plugin.py
blob: b799783ff7acc03db89fc0530dcf71d17521c4a9 (plain)
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