Especificação e implementação de um Repositório (software) de exercícios com resolução chamado Bed (Basic Exercise Distribution).
Esse repositório git contém:
- Um Manifesto das motivações desse projeto.
- Especificação do Bed (Basic Exercise Distribution), um novo tipo de repositório para distribuir exercícios (similar a um repositório rpm).
- Uma ferramenta auxiliar para manejar repositórios bed (checar consistencia, gerar metadados, etc)
- Especificação do conteúdo básico do repositório, "bed-file", que é um markdown (GitHub-flavored) com uma estrutura pre-determinada.
- Uma ferramenta para fazer lint, format e outras operações em um bed-file.
- Um CI para automatizar checagens de PRs e criação de releases.
Possibilitar um processo consistente de contribuição, revisão e distribuição de exercícios da área de ciências exatas.
Especificamente, para suprir casos de falta ou atraso na disponibilização de materiais de prática a alunos de graduação que cursam disciplinas no ICEX/UFMG.
Popularizar o LaTex
e processos de contribuição open-source entre alunos de graduação da área de ciências exatas.
TODO: Apresentação geral do projeto, do bed-file, do bed-repo e de workflows para:
- contribuir
- revisar
- compilar listas (curadorias)
- Contribuidor:
- Faz um fork e cria uma feature-branch
- Cria arquivo de exercico no
workdir/
usando a variação-markdown do GitHub. - Cria commit localmente, faz push para fork e abre PR no GitHub.
- Revisor:
- Revisa PR, pede/sugere modificações e aprova
- Auto-release
- Em intervalos regulares, CI-bot cria PR de release
- O PR de release é resultado de:
build
, que movimentaworkdir/* -> bed_repo/data/*
.publish
, que cria o metadado do repositóriobed_repo/BedMetadata.json
bump
, que atualiza a versão (CalVer)
- Sua aprovação gera:
- Nova tag no github e publicação dos metadados gerados
BedMetadata.json
- Publicação no PyPi dos pacotes
bed_lib
ebed_cli
.
- Nova tag no github e publicação dos metadados gerados
# CI
.github/workflows
# Makefile com comandos para `build`, `publish`, `format` e similares.
Makefile
# Pasta raíz para utilitarios no gerenciamento de arquivo e do repositório
tooling/
bed_cli/
bed_lib/
# Espaço de trabalho para criar exercicio
workdir/
INSTRUÇÔES.md
# Repositório Bed
# * Arquivos usam UUIDv7. Deve ser criado com utilitario de `manager`
# * BedMetadata.json:
# Metadata do repositório. Lista todos os exercícios disponíveis.
# É criado atravéz de um comando de publicar ("publish").
bed_repo/
BedMetadata.json
data/
01/931254-087f-77be-afd9-744ea4be3260.md
01/931254-087f-7416-b75d-da1933683e4f.md
...
02/931254-941f-783e-984b-44db98f98a7f.md
# Repositório Bed efêmero
# * Objetivo é possiblitar pessoas a praticarem o processo de contribuir/revisar
# * É limpado de tempos em tempos
hello_world/
BedMetadata.json
data/
01/931254-087f-77be-afd9-744ea4be3260.md
01/931254-087f-7416-b75d-da1933683e4f.md
...
02/931254-941f-783e-984b-44db98f98a7f.md