Makefile vs Thor
Si eres un hardcore user de linux seguramente prefieres usar un Makefile
,
si eres sysadmin o devops este post
no está dirigido para ti.
Mi punto es que un Makefile
es muy útil para cosas simples, cuando no se
tiene un conocimiento extenso en bash como yo, es difícil mantener un archivo
muy grande en bash
¿Qué es Thor?
Es una gema en ruby que te permite crear command line tools de una manera rápida y natural si haz usado el lenguaje. Así se ve un comando Thor en acción
~/lab/blog on master*
$ tools
Commands:
tools help [COMMAND] # Describe available commands or one specific command
tools run_container # runs docker container
tools serve # starts development server at port 4000
tools stop # stops container
El api que nos ofrece Thor es genial debido a que puedes organizar tu código en gemas y distribuir herramientas a tus usuarios
class BlogTools < Thor
include Thor::Actions
desc 'serve', 'starts development server at port 4000'
def serve
run 'bundle exec jekyll serve'
end
desc 'run_container', 'runs docker container'
def run_container
run "docker run --rm -p 4000:80 --name blog-#{version} -d blog"
end
desc 'stop', 'stops container'
def stop
run "docker stop blog-#{version}"
end
end
Aquí tenemos un Makefile
feliz
VERSION=$(shell cat .version)
serve:
bundle exec jekyll serve
build:
bundle exec jekyll build
docker build --no-cache -t blog .
run: build
docker run --rm -p 4000:80 --name blog-${VERSION} -d blog
stop:
docker stop blog-${VERSION}