back to airton.dev

Exibindo no Github métricas de tempo gasto em linguagens usando Wakatime

posted at 12-08-2021

TL;DR;

Há algum tempo criei um bot que conversa com a API do Wakatime e publica em um Gist (que você pode pinnar na sua página de perfil do Github) o tempo que gastei desenvolvendo em certas linguagens. Para se aventurar nessa jornada e criar um bot para você, o código está aqui: https://github.com/airtonzanon/wakatime-gist

Airton Profile / Wakatime

Conteúdo

Conheci o Wakatime há um bom tempo (quase 5 anos atrás), quando trabalhei com o Ivan Rosolen. Nessa época eu só utilizava para brincar com as métricas e não sabia muito o que fazer com aqueles dados.

Não acredito que o Wakatime é uma métrica para produtividade, mas sim uma ferramenta legal para ver quanto tempo você passou utilizando linguagem x/y ou quanto tempo você passou em algum projeto, mas para deixar claro, não utilizo-o como ferramenta para cobrar freelas ou para medir produtividade.

Dito isso, o Wakatime é uma ferramenta muito simples para começar a se utilizar, e o melhor, é de graça (pelo menos para o que vamos utilizar aqui).

Esta ferramenta se integra com vários editores (i.e. PHPStorm, Vim, VSC, Sublime, e outros), para saber se o editor que você utiliza, está disponível em uma integração com esta ferramenta, dê uma olhada nesta página https://wakatime.com/plugins

Quando conhecei a trabalhar com o Malukenho vi ele utilizando o Github actions para capturar uns dados do Wakatime e joga-los em um Gist, com isso é possivel pina-lo e colocar na sua página inicial do Github.

Hoje em dia você já pode brincar com o próprio Github para exibir uma mensagem engraçada ou seu portfolio na página do perfil, porém ainda continuo usando meu bom e velho Gist ♥.

Como na época eu estava muito afim de fazer coisas em Python, criei um worker que conversa com a API do Wakatime e joga os dados para o Gist, porém eu gostaria de fazer isso periodicamente, então decidi coloca-lo em um servidor do Heroku com um cron job que roda todo dia.

Para utilizar o mesmo código que menciono acima no TL;DR; você vai precisar de uma conta no Wakatime! Assim que criada, você já consegue conectar com o seu editor de texto preferido (existem tutoriais no próprio site da ferramenta)

Depois disso, você pode acessar https://wakatime.com/settings/api-key para pegar sua api key, é com ela que o script vai conseguir se comunicar com o Wakatime. Essa key é a variavel WAKATIME_API_KEY.

Além disso, você vai precisar acessar https://wakatime.com/me, você será redirecionado para seu perfil do Wakatime, na URL, você consegue achar seu user id (i.e. @d831e48d-dff2-4cf2-5d4e-1d6h5f4328c9), que vai ser utilizado para popular a variavel WAKATIME_USER_ID.

Agora a parte do Wakatime já está completa, no Github, acesse https://github.com/settings/tokens para gerar um token de acesso, este token será utilizado na variavel GITHUB_TOKEN.

O último passo é criar um gist vazio com o nome de weekly_development_breakdown.txt, infelizmente não deixei o nome do arquivo dinâmico, porém o repositório está no Github e ficaria muito feliz de receber pull requests.

Assim que você criar o gist, na URL você terá um hash mais ou menos assim: 0000f8e67061874431540223bp3wb611, copie ele, pois será a variavel GIST_ID.

Com as quatro variaveis de ambiente já em mãos, é só usar o botão abaixo para fazer um deploy para o Heroku (caso queira usar algum outro host, sinta-se a vontade, só lembre de setar as variaveis mencionadas acima).

Deploy

Quando você clicar no botão acima, será requisitado as variáveis que falamos acima.

env vars

Assim que você apertar no botão deploy, o processo inteiro vai ser feito e você estará no dashboard do Heroku. Procure pelo addon scheduler que já estará instalado, clicando nele você irá para outra página, onde iremos fazer o setup do cronjob.

scheduler

Aperte em Create Job e um modal do lado esquerdo aparecerá para você dizer a frequencia que este script irá rodar, pessoalmente acho que 1 vez por dia durante a noite é suficiente.

Na sessão de Run Command coloque python3 wakatime.py no field com o cifrão ($) e mantenha 1X o tamanho do dyno.

Com isso, é só apertar em Save Job e esperar rodar!

Caso não esteja paciente para esperar rodar, você pode instalar o heroku cli (clique aqui para ver como instalar).

No seu terminal, depois de logar na sua conta escrevendo heroku login, procure o app que está rodando o script.

O comando heroku apps lista todos os seus apps rodando no Heroku.

Com isso, você pode rodar o comando abaixo e ver se um JSON gigantesco aparecerá no terminal.

heroku run -a name-your-app87753 python3 wakatime.py

Caso algum erro aconteça, pode ser problema de permissão no Github ou alguma variável de ambiente está errada. Me procure no twitter que posso te ajudar!