Desenvolvimento

16 abr, 2012

Ripple: a utilidade que te salva do seu inferno NuGet pessoal

Publicidade

Gerenciar suas dependências com NuGet pode ser muito bom

A não ser que você queira que algum deles seja compilado localmente.

Por exemplo, imagine que você tenha um gráfico de dependência complicado e que você acabou de modificar uma fonte de um dos conjuntos. Ou que você quer apenas os bits mais frescos a partir do controle de origem. Agora imagine que você queira usar a versão local de seu projeto, já que não deseja esperar até que a sua modificação seja aceita e liberada como um pacote NuGet. Ao mesmo tempo, você quer usar as outras dependências gerenciadas pelo NuGet para você, além de mesclar as atualizações mais recentes para aquelas que você constrói localmente. Bem-vindo de volta ao pesadelo da dependência!

Se o Ripple não existisse, isso poderia ser ainda pior do que na era pré-NuGet

O Ripple foi criado para cenários como este. Bem, não exatamente, mas pelo menos ele pode te salvar do inferno da dependência. O que é ainda melhor: ele fará um monte de coisas para você, para que todas as suas soluções tenham os mais frescos bits de NuGet quando a fonte local estiver em falta e conjuntos construídos localmente serã convenientemente colocados nas pastas do pacote NuGet.

Em outras palavras, o Ripple é o melhor amigo do NuGet

Para uma boa introdução ao Ripple (e seus requisitos), verifique o artigo de Ian Battersby: Ripple-tastic. O Ian dá um exemplo de um “alvo” rippling – de uma solução para outra. No entanto, descobri que é mais divertido apenas para “ripple around” – acione o “ripple local” sem as peças “de” e “para”. Desta forma, o Ripple apenas corrige e atualiza tudo o que puder.

Existem muitos comandos Ripple disponíveis. Aqui está a lista (incompleta) deles, até hoje:

  • Clean – apenas limpa uma solução particular, ou todas as soluções. Pode limpar pacotes, saídas de projeto, ou ambos;
  • Float – faz o pacote “flutuante” – marcado para ser atualizado pelo Ripple;
  • Gitignore – lista ou adiciona valores ao gitignore;
  • History – escreve a lista de pacotes para o arquivo de dependência history.txt;
  • Init – cria um arquivo básico ripple.config e o abre em um editor; remove pacotes de Git e adiciona sua pasta para gitignore;
  • Lista – gera, para cada solução, a lista de projetos com as suas dependências e pacotes publicados;
  • Local – é melhor que você experimente por você mesmo com uma flag verbose e veja o que acontece;
  • LocalNuget – cria os arquivos NuGet localmente;
  • Lock – oposto ao Float, trava um NuGet para impedir que ele seja atualizado automaticamente a partir do comando Update;
  • Publicar – constrói e empurra todos os arquivos nuspec para uma solução para o nuget.org;
  • Restore – outro comando importante que interage com NuGet para restaurar todas as dependências NuGet em uma árvore de solução;
  • Update – obtém os últimos NuGets (ou apenas permite visualizá-los). Pelo que entendi, tanto o Restore quanto o Update são usados como partes da execução do comando local;
  • UseTheirs – faz um ‘use theirs’ merge em todo o projeto e arquivo de pacotes de uma solução;
  • WhereAmI – diz onde o Ripple acha que a pasta raíz está.

Você pode ver que esta é uma grande parte das funcionalidades para aqueles que colaboram ativamente com as dependências OSS. É opinado, na forma ForUsByUs, mas você pode usá-lo em projetos não-Fubu. A única limitação irritante para mim é que você deve manter seus projetos na mesma pasta, mas não é irritante o suficiente para uma solicitação de recebimento.

***

O texto original está disponível em: http://ivonna.biz/blog/2012/3/2/ripple,-the-utility-that-saves-you-from-your-personal-nuget-hell.aspx