# Semana 15: seguridad, privacidad, accesibilidad y licencias. Se usa dentro del
# contenedor del curso.
#
#   make           copia Kallpa en build/kallpa, para analizarla sin tocar la
#                  original
#   make test      revisa los tipos (tsc), corre ESLint y las pruebas
#                  (*.test.ts), que comprueban lo que dice el apunte, y las del
#                  laboratorio si está la carpeta solution/
#   make contraste la razón de contraste de cada combinación de styles.css
#   make sinks los innerHTML y los templates de SQL de Kallpa
#   make licencias cuenta las licencias de licencias/package-lock.json
#   make clean     borra build/
#
# Las pruebas levantan la Kallpa del curso (../../kallpa) con una base de datos
# temporal, sin modificarla. La guía del laboratorio es template-auditoria.md.

KALLPA ?= ../../kallpa

.PHONY: all test contraste sinks licencias clean

all: build/kallpa

build/kallpa:
	mkdir -p build
	cp -r $(KALLPA) $@
	rm -f $@/data/*.db $@/data/*.db-*
	cp eslint.sinks.js $@/sinks.config.js

test: all
	tsc -p .
	eslint .
	node --test "*.test.ts"
	@if [ -d solution ]; then node --test "solution/*.test.ts"; fi

contraste:
	@node contrast.ts

sinks: all
	@cd build/kallpa && (eslint --no-config-lookup -c sinks.config.js src public || true)

licencias:
	@jq -r '.packages | to_entries[] | select(.key != "") | .value.license' licencias/package-lock.json | sort | uniq -c | sort -rn

clean:
	rm -rf build
