srcs = $(shell find public-src -name 3rd-party -prune -o -not -type d -not -name '*.log' -print) outs = $(patsubst public-src/%,public/%,\ $(patsubst %.scss,%.css,\ $(patsubst %.gen,%,\ $(srcs)))) all: $(outs) all: public/3rd-party all: bin/cron-daily bin/httpd .PHONY: all NET-%: date > $@ .DELETE_ON_ERROR: .NOTINTERMEDIATE: .PHONY: FORCE # bin/ bin/%: bin-src/%.go bin-src/util $(wildcard bin-src/util/*.go) go build -o $@ $< bin/%: bin-src/%/go.mod bin-src/%/go.sum cd $( $@ public/%.css: public/%.scss scss $< $@ # Specific stuff public/index.html: public/tls.html.part public/crtsh.html.part public/diff.html.part public/jarmon.html.in public/crtsh-%.atom: NET-crtsh @mkdir -p '$(@D)' rm -f -- $@ set -x; while ! grep --quiet '/dev/null; do \ curl 'https://crt.sh/atom?identity=%25.$*&exclude=expired' >$@ || rm -f -- $@; \ done public/crtsh.pem: bin/crtsh-getcerts cfg/domains.txt $(foreach d,$(shell sed 's/#.*//' cfg/domains.txt),public/crtsh-$d.atom) bin/crtsh-getcerts $(filter %.atom,$^) >$@ public/tls.pem: bin/tls-getcerts cfg/sockets.txt NET-tls @mkdir -p '$(@D)' bin/tls-getcerts $$(sed -E -e 's/#.*//' -e 's,tcp(://\S+),tcp4\1 tcp6\1,g' cfg/sockets.txt) > $@ public/diff.pem: bin/pem-diff public/tls.pem public/crtsh.pem $^ > $@ public/tls.html.part public/crtsh.html.part public/diff.html.part: \ public/%.html.part: public/%.pem bin/%-pem2html bin/$*-pem2html < $< > $@ public-src/3rd-party/yarn.LICENSES.txt: bin/yarn-bower public-src/3rd-party/package.json $(wildcard public-src/3rd-party/yarn.lock) bin/yarn-bower install bin/yarn-bower licenses generate-disclaimer > $@ public/3rd-party: public-src/3rd-party/yarn.LICENSES.txt public/3rd-party: ln -srTf public-src/3rd-party '$@' @test -d $@ && touch $@ public-src/jarmon-style/%.gif: public-src/3rd-party/yarn.LICENSES.txt @test -f $@ # development lint: lint/go lint/go: bin/golangci-lint r=0; bin/golangci-lint run || r=1; for file in bin-src/*.go; do bin/golangci-lint run "$$file" || r=1; done; exit $$r .PHONY: lint lint/%