diff --git a/development/makefiles/directories-standard.mk b/development/makefiles/directories-standard.mk new file mode 100644 index 0000000000000000000000000000000000000000..de063d9e0f8371126fda42349ffbf0e567af28d0 --- /dev/null +++ b/development/makefiles/directories-standard.mk @@ -0,0 +1,36 @@ +############################################################################################# +############################################################################################# +## +## DIRECTORIES +## +############################################################################################# +############################################################################################# + +APPLICATION_PATH ?= $(PROJECT_ROOT)application/ +DEPLOYMENT_PATH ?= $(PROJECT_ROOT)deployment/ +DEVELOPMENT_PATH ?= $(PROJECT_ROOT)development/ +DOCUMENTATION_PATH ?= $(PROJECT_ROOT)documentation/ +REQUIREMENT_PATH ?= $(PROJECT_ROOT)requirement/ +CREDENTIALS_PATH ?= $(PROJECT_ROOT)credential/ + +RESOURCE_PATH ?= $(APPLICATION_PATH)resource/ +SOURCE_PATH ?= $(APPLICATION_PATH)source/ +WEB_PATH ?= $(APPLICATION_PATH)web/ +SCRIPTS_PATH ?= $(DEVELOPMENT_PATH)script/ +BUILD_PATH = $(DEPLOYMENT_PATH)build/ +VENDOR_PATH ?= $(DEPLOYMENT_PATH)vendor/ + +PROJECT_DIRECTORIES := $(PROJECT_DIRECTORIES) \ + $(APPLICATION_PATH) \ + $(RESOURCE_PATH) \ + $(SOURCE_PATH) \ + $(WEB_PATH) \ + $(DEPLOYMENT_PATH) \ + $(VENDOR_PATH) \ + $(DEVELOPMENT_PATH) \ + $(SCRIPTS_PATH) \ + $(DOCUMENTATION_PATH) \ + $(REQUIREMENT_PATH) \ + $(CREDENTIALS_PATH) \ + $(BUILD_PATH) + \ No newline at end of file diff --git a/development/makefiles/license-agpl3.mk b/development/makefiles/license-agpl3.mk index ff461e24d8ab4c10f4269e5016826c9b076b763e..0d973a38b0830ab474943526e094bedf592e2016 100644 --- a/development/makefiles/license-agpl3.mk +++ b/development/makefiles/license-agpl3.mk @@ -6,5 +6,7 @@ ############################################################################################# ############################################################################################# -LICENSETEXT := AGPL 3.0 -COPYRIGHTTEXT := © schukai GmbH, Released under the $(LICENSETEXT) License. \ No newline at end of file +## asdfasd +LICENSE_TEXT ?= AGPL 3.0 + +COPYRIGHT_TEXT ?= © schukai GmbH, Released under the $(LICENSE_TEXT) License. \ No newline at end of file diff --git a/development/makefiles/nodejs.mk b/development/makefiles/nodejs.mk new file mode 100644 index 0000000000000000000000000000000000000000..374b9b2ff9ecdf06def50243b3cb5a2e8f94215a --- /dev/null +++ b/development/makefiles/nodejs.mk @@ -0,0 +1,36 @@ +############################################################################################# +############################################################################################# +## +## COMMANDS NODEJS +## +############################################################################################# +############################################################################################# + +# path and binaries +NODEJS ?= node +NPM ?= npm + +EXECUTABLES = $(EXECUTABLES:-) $(npm); + + +NODE_ROOT_DIR ?= $(PROJECT_ROOT) +NODE_MODULES_DIR ?= $(NODE_ROOT_DIR)node_modules/ +NODE_MODULES_BIN_DIR ?= $(NODE_MODULES_DIR).bin/ + +WEBPACK ?= $(NODE_MODULES_BIN_DIR)webpack +BABEL ?= $(NODE_MODULES_BIN_DIR)babel +UGLIFYJS ?= $(NODE_MODULES_BIN_DIR)uglifyjs +C8 ?= $(NODE_MODULES_BIN_DIR)c8 +MOCHA ?= $(NODE_MODULES_BIN_DIR)mocha +JSDOC ?= $(NODE_MODULES_BIN_DIR)jsdoc + + +FIXBROKENPLANTUML := $(NODE_MODULES_DIR)jsdoc-plantuml/fixBrokenNodeJS.js +PACKAGEMODIFIED := $(NODE_MODULES_DIR).modified + + +$(PACKAGEMODIFIED): $(NODE_ROOT_DIR)package.json + $(QUIET) $(NPM) install + $(QUIET) $(TEST) -s $(FIXBROKENPLANTUML) || $(NODE) $(FIXBROKENPLANTUML) + $(QUIET) $(RM) $(PACKAGEMODIFIED) + $(QUIET) $(TOUCH) -m $(PACKAGEMODIFIED) diff --git a/development/makefiles/target-build-go.mk b/development/makefiles/target-build-go.mk index 605d1b61f7c39c6351cf90930c430a466f9bdc00..ac1a419147e7598f9c921625fee82fe75c48cf89 100644 --- a/development/makefiles/target-build-go.mk +++ b/development/makefiles/target-build-go.mk @@ -10,13 +10,13 @@ ## Compiling for every OS and Platform compile: next-patch-version $(QUIET) $(ECHO) "Compiling for every OS and Platform" - $(QUIET) $(ECHO) "Version: $(PROJECTVERSION)" - $(QUIET) $(ECHO) "Build: $(PROJECTBUILDDATE)" + $(QUIET) $(ECHO) "Version: $(PROJECT_VERSION)" + $(QUIET) $(ECHO) "Build: $(PROJECT_BUILD_DATE)" $(QUIET) cd $(SOURCE_PATH) ; \ - GO111MODULE=on GOOS=linux GOARCH=arm $(GO) build -ldflags "-X main.version=$(PROJECTVERSION) -X main.build=$(PROJECTBUILDDATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-arm ; \ - GOOS=linux GOARCH=amd64 $(GO) build -ldflags "-X main.version=$(PROJECTVERSION) -X main.build=$(PROJECTBUILDDATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-amd64 ; \ - GOOS=linux GOARCH=arm64 $(GO) build -ldflags "-X main.version=$(PROJECTVERSION) -X main.build=$(PROJECTBUILDDATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-arm64 ; \ - GOOS=linux GOARCH=386 $(GO) build -ldflags "-X main.version=$(PROJECTVERSION) -X main.build=$(PROJECTBUILDDATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-386 ; \ - GOOS=windows GOARCH=amd64 $(GO) build -ldflags "-X main.version=$(PROJECTVERSION) -X main.build=$(PROJECTBUILDDATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-windows ; \ + GO111MODULE=on GOOS=linux GOARCH=arm $(GO) build -ldflags "-X main.version=$(PROJECT_VERSION) -X main.build=$(PROJECT_BUILD_DATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-arm ; \ + GOOS=linux GOARCH=amd64 $(GO) build -ldflags "-X main.version=$(PROJECT_VERSION) -X main.build=$(PROJECT_BUILD_DATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-amd64 ; \ + GOOS=linux GOARCH=arm64 $(GO) build -ldflags "-X main.version=$(PROJECT_VERSION) -X main.build=$(PROJECT_BUILD_DATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-arm64 ; \ + GOOS=linux GOARCH=386 $(GO) build -ldflags "-X main.version=$(PROJECT_VERSION) -X main.build=$(PROJECT_BUILD_DATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-386 ; \ + GOOS=windows GOARCH=amd64 $(GO) build -ldflags "-X main.version=$(PROJECT_VERSION) -X main.build=$(PROJECT_BUILD_DATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-windows ; \ cd $(PROJECT_ROOT); diff --git a/development/makefiles/target-build-nodejs.mk b/development/makefiles/target-build-nodejs.mk new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/development/makefiles/target-caddy.mk b/development/makefiles/target-caddy.mk new file mode 100644 index 0000000000000000000000000000000000000000..4387423c6595cd58474e536f0cf4a181a69c2d3d --- /dev/null +++ b/development/makefiles/target-caddy.mk @@ -0,0 +1,23 @@ +############################################################################################# +############################################################################################# +## +## SERVER CADDY +## +############################################################################################# +############################################################################################# + +CADDY_VENDOR_PATH ?= $(VENDOR_PATH)caddy/ +CADDY_BIN ?= $(CADDY_VENDOR_PATH)caddy +CADDY_CONFIG ?= $(CADDY_VENDOR_PATH)caddy.conf +CADDY_PIDFILE ?= $(shell mktemp -d)/caddy.pid + +$(CADDY_BIN): + $(QUIET) $(MKDIR) -p $(CADDY_VENDOR_PATH) + $(QUIET) $(WGET) -O $(CADDY_BIN) "https://caddyserver.com/api/download?os=linux&arch=amd64&idempotency=75143981108035" + $(QUIET) $(CHMOD) u+x $(CADDY_BIN) + +.PHONY: run-caddy +## run caddy webserver +run-caddy: $(CADDY_BIN) + $(QUIET) $(CADDY_BIN) run -config $(CADDY_CONFIG) -pidfile $(CADDY_PIDFILE) -watch + diff --git a/development/makefiles/target-deploy-tool.mk b/development/makefiles/target-deploy-tool.mk index ea1a65e47639d6af38e01b8982fb7dc5a964b83a..186ca98d8e2cd2318d074e7b1a19245f0e39c67a 100644 --- a/development/makefiles/target-deploy-tool.mk +++ b/development/makefiles/target-deploy-tool.mk @@ -6,13 +6,16 @@ ############################################################################################# ############################################################################################# + +EXECUTABLES = $(EXECUTABLES:-) $(AWS) +UPLOAD_TOOL_URL ?= s3://download.schukai.com/tools/$(COMPONENTSLUG)/ + .PHONY: deploy ## compile and deplay to aws deploy: compile - $(QUIET) AWS_PROFILE=schukai find $(BUILD_PATH) -iname $(COMPONENTSLUG)-* -exec aws s3 cp {} s3://download.schukai.com/tools/$(COMPONENTSLUG)/ \; + $(QUIET) AWS_PROFILE=schukai find $(BUILD_PATH) -iname $(COMPONENTSLUG)-* -exec $(AWS) s3 cp {} $(UPLOAD_TOOL_URL) \; -.PHONY: overview-to-aws -## overview-to-aws -overview-to-aws: - $(QUIET) AWS_PROFILE=schukai aws s3 cp $(WEB_PATH)/index.html s3://download.schukai.com/tools/$(COMPONENTSLUG)/ - \ No newline at end of file +.PHONY: overview-to-s3 +## overview-to-s3 +overview-to-s3: + $(QUIET) AWS_PROFILE=schukai $(AWS) s3 cp $(WEB_PATH)/index.html $(UPLOAD_TOOL_URL) \ No newline at end of file diff --git a/development/makefiles/target-git.mk b/development/makefiles/target-git.mk index 97f7d894569a83b3b21eeb0ced0ab5a31ba99210..2464cbc8c7dfd46dc5cd538d1855e80e71da0535 100644 --- a/development/makefiles/target-git.mk +++ b/development/makefiles/target-git.mk @@ -19,7 +19,7 @@ GIT_MESSAGE := current status git-branch: $(QUIET) export BRANCH="b$(GIT_TAG)/$(shell uuidgen --random)" ; \ - $(GIT) checkout -b $${BRANCH} && \ + $(QUIET) $(GIT) checkout -b $${BRANCH} && \ RESULT=$$($(GIT) push origin $$BRANCH 2>&1) && \ RESULT2=$$($(GIT) branch --set-upstream-to=origin/$$BRANCH $$BRANCH) && \ GITLABURL=$$(echo "$$RESULT" | tr '\n' '\#' | grep -o 'remote\:\s*https:\/\/gitlab\.schukai\.com[^ ]*' | cut -d " " -f2-9 | sed -e 's/^[ \t]*//') && \ @@ -28,7 +28,7 @@ git-branch: .PHONY: git-to-master ## git checkout master, fetch and merge git-to-master: - $(GIT) checkout master && $(GIT) fetch -pP && $(GIT) merge + $(QUIET) $(GIT) checkout master && $(GIT) fetch -pP && $(GIT) merge .PHONY: git-push-to-server ## git push changes to server diff --git a/development/makefiles/target-help.mk b/development/makefiles/target-help.mk index 249d3fd574e9cfbc09d0b6a4f8af7eef0f6f5986..abe1f924cbd4df3118ec7fd4ff02270d60e68f5d 100644 --- a/development/makefiles/target-help.mk +++ b/development/makefiles/target-help.mk @@ -10,6 +10,7 @@ .DEFAULT_GOAL := help .PHONY: print +## Print Path print: $(ECHO) "THIS_MAKEFILE: $(THIS_MAKEFILE)" $(ECHO) "THIS_MAKEFILE_PATH: $(THIS_MAKEFILE_PATH)" @@ -32,7 +33,7 @@ help: } \ { lastLine = $$0 }' $(MAKEFILE_LIST) @printf "\n${COMMENT}Available arguments:${RESET}\n\n" - @awk '/^(([a-zA-Z\-\\_0-9\.@]+)\s=)/ { \ + @awk '/^(([a-zA-Z\-\\_0-9\.@]+)\s[?:]?=)/ { \ helpMessage = match(lastLine, /^## (.*)/); \ if (helpMessage) { \ helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \ diff --git a/development/makefiles/target-init-standard.mk b/development/makefiles/target-init-standard.mk new file mode 100644 index 0000000000000000000000000000000000000000..e3030ce4b8056c1ed70a82507c649d8f6ca77720 --- /dev/null +++ b/development/makefiles/target-init-standard.mk @@ -0,0 +1,20 @@ +############################################################################################# +############################################################################################# +## +## INIT-TARGETS +## +############################################################################################# +############################################################################################# + +## @see .PHONY https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html#Phony-Targets +.PHONY: init-standard + +## init standard project +init-standard: + # The default directories are defined in the + # directories-standard.mk file, but all other + # targets can define directories as well. + $(QUIET) $(ECHO) "Run init-standard" + $(foreach path,$(PROJECT_DIRECTORIES),\ + $(shell $(MKDIR) -p $(path))) + $(ECHO) "Done" diff --git a/development/makefiles/target-jekyll.mk b/development/makefiles/target-jekyll.mk new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/development/makefiles/target-minerva.mk b/development/makefiles/target-minerva.mk new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/development/makefiles/target-variable.mk b/development/makefiles/target-variable.mk new file mode 100644 index 0000000000000000000000000000000000000000..93f99c07fcc8ab3a8e000e865d7ddca2f2843220 --- /dev/null +++ b/development/makefiles/target-variable.mk @@ -0,0 +1,12 @@ +############################################################################################# +############################################################################################# +## +## VARIABLES-TARGETS +## +############################################################################################# +############################################################################################# + +.PHONY: variables +## Print all variables +variables: + @$(foreach v, $(.VARIABLES), $(if $(filter file,$(origin $(v))), $(info $(INFO)$(v)$(RESET)=$($(v))$(RESET)))) \ No newline at end of file diff --git a/development/makefiles/terminal.mk b/development/makefiles/terminal.mk index f5d4bf0b3bb494ac8f4bd182ef731eb59d62cd57..4ef5caaa070957f1add5b87271f0585b9dc05c03 100644 --- a/development/makefiles/terminal.mk +++ b/development/makefiles/terminal.mk @@ -11,26 +11,29 @@ SHELL = bash # path and binaries -AWK := awk -CP := cp -CD := cd -KILL := /bin/kill -MV := mv -RM := rm -f -MKDIR := mkdir -p -SED := sed -FIND := find -SORT := sort -TOUCH := touch -WGET := wget -CHMOD := chmod -RSYNC := rsync -XARGS := xargs -GREP := grep -MAKE := make -GIT := git -LN := ln -s -TOUCH := touch +AWK ?= awk +CP ?= cp +CD ?= cd +KILL ?= kill +MV ?= mv +RM ?= rm +MKDIR ?= mkdir +SED ?= sed +FIND ?= find +SORT ?= sort +TOUCH ?= touch +WGET ?= wget +CHMOD ?= chmod +RSYNC ?= rsync +XARGS ?= xargs +GREP ?= grep +MAKE ?= make +GIT ?= git +LN ?= ln +TOUCH ?= touch +TEST ?= test + + EXECUTABLES = $(EXECUTABLES:-) $(AWK) $(CP) $(KILL) $(MV) $(SED) $(FIND) $(SORT) $(TOUCH) $(WGET) $(CHMOD) $(RSYNC) $(XARGS) $(GREP) $(MAKE) $(GIT) diff --git a/development/makefiles/version.mk b/development/makefiles/version.mk index 1810adbc21f075dfacefca4470c789c2814772dd..ff374ab21a617d2430d4166705fb429506b83382 100644 --- a/development/makefiles/version.mk +++ b/development/makefiles/version.mk @@ -9,14 +9,19 @@ VERSION_BIN := version EXECUTABLES = $(EXECUTABLES:-) $(VERSION_BIN) -RELEASEFILE := $(PROJECT_ROOT)release.json -PROJECTVERSION := $(shell cat $(RELEASEFILE) | jq -r .version) -PROJECTBUILDDATE := $(shell $(VERSION_BIN) date) +RELEASE_FILE ?= $(PROJECT_ROOT)release.json + +ifeq ("$(wildcard $(RELEASE_FILE))","") + $(shell echo '{"version":"0.1.0"}' > $(RELEASE_FILE)) +endif + +PROJECT_VERSION ?= $(shell cat $(RELEASE_FILE) | jq -r .version) +PROJECT_BUILD_DATE ?= $(shell $(VERSION_BIN) date) .PHONY: next-patch-version ## create next-patch-version next-patch-version: $(QUIET) $(ECHO) "Creating next version" - $(QUIET) $(VERSION_BIN) patch --path $(RELEASEFILE) --selector "version" - $(QUIET) $(eval PROJECTVERSION := $(shell cat $(RELEASEFILE) | jq -r .version)) + $(QUIET) $(VERSION_BIN) patch --path $(RELEASE_FILE) --selector "version" + $(QUIET) $(eval PROJECT_VERSION := $(shell cat $(RELEASE_FILE) | jq -r .version))