Pular para conteúdo

Instalador de pacotes

ln_cli.commands.install

_require_package_manager()

Retorna o gerenciador de pacotes encontrado no sistema.

Returns:

Type Description
str

Uma string com o comando do gerenciador de pacotes.

Raises:

Type Description
Exit

Finaliza o processo com o código 1.

Examples:

>>> _require_package_manager()
'dnf'

Nota

Cada sistema vai retornar um valor está função

Source code in ln_cli/commands/install.py
def _require_package_manager() -> str:
    """
    Retorna o gerenciador de pacotes encontrado no sistema.

    Returns:
        Uma string com o comando do gerenciador de pacotes.

    Raises:
        Exit: Finaliza o processo com o código 1.

    Examples:
        >>> _require_package_manager()
        'dnf'

    !!!Nota
        Cada sistema vai retornar um valor está função
    """
    package_manager = get_package_manager()
    if package_manager is None:
        console.print(
            '[red]Nenhum gerenciador de pacotes suportado foi encontrado.[/]'
        )
        raise Exit(code=1)
    return package_manager

run_install(package_manager, package)

Instala package usando o package_manager informado.

Parameters:

Name Type Description Default
package_manager str

O gerenciador de pacotes do sistema.

required
package str

Pacote a ser instalado.``

required

Raises:

Type Description
InstallError

de KeyError gerenciador de pacotes nao encontrado.

InstallError

de CalledProcessError falha ao instalar pacote.

InstallError

de FileNotFoundError Comando não encontrado.

Examples:

>>> run_install('apt', 'curl')
>>> run_install('dnf', 'lazygit')
Source code in ln_cli/commands/install.py
def run_install(package_manager: str, package: str) -> None:
    """
    Instala `package` usando o `package_manager` informado.

    Parameters:
        package_manager: O gerenciador de pacotes do sistema.
        package: Pacote a ser instalado.``

    Raises:
        InstallError: de KeyError gerenciador de pacotes nao encontrado.
        InstallError: de CalledProcessError falha ao instalar pacote.
        InstallError: de FileNotFoundError Comando não encontrado.

    Examples:
        >>> run_install('apt', 'curl')
        >>> run_install('dnf', 'lazygit')
    """
    try:
        command = INSTALL_COMMANDS[package_manager](package)
        subprocess.run(command, check=True)
    except KeyError as error:
        raise InstallError(
            f'Gerenciador de pacotes não suportado: {package_manager}'
        ) from error
    except subprocess.CalledProcessError as error:
        raise InstallError(
            f'Falha ao instalar {package} (código de saída {error.returncode}).'
        ) from error
    except FileNotFoundError as error:
        raise InstallError(
            f'Comando não encontrado: {error.filename}'
        ) from error

install_pipx(package_manager)

Isntala o pipx via gerenciador de pacotes

Parameters:

Name Type Description Default
package_manager str

O gerenciador de pacotes do sistema.

required

Raises:

Type Description
InstallError

de CalledProcessError falha ao instalar pacote.

InstallError

de FileNotFoundError Comando não encontrado.

Examples:

>>> install_pipx('apt')
>>> install_pipx('dnf')
Source code in ln_cli/commands/install.py
def install_pipx(package_manager: str) -> None:
    """
    Isntala o pipx via gerenciador de pacotes

    Parameters:
        package_manager: O gerenciador de pacotes do sistema.

    Raises:
        InstallError: de CalledProcessError falha ao instalar pacote.
        InstallError: de FileNotFoundError Comando não encontrado.

    Examples:
        >>> install_pipx('apt')
        >>> install_pipx('dnf')
    """
    try:
        if package_manager in ('apt', 'dnf'):
            run_install(package_manager, 'pipx')
        else:
            subprocess.run(
                ['python3', '-m', 'pip', 'install', '--user', 'pipx'],
                check=True,
            )
        subprocess.run(['pipx', 'ensurepath'], check=True)
    except subprocess.CalledProcessError as error:
        raise InstallError(
            f'Falha ao instalar o pipx (código de saída {error.returncode}).'
        ) from error
    except FileNotFoundError as error:
        raise InstallError(
            f'Comando não encontrado: {error.filename}'
        ) from error

install_curl(package_manager)

Vefica se curl está instalado e caso não estejá realiza a instalação.

Parameters:

Name Type Description Default
package_manager str

O gerenciador de pacotes do sistema.

required

Examples:

>>> install_curl('apt')
Source code in ln_cli/commands/install.py
def install_curl(package_manager: str) -> None:
    """
    Vefica se curl está instalado e caso não estejá realiza a instalação.

    Parameters:
        package_manager: O gerenciador de pacotes do sistema.

    Examples:
        >>> install_curl('apt')
    """
    if shutil.which('curl'):
        return
    run_install(package_manager, 'curl')