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
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).
Quando você clicar no botão acima, será requisitado as variáveis que falamos acima.
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.
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!