Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 4 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,10 @@ jobs:
sudo apt-get install -y gcc

- name: Compile ContactManager
run: |
mkdir -p data
gcc -Iinclude src/main.c src/contact.c src/storage.c -o contactmanager
run: make build

- name: Run static compilation checks
run: |
gcc -Iinclude -Wall -Wextra -Werror -c src/main.c src/contact.c src/storage.c
run: make test

release:
name: Release artifact
Expand All @@ -49,14 +46,12 @@ jobs:
sudo apt-get install -y gcc

- name: Compile artifact
run: |
mkdir -p data
gcc -Iinclude src/main.c src/contact.c src/storage.c -o contactmanager
run: make build

- name: Create GitHub release
uses: ncipollo/release-action@v1
with:
tag: ${{ github.ref_name }}
name: Release ${{ github.ref_name }}
body: "Build artifact for ${{ github.ref_name }}"
files: contactmanager
files: dist/contactmanager
55 changes: 55 additions & 0 deletions .github/workflows/version-bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Version Bump

on:
push:
branches:
- main
paths:
- 'include/config.h'
- '.github/workflows/version-bump.yml'

jobs:
bump-version:
runs-on: ubuntu-latest
if: github.event_name == 'push'

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"

- name: Find current version
id: current_version
run: |
version=$(grep -E '^#define APP_VERSION "[0-9]+\.[0-9]+"' include/config.h | head -n1 | sed -E 's/^#define APP_VERSION "([0-9]+\.[0-9]+)"/\1/')
echo "version=$version" >> $GITHUB_OUTPUT

- name: Bump patch version
id: bump_version
run: |
version=${{ steps.current_version.outputs.version }}
major=$(echo "$version" | cut -d. -f1)
minor=$(echo "$version" | cut -d. -f2)
patch=0
new_version="$major.$minor.$patch"
sed -i -E "s/^#define APP_VERSION \"[0-9]+\.[0-9]+\"/#define APP_VERSION \"$new_version\"/" include/config.h
echo "new_version=$new_version" >> $GITHUB_OUTPUT

- name: Commit version bump
run: |
git add include/config.h
git commit -m "chore: bump app version to ${{ steps.bump_version.outputs.new_version }}"
git push origin main

- name: Create release
if: startsWith(github.ref, 'refs/heads/main')
uses: ncipollo/release-action@v1
with:
tag: "v${{ steps.bump_version.outputs.new_version }}"
name: "Release v${{ steps.bump_version.outputs.new_version }}"
body: |
Automatic version bump to ${{ steps.bump_version.outputs.new_version }}.
14 changes: 12 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,12 @@
.vscode
.codex
.vscode/
.codex/

# Build artifacts
build/obj/
dist/
*.o
contactmanager
contactmanager-debug

# Runtime data
data/*.txt
93 changes: 93 additions & 0 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# Mapa Geral da Documentação

Este arquivo é o ponto de entrada para navegar pela documentação do ContactManager. Use-o quando precisar localizar rapidamente requisitos, arquitetura, build, testes ou histórico.

## Início Rápido

| Objetivo | Documento |
|----------|-----------|
| Entender o projeto | [README.md](README.md) |
| Compilar e executar | [docs/build.md](docs/build.md) |
| Entender requisitos | [docs/requisitos.md](docs/requisitos.md) |
| Entender arquitetura | [docs/arquitetura.md](docs/arquitetura.md) |
| Ver modelo de dados | [docs/modelos-de-dados.md](docs/modelos-de-dados.md) |
| Ver testes | [docs/testes.md](docs/testes.md) |
| Contribuir | [CONTRIBUTING.md](CONTRIBUTING.md) |

## Documentação na Raiz

| Arquivo | Função |
|---------|--------|
| [README.md](README.md) | Visão geral, estado atual, estrutura e uso básico |
| [DOCUMENTATION.md](DOCUMENTATION.md) | Este mapa geral |
| [CONTRIBUTING.md](CONTRIBUTING.md) | Convenções de contribuição e commits |
| [LICENSE](LICENSE) | Licença do projeto |

## Documentação Técnica

| Arquivo | Conteúdo |
|---------|----------|
| [docs/README.md](docs/README.md) | Índice técnico do diretório `docs/` |
| [docs/build.md](docs/build.md) | Build, execução, teste, instalação e saídas geradas |
| [docs/requisitos.md](docs/requisitos.md) | Requisitos funcionais, não funcionais, restrições e aceites |
| [docs/arquitetura.md](docs/arquitetura.md) | Componentes, responsabilidades e fluxo geral |
| [docs/modelos-de-dados.md](docs/modelos-de-dados.md) | Estrutura `Contact`, limites e formato de persistência |
| [docs/casos-de-uso.md](docs/casos-de-uso.md) | Casos de uso implementados e planejados |
| [docs/fluxos.md](docs/fluxos.md) | Fluxos de inicialização, CRUD e persistência |
| [docs/testes.md](docs/testes.md) | Estratégia de testes e estado atual |
| [docs/product-backlog.md](docs/product-backlog.md) | Backlog priorizado |
| [docs/resultados.md](docs/resultados.md) | Resultados concluídos e próximos passos |
| [docs/uml.md](docs/uml.md) | Diagrama de classes e visão modular |
| [docs/diagramas/](docs/diagramas/) | SVGs e artefatos visuais |

## Build e Automação

| Local | Função |
|-------|--------|
| [Makefile](Makefile) | Atalhos da raiz que delegam para `build/Makefile` |
| [build/Makefile](build/Makefile) | Regras principais de compilação |
| [build/config.mk](build/config.mk) | Variáveis reutilizáveis de build |
| [build/README.md](build/README.md) | Referência rápida do sistema de build |
| [scripts/build.sh](scripts/build.sh) | Script auxiliar para build, run, test e clean |
| [scripts/README.md](scripts/README.md) | Documentação dos scripts |

## Testes e Histórico

| Local | Função |
|-------|--------|
| [tests/README.md](tests/README.md) | Convenção para registrar testes manuais |
| [tests/2026-06-09-add-list-persist.md](tests/2026-06-09-add-list-persist.md) | Registro de teste funcional |
| [diario/diario.md](diario/diario.md) | Índice do diário de desenvolvimento |
| [diario/](diario/) | Entradas por data |

## Convenções de Localização

| Tipo de conteúdo | Local |
|------------------|-------|
| Código fonte | `src/` |
| Cabeçalhos | `include/` |
| Documentação técnica | `docs/` |
| Diagramas | `docs/diagramas/` |
| Testes manuais | `tests/` |
| Histórico | `diario/` |
| Build system | `build/`, `Makefile` |
| Scripts | `scripts/` |
| CI/CD | `.github/workflows/` |
| Dados gerados em runtime | `data/` |
| Objetos gerados | `build/obj/` |
| Binários gerados | `dist/` |

## Regras de Manutenção

- Atualize o `README.md` quando mudar a experiência principal do usuário.
- Atualize `docs/requisitos.md`, `docs/casos-de-uso.md` e `docs/fluxos.md` quando mudar comportamento.
- Atualize `docs/arquitetura.md` e `docs/uml.md` quando mudar módulos, contratos ou responsabilidades.
- Atualize `docs/modelos-de-dados.md` quando mudar `Contact`, limites ou formato de arquivo.
- Atualize `docs/build.md`, `build/README.md` e `scripts/README.md` quando mudar o fluxo de build.
- Registre validações relevantes em `tests/` e resultados consolidados em `docs/testes.md`.

## Última Revisão

- Data: 14 de junho de 2026
- Versão documentada: `APP_VERSION "1.0"`
- Estado: CLI local com CRUD por número/índice, persistência em CSV simples e build organizado em `build/obj/` e `dist/`.
36 changes: 36 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# ContactManager Root Makefile
# This delegates to the actual build configuration in build/Makefile

.PHONY: help build debug release run debug-run clean test install uninstall

help:
@$(MAKE) -f build/Makefile help

build:
@$(MAKE) -f build/Makefile build

debug:
@$(MAKE) -f build/Makefile debug

release:
@$(MAKE) -f build/Makefile release

run:
@$(MAKE) -f build/Makefile run

debug-run:
@$(MAKE) -f build/Makefile debug-run

clean:
@$(MAKE) -f build/Makefile clean

test:
@$(MAKE) -f build/Makefile test

install:
@$(MAKE) -f build/Makefile install

uninstall:
@$(MAKE) -f build/Makefile uninstall

.DEFAULT_GOAL := help
Loading
Loading