| Title: | Instalador e Launcher do trama |
|---|---|
| Description: | Motor de instalação e atualização do trama: lê o manifesto de release, calcula o status da instalação local, instala releases numa biblioteca isolada (só pacotes binários) e serve a tela de início em Shiny, de onde o editor é aberto. |
| Authors: | Pedro Mambelli Fernandes [aut, cre] (ORCID: <https://orcid.org/0009-0001-1695-279X>), João Paulo Assis Bonifácio [aut] (ORCID: <https://orcid.org/0009-0009-2335-8391>) |
| Maintainer: | Pedro Mambelli Fernandes <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.2.4 |
| Built: | 2026-10-20 15:21:05 UTC |
| Source: | https://github.com/uaipedro/trama |
Ponto de entrada chamado pelo atalho instalado (Trama-Setup.exe no
Windows, install.sh no Linux): coloca a biblioteca da release atual na
frente do .libPaths() (se já houver uma) e sobe a tela de início do
launcher. Se ainda não houver nenhuma release instalada, é a tela de
início quem dispara a primeira instalação (tl_server(), em R/app.R) —
depois dela estar no ar, não antes: instalar antes do runApp()
rodava tl_manifest_read() sem UI nenhuma para mostrar o progresso ou
um erro (e lançava erro de verdade se estivesse offline, derrubando
abrir() inteiro antes do pesquisador ver qualquer coisa).
abrir( porta = 8725L, ja_rodando = .tl_launcher_rodando, abrir_janela = tl_open_window )abrir( porta = 8725L, ja_rodando = .tl_launcher_rodando, abrir_janela = tl_open_window )
porta |
Porta onde a tela de início sobe; se ocupada, usa a primeira livre a partir daqui. |
ja_rodando |
Função que confere se já há um launcher respondendo em
|
abrir_janela |
Como abrir a janela quando o launcher já está de pé.
Por padrão |
Não retorna em uso normal — shiny::runApp() bloqueia a sessão
enquanto a tela de início está aberta (a menos que já houvesse um
launcher de pé, caso em que só abre a janela e retorna).
Instala uma coleção na lib da release atual e a acrescenta ao estado. Recusa qualquer coleção que não conste no manifesto — o manifesto é a única fonte de verdade sobre o que é instalável nesta release.
tl_collection_add(m, nome, progresso = message)tl_collection_add(m, nome, progresso = message)
m |
Manifesto de release. |
nome |
Nome da coleção a instalar. |
progresso |
Função chamada com uma mensagem de progresso. |
(Invisível) o novo estado gravado.
Remove uma coleção da lib da release atual e a tira do estado.
tl_collection_remove(nome, progresso = message)tl_collection_remove(nome, progresso = message)
nome |
Nome da coleção a remover. |
progresso |
Função chamada com uma mensagem de progresso. |
(Invisível) o novo estado gravado.
Instala a release descrita em m (mais as colecoes pedidas) numa
biblioteca isolada tl_lib_dir(m$trama), só com pacotes binários.
tl_install_release(m, colecoes = tl_state_read()$colecoes, progresso = message)tl_install_release(m, colecoes = tl_state_read()$colecoes, progresso = message)
m |
Manifesto de release ( |
colecoes |
Nomes de coleções a instalar junto com o núcleo. |
progresso |
Função chamada com uma mensagem a cada pacote ( |
Só grava o estado se TODOS os pacotes pedidos existirem na lib ao final; se algum faltar, apaga a lib parcial e lança erro sem tocar no estado — quem já tinha uma release funcionando continua com ela.
(Invisível) o novo estado gravado.
Lê e valida o manifesto de src (URL ou caminho local). Lança erro com
classe tl_error_manifesto e mensagem em português se faltar alguma
chave obrigatória, se cran_snapshot não for uma data ISO (AAAA-MM-DD)
ou se r não estiver no formato x.y.z.
tl_manifest_read(src = tl_manifest_url())tl_manifest_read(src = tl_manifest_url())
src |
URL ou caminho local do manifesto ( |
Lista com o manifesto validado.
Volta a release atual para a anterior mais recente (a lib da release atual continua no disco, só não é mais a apontada pelo estado — assim dá para avançar de novo sem reinstalar).
tl_rollback()tl_rollback()
(Invisível) o novo estado gravado.
O que a tela de início lê para desenhar versões, botão de atualizar, coleções e o aviso de troca de linha do R. Nunca lança erro — mesmo sem instalação e sem rede, devolve uma resposta coerente (a página tem que conseguir se desenhar nesse estado).
tl_status(m = tl_manifest_fetch(), s = tl_state_read())tl_status(m = tl_manifest_fetch(), s = tl_state_read())
m |
Manifesto (de |
s |
Estado local (de |
Lista com release_instalada, release_disponivel,
atualizar, r_instalado, r_exigido, troca_de_r, pacotes
(data.frame nome/instalada/disponível) e colecoes (data.frame
nome/titulo/instalada/disponivel/requires).