From 52d987759f95870a57bb025dec7dc5d7798eabdd Mon Sep 17 00:00:00 2001 From: "Gabriel R. Antunes" Date: Thu, 3 Feb 2022 12:25:24 -0400 Subject: [PATCH] refactor: improve the Makefile --- HACKING.md | 10 +++++----- Makefile | 46 ++++++++++++++++++++++++++++++++++++---------- 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/HACKING.md b/HACKING.md index ba43783..3a9b2e0 100644 --- a/HACKING.md +++ b/HACKING.md @@ -12,21 +12,21 @@ cd ava-pro We recommend the usage of Docker to develop the extension (~~due security reasons lol~~ [[1]](https://thehackernews.com/2021/10/popular-npm-package-hijacked-to-publish.html)). ```sh -make sh # start a new container and attaches a shell session +make dev # -> packages/webextension/dist/dev +make build # -> packages/webextension/dist/prod ``` ```sh -make dev # -> packages/webextension/dist/dev -make build # -> packages/webextension/dist/prod +make sh # starts a shell session ``` ```sh make stop # stop the running container -make attach # attaches a shell into a running container (sh, dev or build) + ``` ```sh -make clear-cache # purge some cache stuffs +make clear # delete the dist files and the parcel cache ``` #### Development with the NodeJS from your machine diff --git a/Makefile b/Makefile index debf04f..3f23fec 100644 --- a/Makefile +++ b/Makefile @@ -1,24 +1,50 @@ -PROJECT_DATA=$(shell pwd) -DOCKER_CONTAINER_NAME=ava-pro-node +PROJECT_DATA_DIR=$(shell pwd) + DOCKER_CONTAINER_IMAGE=cl00e9ment/node.js-builder DOCKER_CONTAINER_IMAGE_SHELL=sh -clear-cache: - find . -maxdepth 1 -type d -name .parcel-cache -exec rm -rf {} \+ - rm -rf packages/webextension/dist +DOCKER_CONTAINER_NAME=$(shell basename $(PROJECT_DATA_DIR))-node + +DOCKER_RUN_EXTRA_ARGS= +DOCKER_RUN_EXTRA_ARGS_DEV=-p 1234:1234 +DOCKER_RUN_EXTRA_ARGS_BUILD= + +define spawn = +docker run \ + --rm \ + --name $(DOCKER_CONTAINER_NAME) \ + -u node \ + -w /code \ + -v $(PROJECT_DATA_DIR):/code \ + $(1) \ + -it $(DOCKER_CONTAINER_IMAGE) \ + $(DOCKER_CONTAINER_IMAGE_SHELL) $(2) +endef + +clear: + rm -rf ./.parcel-cache ./packages/webextension/dist attach: - docker exec -it $(DOCKER_CONTAINER_NAME) $(DOCKER_CONTAINER_IMAGE_SHELL) + docker exec \ + -it $(DOCKER_CONTAINER_NAME) \ + $(DOCKER_CONTAINER_IMAGE_SHELL) sh: - docker run --rm --name $(DOCKER_CONTAINER_NAME) -v $(PROJECT_DATA):/srv -w /srv -p 1234:1234 -u node -it $(DOCKER_CONTAINER_IMAGE) $(DOCKER_CONTAINER_IMAGE_SHELL) + + if [ $(shell docker ps -q --filter "name=$(DOCKER_CONTAINER_NAME)" | wc -l) -gt 0 ] ; then \ + clear -x; \ + make attach ;\ + else \ + clear -x; \ + $(call spawn,$(DOCKER_RUN_EXTRA_ARGS_DEV)) ;\ + fi dev: - docker run --rm --name $(DOCKER_CONTAINER_NAME) -v $(PROJECT_DATA):/srv -w /srv -p 1234:1234 -u node -it $(DOCKER_CONTAINER_IMAGE) $(DOCKER_CONTAINER_IMAGE_SHELL) -c "pnpm install && pnpm run dev" + $(call spawn,$(DOCKER_RUN_EXTRA_ARGS_DEV),-c "pnpm install && pnpm run dev") build: - make clear-cache - docker run --rm --name $(DOCKER_CONTAINER_NAME) -v $(PROJECT_DATA):/srv -w /srv -u node -it $(DOCKER_CONTAINER_IMAGE) $(DOCKER_CONTAINER_IMAGE_SHELL) -c "pnpm install && pnpm run build" + make clear + $(call spawn,$(DOCKER_RUN_EXTRA_ARGS_BUILD),-c "pnpm install && pnpm run build") stop: docker stop $(DOCKER_CONTAINER_NAME) \ No newline at end of file