Como criar uma CLI em python
De maneira fácil e rápida, é possível criar uma Command Line Interface em Python

Uma de minhas últimas experiências de programação foi criar uma Command Line Interface (CLI), que nada mais é do que uma ferramenta de linha de comando que pode ser executada em um terminal.
Mesmo sendo criada em python, ela não precisa ser executada com ele para iniciar seus processos, e isso abre muitas portas para diversas possibilidades.
Para exemplificar como foi meu processo ao criar a CLI, resolvi criar um pequeno projeto que surgiu na minha mente há pouco tempo: um sistema onde tu coloca a extensão de arquivo que tu quer conhecer sobre e ele faz conexão com a wikipedia para descobrir com apenas um comando do que se trata, vamos nessa?
Ah, se quiser dar uma olhada no código já pronto, acesse: https://github.com/ItanuRomero/extensionCLI
Estrutura de uma CLI em python
A primeira vez que pensei em criar uma ferramenta de linha de comando me pareceu que seria difícil, porém é quase o extremo contrário.
Claro que depende muito do tamanho do projeto, mas para poder criar algo funcional apenas precisamos de uma estrutura simples como essa abaixo:
pasta_principal/
├── README.md
├── install.sh
├── extension
├── __init__.py
├── __main__.py
└── search_handler.py
└── setup.py
pasta_principal/
É a raiz do projeto, dentro dela que colocaremos os arquivos e outros diretórios.
README.md & install.sh
Opcionais, servindo para documentar o seu projeto e fazer a instalação diretamente sem utilizar o pip install (mais abaixo eu explico), respectivamente.
extension
É a estrutura de um python package, que seria o mesmo que um diretório, porém com um arquivo __init__.py que faz o papel de indicar ao python que isso se trata de um package.
Outro arquivo é o __main__.py, que é o principal arquivo do sistema, centralizando tudo que será chamado pelo comando ext, ou seja, é o que será executado primeiro no sistema, e todo o resto do fluxo deve seguir a partir dele e de sua função main(), como pode ser visto no projeto no GitHub.
O terceiro arquivo, search_handler.py, é um módulo python, que é um arquivo python que serve como um agregador de funções, utilizado para organizar melhor o código.
Ele possui uma biblioteca chamada wikipedia que faz o contato com o site de mesmo nome, assim retornando o resultado!
setup.py
Responsável por fazer a mágica de deixar o seu código instalável, basicamente ele cria sua CLI, e não precisa ser mais complexo que isso:
from setuptools import setup
setup(
name = 'extension',
version = '0.1.0',
packages = ['extension'],
entry_points = {
'console_scripts': [
'ext = extension.__main__:main'
]
})
O argumento responsável por executar o sistema é o “ext”, ele irá executar os processos que estiverem no caminho: extension.__main__.main()
Para fazer a instalação, é necessário utilizar o pip install do python, e com ele usaremos também a flag -e para sinalizar que queremos atualizar o código assim que o projeto sofrer alterações (de forma automática), e por último, diremos ao pip que iremos instalar o diretório atual, colocando um ponto (.).
pip install -e .
Esse comando irá executar o setup.py do diretório informado, que nesse caso é o pasta_principal/, e o retorno deve ser algo como:

Pronto, agora é só utilizar o sistema digitando o comando + uma extensão de arquivo, como abaixo:

Agora outro exemplo com a extensão mp3:

Pronto, e agora tu pode criar suas command line interfaces e colocar algumas de suas ideias mais legais em prática!
Boa sorte e bons estudos! Um abraço!
Ah, eu me baseei nesse artigo pra criar CLI’s assim: https://trstringer.com/easy-and-nice-python-cli/