Concrete Logo
Hamburger button

Pod Lib Create – Publicando seu primeiro CocoaPod

  • Blog
  • 1 de Abril de 2016
Share

*Este post foi originalmente publicado no Medium pessoal do autor. Confira aqui.

Era uma vez um desenvolvedor iOS criando seus projetos quando de repente surge em sua “Timeline”:

CocoaPods

“Que coisa mais maravilhosa. Um gerenciador de libs, frameworks, dependências, projetos, workspaces… Ah como o open source é lindo!” Um projeto aqui, outro ali, a evolução técnica, a maturação da lógica, a abstração de elementos, os objetos genéricos… Quero Contribuir!

Mas como começar? O que fazer? O que estão buscando? O que eu publico?”

Todo mundo precisa de um ponto de partida e, na real, a coisa mais bacana no aprendizado é o compartilhamento de ideias/conhecimento. A parte mais bacana do compartilhamento de conhecimento, é que você cresce. A parte mais bacana de crescer é continuar compartilhando, continuar crescendo, compartilhando, crescendo e, com isso, contribuir cada vez mais para a evolução do próprio universo digital.

Comece com coisas pequenas

Sabe aquele método que você desenvolveu, que formata uma string do tipo data? “Ah, mas existem milhões de métodos que fazem isso”. Exatamente! Como falei, a ideia aqui é começar. Dar o start =)

O bacana é que, mesmo sendo algo pequeno, teremos algumas evoluções interessantes como:

  • Como ter um melhor controle do Git;
  • Maior familiaridade com a lib create (CocoaPods);
  • Como pensar de forma mais genérica a fim de criar mais objetos reutilizáveis;
  • Maior familiaridade com shell script.

São exatamente esses itens que vamos abordar nas dicas abaixo. A ideia do post não é se aprofundar muito nas ferramentas, mas focar na parte prática do processo. Ok?

Primeiro Passo

Se você já tentou ler e entender o guide do CocoaPods já deve ter notado que a parada não é tão amigável assim, e a primeira impressão é a de que precisa quase que escrever um sistema operacional para poder submeter uma nova lib. Não fique aflito, vamos começar do começo 😀

Antes de qualquer coisa, você precisa de uma conta no Github. Após criar a conta e se logar, crie um repositório com o nome da sua lib.

Importante: quando estiver editando as informações do seu repositório, no final você terá dois itens bem importantes:

  • Inicializar o repositório com um arquivo README
    Recomendo selecionar esta opção pois, além de fornecer informações sobre o seu código como features, é do arquivo README que a lib create irá buscar as informações para exibir no site. Ou seja, se quer que sua lib seja bem utilizada, trate com bastante carinho o arquivo README. Ele é meio chatinho de editar no princípio, mas existem algumas ferramentas interessantes pra te ajudar como o Stackedit, por exemplo.
  • Adicionar um arquivo LICENSE
    Também recomendo já adicionar este arquivo, pois ele também será utilizado posteriormente pela comunidade. Para início, vamos utilizar a opção “MIT License”. Ela permite que as pessoas possam alterar o seu código sempre que necessário, desde que atribuam os créditos a você. Isto é ótimo, pois além de contribuir para a comunidade é interessante que a comunidade ajude você a contribuir, reportando bugs ou ajudando em melhorias. (Se quiser dar uma olhada em outras opções, veja esse site aqui (Choose a License).

Após o Git configurado e o repositório criado, você vai precisar criar uma branch com a versão da lib que irá publicar. Ex: 1.0, 0.1, 0.3.2, 1.5, etc. Vamos utilizá-la mais tarde.

Segundo passo

O segundo passo é fazer um clone do seu repositório em seu diretório local. Note que, ao fazer isso, você terá em sua pasta local os arquivos README e o LICENSE. Agora, falta apenas adicionarmos nossas classes e nosso arquivo .podspec, que terá todas as informações necessárias para se comunicar com a lib create e enviar a sua Lib.

Estrutura de pastas: após ter criado o repositório e ter feito o clone em seu diretório local, vamos copiar nossa(s) classe(s) para a nossa pasta raiz. O padrão utilizado pela maioria das Libs no CocoaPods é:

Pod/Classes/*.{.h, .m}

Claro, você pode utilizar a estrutura que quiser, mas por convenção, acabo sempre seguindo esta estrutura.

.podspec

Como falei acima, há um arquivo chamado MinhaLib.podspec (sim, o nome da sua lib hehe) que contém todas as configurações necessárias para a comunicação com a lib create. Para criá-lo é bem simples: basta abrir um editor de texto e salvar o arquivo com o nome da sua lib e a extensão .podspec (MinhaLib.podspec).

No arquivo vamos inserir as configurações necessárias. Neste link você pode encontrar um arquivo de modelo e editar as informações a partir dele.

Pontos importantes:

Um dos erros mais comuns na configuração do seu arquivo é o source_files.

Se atente que, no exemplo acima, temos — a partir da raiz — uma pasta Pod, uma pasta Classes, um intervalo no qual pode conter uma ou mais pastas de qualquer nome e nossos arquivos .h e .m, também com qualquer nome.

Com isso, até agora temos:

  • Repositório no Github configurado
  • Arquivos README e LICENSE
  • Estrutura de pastas definida
  • Podspec

Agora podemos ir para a parte divertida \o/

Command Lines

Abra o seu terminal, navegue até o diretório da sua lib e vamos executar quatro comandos básicos:

  • pod lib create MinhaLib
  • pod lib lint / pod spec lint
  • pod trunk register
  • pod trunk push

Lib Create

Ao executar, você irá responder algumas perguntas sobre a sua Lib, como linguagem, framework de teste, e-mail, se quer incluir um application demo etc.

Pod Lib Lint

Este comando irá iniciar o processo de validação do seu arquivo .podspec.

Pod Spec Lint

Assim como a linha anterior, o pod spect lint irá validar o seu arquivo .podspec. A diferença entre eles é que o primeiro não faz conexão com classes externas, enquanto que o segundo faz.

Após rodar vários testes, se algo não estiver certo com seu arquivo .podspec ele irá informar onde está o problema, como nos exemplos abaixo. Se estiver tudo ok, a mensagem “MinhaLib passed validation” será exibida.

– Branch não compatível com a versão da Lib
– Estrutura de pastas não compatível com o s.source_files
– Resumo igual à descrição
– Link do Git não encontrado

Pod Trunk

Após passar no teste, vamos iniciar nossa sessão.

*Utilize o mesmo e-mail para chamar a lib create

Você irá receber em seu e-mail um link para autenticar sua sessão. Clicando no link, você estará logado e pronto para executar o último comando:

Aqui, utilizamos o opcional “–verbose” para explicitar tudo o que está ocorrendo em todo o processo de “upload” da lib. Assim como ocorreu com o teste, se algo de errado ocorrer, você será avisado sobre o problema e poderá corrigir antes de tentar subir novamente.

Se nada der errado, sua lib será exibida na página CocoaPods.org e eles irão mencionar você em um Tweet informando sobre sua nova Lib. \o/

Resumo da ópera

Então, recapitulando… Para criar e submeter um pod você precisa:

– Criar um repositório no Git
– Editar o arquivo README e adicionar um LICENSE
– Criar uma branch com o nome da versão da sua lib
– Organizar sua estrutura de pastas
– Editar o arquivo .podspec
– Abrir o terminal e rodar os comandos mágicos:
pod lib create MinhaLib
pod lib lint / pod spec lint
pod trunk register email@email.com ’Nome Sobrenome’ — description=‘descrição da sessão’
pod trunk push MinhaLib.podspec — verbose
– Correr para o abraço \o/

Se você escolheu não adicionar um application demo quando preencheu as informações da lib create, você pode adicionar uma pasta “Sample” ao seu repositório e adicionar lá um projetinho demo de como sua lib funciona.

Sempre que fizer uma atualização em sua lib, crie uma nova branch incrementando a versão da lib, atualize o podspec e só então chame o pod trunk push. Fácil, não?

Importante: guide do CocoaPods.org é seu amigo e fiel aliado. Conforme for criando e submetendo suas libs, procure sempre explorar um pouco mais o que ele tem a oferecer. Certo? Ficou alguma dúvida ou tem alguma dica que eu não falei aqui? Fique à vontade nos campos abaixo!

Carry on!