From 776d025e72ca0a29916c724f72b52358abce513b Mon Sep 17 00:00:00 2001 From: trueold89 Date: Mon, 25 Mar 2024 05:37:45 +0300 Subject: [PATCH] Add docstrings --- VoidServiceControl/classes.py | 53 +++++++++++++++++++++++++++++++---- VoidServiceControl/env.py | 3 ++ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/VoidServiceControl/classes.py b/VoidServiceControl/classes.py index 19a121c..305e98c 100644 --- a/VoidServiceControl/classes.py +++ b/VoidServiceControl/classes.py @@ -9,31 +9,48 @@ from VoidServiceControl.env import * class Help(Exception): - def __str__(self): + def __str__(self) -> str: + """ + Returns the program usage help + :return: Program usage help + """ return ("Usage:\n---\nvsc {e/enable/on/up} - Run service and add it to autostart\nvsc {" "d/disable/off/down - Stop service and remove it from autostart") -def Su(): +def Su() -> None: + """ + Checks if the user has administrator rights + """ user = execute('whoami', shell=True, text=True, stdout=PIPE).stdout[:-1] if user != 'root': raise PermissionError("Error: Access denied") +# Types of service actions class Action(Enum): ENABLE = ["enable", "e", "on", "up"] DISABLE = ["disable", "d", "off", "down"] +# Types of run arguments class Arg(Enum): HELP = ["--help", "-h", "help"] @classmethod - def all(cls): + def all(cls) -> list[str]: + """ + Returns all types of run arguments + :return: All types of run arguments list + """ return cls.HELP.value + cls.__action() @classmethod - def __action(cls): + def __action(cls) -> list[str]: + """ + Returns all types of service actions + :return: All types of service actions list + """ actions = list(map(lambda action: action.value, Action)) out = [] for lst in actions: @@ -43,11 +60,14 @@ class Arg(Enum): class Args(object): - def __init__(self): + def __init__(self) -> None: self.__arguments = argv[1:] self.__check() def __check(self) -> None: + """ + Checks the arguments + """ if len(self.__arguments) != 2 and self.__arguments[0] not in Arg.HELP.value: raise TypeError("Error: Bad Usage") if self.__arguments[0] in Arg.HELP.value: @@ -56,6 +76,10 @@ class Args(object): raise TypeError("Error: Invalid args") def __action(self) -> Action: + """ + Returns the action to the service + :return: Service action + """ actions = list(Action) for action in actions: if self.__arguments[0] in action.value: @@ -74,6 +98,9 @@ class Service(object): self.__check() def __check(self) -> None: + """ + Checks if the service exists and is enabled + """ all_services = ls(SV_PATH) enabled_services = ls(ENABLED_PATH) if self.__name not in all_services: @@ -82,14 +109,24 @@ class Service(object): self.__enabled = True def getname(self) -> str: + """ + Returns the service name + :return: Service name + """ return self.__name - def enable(self): + def enable(self) -> None: + """ + Enable the service + """ if self.__enabled: raise ValueError(f"Error: Service {self.__name} already enabled") execute(f'ln -s {SV_PATH}/{self.__name} {ENABLED_PATH}/', shell=True) def disable(self): + """ + Disable the service + """ if not self.__enabled: raise ValueError(f"Error: Service {self.__name} already disabled") execute(f'rm {ENABLED_PATH}/{self.__name}', shell=True) @@ -101,6 +138,10 @@ class Interface(object): self.service = Service(service) def action(self, action: Action) -> None: + """ + Performs an action on the service + :param action: Action on the service + """ match action: case Action.ENABLE: self.service.enable() diff --git a/VoidServiceControl/env.py b/VoidServiceControl/env.py index 8bb7195..e131402 100644 --- a/VoidServiceControl/env.py +++ b/VoidServiceControl/env.py @@ -1,3 +1,6 @@ # -*- coding: utf-8 -*- + +# Edit this file if you are using custom paths to Runit services + SV_PATH = '/etc/sv' ENABLED_PATH = '/var/service'