Author: | Erik Ingwersen |
---|---|
Contact: | [email protected] |
organization: | EY DDA |
date: | 2022-09-09 (Thu, 09 Sep 2022) |
status: | Pre-Alpha |
version: | 0.1.0 |
copyright: | Copyright (c) EY Brazil, Inc. and its affiliates. All Rights Reserved. |
abstract: | Cookiecutter para o Acelerador de projetos EY DDA. |
---|
Cookiecutter para automação da criação de repositório Python para projetos.
O cookiepy
requer instalação prévia do pacote cookiecutter.
Execute o seguinte comando para instalar o cookiecutter
:
$ pip install cookiecutter
💡 Observação: caso você não consiga executar o comando acima,
tente executar novamente,
incluindo a opçao -U
, ou --user
:
$ pip install -U cookiecutter
# Mesmo que:
$ pip install --user cookiecutter
Alguns sistemas operacionais restringem a instalação de certos pacotes.
A opção --user
força a instalação do pacote somente para o seu usuário.
Em geral, aplicações que são instaladas dentro do diretório de usuário requerem
um nível menor de permissões. Muitas vezes, erros de falta de permissão são
solucionados, quando você realiza a instalação de aplicações a nível de usuário,
ao invés de global. Esse tipo de bloqueio ocorre com bastante frequência no Windows,
especialmente em ambientes corporativos.
Com o cookiecutter instalado, basta executar o seguinte comando:
$ cookiecutter gh:ingwersen-erik/cookiepy
O vídeo abaixo mostra o processo de criação de um novo projeto, utilizando o cookiepy
:
O pacote gerado pelo cookiepy
possui as seguintes funcionalidades pré-configuradas:
- Gerenciamento e empacotamento de pacotes, usando Poetry
- Automação de testes unitários, usando Nox
- Avaliação de qualidade do seu código durante o commit_, usando Flake8
- Serviços de CI/CD, com ações pré-configuradas, usando GitHub Actions
- Automação do processo de geração de documentação do seu código-fonte usando Sphinx, MyST, e Read the Docs
- Criação automática de change-logs, usando Release Drafter
- Atualização automática de dependências com Dependabot
- Formatação do código usando Black e Prettier
- Ordenação e validação de imports dos módulos do seu código, com o isort
- Relatório de cobertura de código (coverage), usando Codecov
- Análise estática e type-hints com mypy
- Análise dinâmica de type-hints, com Typeguard
- Mudanças de sintaxe, de acordo com a versão do Python configurada pelo usuário, usando pyupgrade
- Análise estática de segurança com Bandit e Safety
- Validação de exemplos de código escritos na documentação com xdoctest
- Gerenciamento de labels de repositório com GitHub Labeler
Esta ferramenta foi testada nas seguintes versões do Python: Python 3.7, 3.8, 3.9, e 3.10.
O cookiepy
possui a seguinte estrutura de pastas:
cookiepy
├── CODE_OF_CONDUCT.rst <- Código de conduta (copiado de outros templates).
├── CONTRIBUTING.rst <- Guia de contribuição. Está em inglês.
├── LICENSE.rst <- Licença do projeto (por enquanto está como MIT)
├── README.rst <- Este arquivo que você está lendo.
├── cookiecutter.json <- Arquivo com os parâmetros utilizado pelo cookiepy para gerar novos repositórios
├── docs <- Diretório com a documentação da ferramenta.
├── noxfile.py <- Arquivo nox com as configurações de testes unitários.
├── pycharm.sh <- Comando Mac/Linux para inicialização do PyCharm (se instalado).
├── pyproject.toml <- Arquivos com as configurações e dependencias da ferramenta.
├── tools <- scripts para automação CI/CD.
│ ├── dependencies_table.py <- Script analisa os scripts Python do projeto e gera uma tabela de dependências.
│ ├── prepare_github_release.py <- Script de preparação de novas releases.
│ └── publish_github_release.py <- Script de publicação de releases em repositório do GitHub.
├── hooks <- Diretório com os arquivos utilizados para criação do repositório.
│ ├── post_gen_project.py <- Script executado após a geração do repositório.
│ └── pre_gen_project.py <- Script executado antes da geração do repositório.
└── {{cookiecutter.project_name}} <- Template do pacote que será criado.
- [ ] Traduzir o template para português 🇧🇷. Inicialmente, a minha ideia era criar o cookiecutter em inglês, já que a maioria das empresas preferem que o código seja escrito em inglês.
- [ ] Melhorar os tutoriais de como instalar/usar o
cookiepy
. - [ ] Adicionar tutoriais, com melhores práticas, dicas e casos-de-uso da ferramenta. 💡