Estou construindo um _Serviço / repositório de proxy do Composer_. A ideia do minisserviço é entregar dinamicamente pacotes de idioma / tradução para temas ou plug-ins de respostas da API _WordPress_. As rotas são as seguintes:
https://api.wordpress.org/translations/plugins/1.0/?slug={slug}&version={version}
O próprio serviço _Nodejs_ nada mais é do que um proxy que deve ser adicionado como repository
a composer.json
de type:project
. O próprio serviço retorna a chave providers-url
como parte do arquivo packages.json
(gerado dinamicamente).
"providers-url" : "/" + request.params.scope + "/providers/%package%$%hash%.json"
Para obter um exemplo, consulte o seguinte composer.json
:
{
"name" : "vendor/testproject",
"type" : "wordpress-project",
"minimum-stability" : "dev",
"repositories" : [
{
"type" : "composer",
"url" : "https://{unique-ID}.ngrok.io/test"
}
]
}
Até agora, só consigo ver solicitações de /endpoint/packages.json
, mas sem nenhum parâmetro. Em um mundo ideal, o Composer enviaria os pacotes required
, como cabeçalho ou como parâmetro de consulta.
Já procurei (e testei) todas as opções disponíveis para tentar _fake_ meu caminho através do sistema para de alguma forma obter o pacote solicitado: type:{composer|vcs|…}
. Existe uma maneira de fazer isso acontecer? Ou existe pelo menos a _ vontade_ de aceitar um PR para implementar isso - ao lado de um sinalizador adicional para habilitar esse comportamento?
_Uma nota sobre os serviços hospedados: pode haver uma combinação de notify-batch
e request/require
opções para reunir algumas estatísticas sobre repositórios pesquisados e realmente obtidos. Esta abordagem pode permitir direcionar pacotes "para cache" muito melhor._
Isso não é possível no momento, e eu duvido que seja por um tempo. Talvez na v2.0, uma vez que tenhamos refatorado o pool, possamos conseguir isso. Vou deixar aberto por enquanto, mas não prenda a respiração :)
@alcohol , acho que você pode ajustar os rótulos agora :)
Fechando como eu realmente não vejo isso acontecendo, pode ser possível com os metadados v2 (faixa # 8248 se você estiver interessado em mais detalhes), pois você pode fazer metadata-url: "/p2/%package%.json"
lá e todos os pacotes necessários serão chamados de um por um, mas você só pode retornar dados para o nome desse pacote e não para outros pacotes, embora não tenha certeza se realmente ajuda você.
Ele permite gerar pacotes dinamicamente, embora até certo ponto, para que você possa fazer os plug-ins exigirem em foo/plugin-translations-en
e, em seguida, certifique-se de sempre retornar um pacote para ter certeza de que é instalável, seja um com traduções válidas dentro ou um metapacote vazio sem instalar nada se nenhuma tradução estiver disponível?
Comentários muito úteis
Isso não é possível no momento, e eu duvido que seja por um tempo. Talvez na v2.0, uma vez que tenhamos refatorado o pool, possamos conseguir isso. Vou deixar aberto por enquanto, mas não prenda a respiração :)