Slide 1

Slide 1 text

Alex Tercete @alextercete $ make Makefile

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

run.sh #!/bin/sh docker build -t my_image . docker run -w /app -v $(pwd):/app my_image

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

run.ps1 docker build -t my_image . docker run -w /app -v $PWD:/app my_image

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Makefile build: docker build -t my_image . run: build docker run -w /app -v $(realpath .):/app my_image

Slide 9

Slide 9 text

Make is pretty

Slide 10

Slide 10 text

Make is pretty old

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Make is pretty popular

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Make is pretty scary

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Make is pretty weird

Slide 17

Slide 17 text

Makefile print_variable: my_variable='blah' echo $my_variable

Slide 18

Slide 18 text

Makefile print_variable: my_variable='blah' echo $my_variable

Slide 19

Slide 19 text

Makefile print_variable: @ my_variable='blah'; \ echo $$my_variable

Slide 20

Slide 20 text

Make is pretty cross-platform

Slide 21

Slide 21 text

Makefile VALUE = default print_value: @ echo Value is $(VALUE)

Slide 22

Slide 22 text

Makefile list_all: @ ls -la

Slide 23

Slide 23 text

Makefile list_all: @ ls -la

Slide 24

Slide 24 text

Makefile LS = docker run \ --rm -w /app -v "$(realpath .):/app" bash:5 \ ls list_all: @ $(LS) -la

Slide 25

Slide 25 text

Makefile ifeq ($(OS), Windows_NT) HOME = $(USERPROFILE) endif home: @ echo There is no place like $(HOME)

Slide 26

Slide 26 text

Make is pretty powerful

Slide 27

Slide 27 text

Makefile VALUE ?= default print_value: @ echo Value is $(VALUE)

Slide 28

Slide 28 text

Makefile release: require_version @ echo "Starting $(VERSION) release..." require_version: ifndef VERSION $(error You must specify a VERSION variable) endif

Slide 29

Slide 29 text

Makefile REMOTE_URL = $(shell git remote get-url origin) ifeq ($(subst git@,,$(REMOTE_URL)), $(REMOTE_URL)) REMOTE_PROTOCOL = HTTPS else REMOTE_PROTOCOL = SSH endif print_remote_protocol: @ echo $(REMOTE_PROTOCOL)

Slide 30

Slide 30 text

Make is pretty

Slide 31

Slide 31 text

$ xcode-select --install $ sudo apt install build-essential > choco install make

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Alex Tercete @alextercete Thanks!