catbean.pages.dev

Como criar um script para gerar estrutura de pastas padrão para projetos?

Organizar projetos com uma estrutura de pastas consistente é essencial para manter a ordem e facilitar o trabalho em equipe. Automatizar esse processo com um script economiza tempo e evita erros manuais, garantindo que todos os projetos sigam o mesmo padrão desde o início.

Pré-requisitos

Script Python para criar estrutura de pastas

O script abaixo cria uma estrutura de pastas padrão para projetos, incluindo diretórios para código, documentação, testes e recursos. Ele é flexível e pode ser adaptado conforme as necessidades do seu projeto.

import os
import sys

def criar_estrutura_pasta(projeto_nome, base_path='.'):
    """
    Cria estrutura de pastas padrão para projetos.
    Args:
        projeto_nome (str): Nome do projeto
        base_path (str): Caminho base onde as pastas serão criadas
    """
    # Definição da estrutura de pastas
    estrutura = {
        'src': ['modules', 'utils'],
        'docs': ['requirements', 'specs'],
        'tests': ['unit', 'integration'],
        'resources': ['data', 'configs'],
        'scripts': [],
        'logs': []
    }

    # Caminho completo do projeto
    projeto_path = os.path.join(base_path, projeto_nome)

    try:
        # Cria diretório principal do projeto
        os.makedirs(projeto_path, exist_ok=True)
        print(f"Criando estrutura para o projeto: {projeto_nome}")

        # Cria subdiretórios
        for pasta, subpastas in estrutura.items():
            pasta_path = os.path.join(projeto_path, pasta)
            os.makedirs(pasta_path, exist_ok=True)
            print(f"Criado: {pasta_path}")

            # Cria subpastas dentro de cada pasta principal
            for subpasta in subpastas:
                subpasta_path = os.path.join(pasta_path, subpasta)
                os.makedirs(subpasta_path, exist_ok=True)
                print(f"Criado: {subpasta_path}")

        print(f"\nEstrutura do projeto '{projeto_nome}' criada com sucesso!")
        return True

    except Exception as e:
        print(f"Erro ao criar estrutura: {e}")
        return False

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Uso: python criar_estrutura.py <nome_do_projeto> [<base_path>]")
        sys.exit(1)

    nome_projeto = sys.argv[1]
    caminho_base = sys.argv[2] if len(sys.argv) > 2 else '.'

    criar_estrutura_pasta(nome_projeto, caminho_base)

Script Shell para sistemas Unix/Linux

Se você prefere usar shell script, este exemplo cria a mesma estrutura de pastas de forma rápida e eficiente.

#!/bin/bash

# Script para criar estrutura de pastas padrão para projetos
# Uso: ./criar_estrutura.sh <nome_do_projeto> [<base_path>]

NOME_PROJETO=${1:-"meu_projeto"}
BASE_PATH=${2:-"."}

# Estrutura de pastas
PASTAS=(
    "src/modules"
    "src/utils"
    "docs/requirements"
    "docs/specs"
    "tests/unit"
    "tests/integration"
    "resources/data"
    "resources/configs"
    "scripts"
    "logs"
)

# Cria diretório principal
mkdir -p "$BASE_PATH/$NOME_PROJETO"

# Cria subdiretórios
for pasta in "${PASTAS[@]}"; do
    mkdir -p "$BASE_PATH/$NOME_PROJETO/$pasta"
    echo "Criado: $BASE_PATH/$NOME_PROJETO/$pasta"
done

echo -e "\nEstrutura do projeto '$NOME_PROJETO' criada com sucesso!"

Exemplo Prático

Nome do Projeto Estrutura Criada
meu_projeto meu_projeto/src/modules/
meu_projeto/src/utils/
meu_projeto/docs/requirements/
meu_projeto/docs/specs/
meu_projeto/tests/unit/
meu_projeto/tests/integration/
meu_projeto/resources/data/
meu_projeto/resources/configs/
meu_projeto/scripts/
meu_projeto/logs/
app_web app_web/src/modules/
app_web/src/utils/
app_web/docs/requirements/
app_web/docs/specs/
app_web/tests/unit/
app_web/tests/integration/
app_web/resources/data/
app_web/resources/configs/
app_web/scripts/
app_web/logs/

Conclusão

Com este script, você automatiza a criação de uma estrutura de pastas padronizada em segundos, garantindo consistência entre todos os seus projetos e eliminando a necessidade de criar manualmente cada diretório. Basta executar o script com o nome do projeto desejado e pronto!