import platform
"""
Специфические команды, которые надо выполнять только на ОС семейства Linux: if OS.IS_LINUX_BOOL:

Специфические команды, которые надо выполнять только на ОС семейства Windows: if OS.IS_WINDOWS_BOOL:

"""
IS_LINUX_BOOL = (platform.system().upper()=="LINUX" or platform.system().upper()=="LINUX2")
IS_WINDOWS_BOOL = (platform.system()=="Windows")

def PathStr(inPathStr:str) -> str:
    """Преобразование строк, который содержат путь к каталогу или файлу. В зависимости от операционной системы поддерживаются разные форматы.

    Для Windows ОС: path\\to\\file
    Для Linux ОС: path/to/file

    .. code-block:: python

        from pyOpenRPA.Tools import CrossOS
        lPathStr = CrossOS.PathStr(inPathStr = 'path/to\\file')
        # WINDOWS: lPathStr == 'path\\to\\file' 
        # LINUX: lPathStr == 'path/to/file' 

    :param inPathStr: Строка, которую обработать в зависимости от ОС, на которой происходит выполнение
    :type inPathStr: str
    :return: Обработанная строка с учетом используемой ОС
    :rtype: str
    """
    if inPathStr is None: return None
    if IS_WINDOWS_BOOL:
        return inPathStr.replace("/","\\")
    if IS_LINUX_BOOL:
        return inPathStr.replace("\\","/")

def PathSplitList(inPathStr:str) -> list:
    """Парсинг строки пути на элементы. Учитывает специфику формирования путей в разных ОС (Windows, Linux)

    Для Windows ОС: path\\to\\file
    Для Linux ОС: path/to/file

    .. code-block:: python

        from pyOpenRPA.Tools import CrossOS
        lPathList = CrossOS.PathSplitList(inPathStr = 'path/to\\file')
        # WINDOWS: lPathList == ['path', 'to', 'file'] 
        # LINUX: lPathList == ['path', 'to', 'file']  

    :param inPathStr: Строка, которую обработать в зависимости от ОС, на которой происходит выполнение
    :type inPathStr: str
    :return: Массив элементов пути. Пример: ['path', 'to', 'file'] 
    :rtype: list
    """
    inPathStr = inPathStr.replace("\\","/")
    return inPathStr.split("/")


def PathJoinList(inList: list) ->str:
    """Слияние элементов списка в строку. Учитывает специфику формирования путей в разных ОС (Windows, Linux)

    Для Windows ОС: path\\to\\file
    Для Linux ОС: path/to/file

    .. code-block:: python

        from pyOpenRPA.Tools import CrossOS
        lPathStr = CrossOS.PathJoinList(inList = ['path', 'to', 'file'] )
        # WINDOWS: lPathStr == 'path\\to\\file' 
        # LINUX: lPathStr == 'path/to/file'  

    :param inList: Строка, которую обработать в зависимости от ОС, на которой происходит выполнение
    :type inList: str
    :return: Массив элементов пути. Пример: ['path', 'to', 'file'] 
    :rtype: list
    """
    if IS_LINUX_BOOL: return "/".join(inList)
    elif IS_WINDOWS_BOOL: return "\\".join(inList)