Skip to content

Repository files navigation

RepoRefresh

RepoRefresh

Updater local de repos GitHub baixados em zip.
Escaneia a pasta, detecta o dono de cada repo, checa o remoto e atualiza com backup — tudo numa página, sem build.

betapythonfastapivanilla jsMIT


O que faz

PassoComo
SCANLista pastas extraídas + .zips da pasta base
DETECTADescobre owner/repo sozinho: convenção owner__repo, URL salva, ou metadados dentro do zip (package.json, pyproject.toml, Cargo.toml, go.mod, README…)
SUGERESem dono? Busca candidatos na Search API do GitHub ordenados por ⭐ — um clique mapeia
CHECACompara SHA local × remoto (com cache de 10 min)
ATUALIZABaixa o zip novo, troca a pasta (ou só o .zip no modo SÓ-ZIP) com backup .bak
REVERTEVolta para o backup em um clique

Começo rápido

# 1. Clone e entre
git clone https://github.com/yanhenrique-dev/GithubRepo-sync.git
cd GithubRepo-sync
# 2. Ambiente
python -m venv .venv &&source .venv/bin/activate
pip install -r requirements.txt
# 3. Token (opcional, mas recomendado: 60 → 5000 checks/hora)
cp .env.example .env
# edite o .env e ponha um token só-leitura de github.com/settings/tokens# 4. Rode (terminal)
uvicorn app:app --port 8000

Ou com ícone na bandeja (abre o navegador sozinho; fechar o ícone para o servidor):

./tray.py # porta 8000
./tray.py 8123 # outra porta

Abra http://127.0.0.1:8000, cole a pasta dos repos — a detecção é automática.

Atalhos da interface

  • Filtros — Todos · Mapeados · Sem dono · Desatualizados · Atualizados · Erros + busca por nome
  • Auto — com ligado, escanear já emenda no check
  • Modo Pastas / Só-ZIP — atualiza a pasta extraída ou troca só o .zip
  • Badge da API — na sidebar: TOKEN OK · 4711/5000, SEM TOKEN · 60/H ou TOKEN INVÁLIDO

API

MétodoRotaPara quê
GET/api/scan?path=Lista itens da pasta com mapeamento
GET/api/check?path=Consulta o GitHub e marca behind
GET/api/suggest?q=Candidatos owner/repo por nome
GET/api/tokenStatus do token + cota (nunca expõe o token)
GET/api/logÚltimas linhas do log
POST/api/mapSalva {path, name, url, branch}
POST/api/modeAlterna {path, zip_only}
POST/api/updateAtualiza {path, name}
POST/api/rollbackReverte {path, name} para o .bak

Estrutura

├── app.py # FastAPI + rotas
├── core/
│ ├── scanner.py # descobre pastas/zips e resolve owner/repo
│ ├── zipmeta.py # lê dono de dentro do zip (sem rede)
│ ├── github.py # API do GitHub: check, suggest, cota
│ ├── updater.py # download, troca, backup, rollback
│ └── state.py # mapping / state / config por pasta (.alldown/)
├── static/ # front vanilla: index.html, style.css, app.js
└── requirements.txt

Por pasta escaneada, o estado mora em <pasta>/.alldown/ (mapping.json, state.json, config.json) — o .env com o token nunca sai da sua máquina.

Licença

MIT — use, quebre, melhore.

Ícones MynaUI (MIT © Praveen Juge), embutidos como SVG inline.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages