Skip to content
Snippets Groups Projects
Verified Commit 25251846 authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

update makefiles

parent cd3c1f3d
No related branches found
No related tags found
No related merge requests found
Showing
with 214 additions and 99 deletions
Makefile.example
# Created by https://www.toptal.com/developers/gitignore/api/intellij+iml,phpunit,git,vim,visualstudiocode,phpstorm,go,intellij+all,netbeans,dbeaver,node,yarn
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij+iml,phpunit,git,vim,visualstudiocode,phpstorm,go,intellij+all,netbeans,dbeaver,node,yarn
......
......@@ -6,7 +6,7 @@
#############################################################################################
#############################################################################################
COMPONENT_NAME := Monster
COMPONENT_NAME := Conan
#############################################################################################
#############################################################################################
......@@ -21,12 +21,14 @@ THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
PROJECT_ROOT:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)/
THIS_MAKEFILE:=$(PROJECT_ROOT)$(THIS_MAKEFILE_PATH)
# include project.mk only if it exists
-include $(PROJECT_ROOT)project.mk
## Define the location of Makefiles
# Define the location of Makefiles
MAKEFILE_IMPORT_PATH?=$(PROJECT_ROOT)makefiles/
# include project.mk only if it exists
-include $(MAKEFILE_IMPORT_PATH)project.mk
#############################################################################################
......@@ -41,30 +43,41 @@ include $(MAKEFILE_IMPORT_PATH)directories-standard.mk
#include $(MAKEFILE_IMPORT_PATH)jsdoc.mk
include $(MAKEFILE_IMPORT_PATH)output.mk
include $(MAKEFILE_IMPORT_PATH)placeholder.mk
include $(MAKEFILE_IMPORT_PATH)s3.mk
#include $(MAKEFILE_IMPORT_PATH)s3.mk
#include $(MAKEFILE_IMPORT_PATH)licenses.mk
#include $(MAKEFILE_IMPORT_PATH)license-agpl3.mk
#include $(MAKEFILE_IMPORT_PATH)license-unlicensed.mk
#include $(MAKEFILE_IMPORT_PATH)license-all-rights-reserved.mk
#include $(MAKEFILE_IMPORT_PATH)jsdoc-json.mk
include $(MAKEFILE_IMPORT_PATH)go.mk
include $(MAKEFILE_IMPORT_PATH)changelog.mk
include $(MAKEFILE_IMPORT_PATH)docman.mk
#include $(MAKEFILE_IMPORT_PATH)reqman.mk
include $(MAKEFILE_IMPORT_PATH)git.mk
include $(MAKEFILE_IMPORT_PATH)gitignore.mk
include $(MAKEFILE_IMPORT_PATH)color.mk
include $(MAKEFILE_IMPORT_PATH)version.mk
#include $(MAKEFILE_IMPORT_PATH)docker.mk
#include $(MAKEFILE_IMPORT_PATH)node.mk
include $(MAKEFILE_IMPORT_PATH)terminal.mk
include $(MAKEFILE_IMPORT_PATH)target-go-fetch-licenses.mk
include $(MAKEFILE_IMPORT_PATH)target-deploy-tool.mk
#include $(MAKEFILE_IMPORT_PATH)target-go-fetch-licenses.mk
#include $(MAKEFILE_IMPORT_PATH)target-add-licenses.mk
#include $(MAKEFILE_IMPORT_PATH)target-deploy-tool.mk
#include $(MAKEFILE_IMPORT_PATH)target-jsdoc-build.mk
#include $(MAKEFILE_IMPORT_PATH)target-jekyll.mk
#include $(MAKEFILE_IMPORT_PATH)target-minerva.mk
#include $(MAKEFILE_IMPORT_PATH)target-docman.mk
#include $(MAKEFILE_IMPORT_PATH)target-node-build.mk
#include $(MAKEFILE_IMPORT_PATH)target-caddy.mk
include $(MAKEFILE_IMPORT_PATH)target-conan.mk
#include $(MAKEFILE_IMPORT_PATH)target-conan.mk
include $(MAKEFILE_IMPORT_PATH)target-update-makefiles.mk
include $(MAKEFILE_IMPORT_PATH)target-help.mk
include $(MAKEFILE_IMPORT_PATH)target-go-build.mk
#include $(MAKEFILE_IMPORT_PATH)target-node-test.mk
#include $(MAKEFILE_IMPORT_PATH)target-npm-publish.mk
include $(MAKEFILE_IMPORT_PATH)target-git.mk
include $(MAKEFILE_IMPORT_PATH)target-init-standard.mk
include $(MAKEFILE_IMPORT_PATH)target-version.mk
include $(MAKEFILE_IMPORT_PATH)target-variable.mk
include $(MAKEFILE_IMPORT_PATH)terminal-check.mk
......
#############################################################################################
#############################################################################################
##
## PROJECT-DEFINITIONS
##
#############################################################################################
#############################################################################################
COMPONENT_NAME := Monster
#############################################################################################
#############################################################################################
##
## MORE GENERAL BLOCK WITH STANDARD DEFINITIONS
##
#############################################################################################
#############################################################################################
# get Makefile directory name: http://stackoverflow.com/a/5982798/376773
THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
PROJECT_ROOT:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)/
THIS_MAKEFILE:=$(PROJECT_ROOT)$(THIS_MAKEFILE_PATH)
-include $(PROJECT_ROOT)project.mk
## Define the location of Makefiles
MAKEFILE_IMPORT_PATH?=$(PROJECT_ROOT)makefiles/
-include $(MAKEFILE_IMPORT_PATH)project.mk
#############################################################################################
#############################################################################################
##
## INCLUSION OF VARIOUS STANDARD RULES
##
#############################################################################################
#############################################################################################
include $(MAKEFILE_IMPORT_PATH)directories-standard.mk
#include $(MAKEFILE_IMPORT_PATH)jsdoc.mk
include $(MAKEFILE_IMPORT_PATH)output.mk
include $(MAKEFILE_IMPORT_PATH)placeholder.mk
#include $(MAKEFILE_IMPORT_PATH)s3.mk
#include $(MAKEFILE_IMPORT_PATH)license-agpl3.mk
#include $(MAKEFILE_IMPORT_PATH)jsdoc-json.mk
#include $(MAKEFILE_IMPORT_PATH)go.mk
include $(MAKEFILE_IMPORT_PATH)gitignore.mk
include $(MAKEFILE_IMPORT_PATH)color.mk
include $(MAKEFILE_IMPORT_PATH)version.mk
#include $(MAKEFILE_IMPORT_PATH)node.mk
include $(MAKEFILE_IMPORT_PATH)terminal.mk
#include $(MAKEFILE_IMPORT_PATH)target-go-fetch-licenses.mk
#include $(MAKEFILE_IMPORT_PATH)target-deploy-tool.mk
#include $(MAKEFILE_IMPORT_PATH)target-jsdoc-build.mk
#include $(MAKEFILE_IMPORT_PATH)target-jekyll.mk
#include $(MAKEFILE_IMPORT_PATH)target-minerva.mk
#include $(MAKEFILE_IMPORT_PATH)target-docman.mk
#include $(MAKEFILE_IMPORT_PATH)target-node-build.mk
#include $(MAKEFILE_IMPORT_PATH)target-caddy.mk
#include $(MAKEFILE_IMPORT_PATH)target-conan.mk
include $(MAKEFILE_IMPORT_PATH)target-update-makefiles.mk
include $(MAKEFILE_IMPORT_PATH)target-help.mk
#include $(MAKEFILE_IMPORT_PATH)target-go-build.mk
#include $(MAKEFILE_IMPORT_PATH)target-node-test.mk
#include $(MAKEFILE_IMPORT_PATH)target-npm-publish.mk
include $(MAKEFILE_IMPORT_PATH)target-git.mk
include $(MAKEFILE_IMPORT_PATH)target-init-standard.mk
include $(MAKEFILE_IMPORT_PATH)target-variable.mk
include $(MAKEFILE_IMPORT_PATH)terminal-check.mk
#############################################################################################
#############################################################################################
#############################################################################################
##
## CHANGELOG
##
#############################################################################################
#############################################################################################
GIT_CHGLOG_BIN := $(shell command -v git-chglog 2> /dev/null)
ifeq ($(GO),)
$(error $(ERRORMARKER) GO is not defined)
endif
ifeq ($(GIT_CHGLOG_BIN),)
$(shell $(GO) install github.com/git-chglog/git-chglog/cmd/git-chglog@latest)
endif
## location of CHANGELOG.md file
CHANGELOG_FILE ?= $(PROJECT_ROOT)CHANGELOG.md
EXECUTABLES = $(EXECUTABLES:-) $(GIT_CHGLOG_BIN)
\ No newline at end of file
#############################################################################################
#############################################################################################
##
## DOCKER
##
#############################################################################################
#############################################################################################
DOCKER ?= docker
EXECUTABLES = $(EXECUTABLES:-) $(DOCKER);
#############################################################################################
#############################################################################################
##
## DOCMAN
##
#############################################################################################
#############################################################################################
DOCMAN_BIN ?= $(VENDOR_PATH)docman
#############################################################################################
#############################################################################################
##
## GIT
##
#############################################################################################
#############################################################################################
GIT ?= git
UUIDGEN ?= uuidgen
EXECUTABLES = $(EXECUTABLES:-) $(UUIDGEN) $(GIT)
\ No newline at end of file
......@@ -7,6 +7,9 @@
#############################################################################################
define GITIGNOREDS
Makefile.example
# Created by https://www.toptal.com/developers/gitignore/api/intellij+iml,phpunit,git,vim,visualstudiocode,phpstorm,go,intellij+all,netbeans,dbeaver,node,yarn
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij+iml,phpunit,git,vim,visualstudiocode,phpstorm,go,intellij+all,netbeans,dbeaver,node,yarn
......
......@@ -10,3 +10,7 @@
GO := go
EXECUTABLES = $(EXECUTABLES:-) $(GO);
ifeq ($(shell command -v $(GO) 2> /dev/null),)
$(error "go is not installed. Please install go <https://go.dev/doc/install>")
endif
#############################################################################################
#############################################################################################
##
## COLORS
## AGPL 3.0 LICENSE
##
#############################################################################################
#############################################################################################
......@@ -9,5 +9,11 @@
## License used in the project
LICENSE_TEXT ?= AGPL 3.0
## The spdx license identifier
SPDX_LICENSE_ID ?= AGPL-3.0
## Copyright holder of the project
COPYRIGHT_TEXT ?= © schukai GmbH, Released under the $(LICENSE_TEXT) License.
\ No newline at end of file
COPYRIGHT_TEXT ?= © schukai GmbH, Released under the $(LICENSE_TEXT) License.
## The owner of the project
COPYRIGHT_OWNER ?= schukai GmbH
\ No newline at end of file
#############################################################################################
#############################################################################################
##
## AGPL 3.0 LICENSE
##
#############################################################################################
#############################################################################################
## License used in the project
LICENSE_TEXT ?= All rights reserved
## The spdx license identifier
SPDX_LICENSE_ID ?=
## Copyright holder of the project
COPYRIGHT_TEXT ?= © schukai GmbH, $(LICENSE_TEXT).
## The owner of the project
COPYRIGHT_OWNER ?= schukai GmbH
\ No newline at end of file
#############################################################################################
#############################################################################################
##
## UNLICENSED
##
#############################################################################################
#############################################################################################
## License used in the project
LICENSE_TEXT ?= UNLICENSED
## The spdx license identifier
SPDX_LICENSE_ID ?=
## Copyright holder of the project
COPYRIGHT_TEXT ?= © schukai GmbH, $(LICENSE_TEXT).
## The owner of the project
COPYRIGHT_OWNER ?= schukai GmbH
\ No newline at end of file
#############################################################################################
#############################################################################################
##
## LICENSE
##
#############################################################################################
#############################################################################################
## Files wich should be checked for license headers
LICENSE_FILE_PATTERN ?= ./*(.go|js|php)
# https://spdx.github.io/spdx-spec/v2.3/SPDX-license-list/
ADDLICENSE_BIN ?= addlicense
ifeq ($(shell command -v $(ADDLICENSE_BIN) 2> /dev/null),)
$(shell $(GO) install github.com/google/addlicense@latest)
EXECUTABLES = $(EXECUTABLES:-) $(ADDLICENSE_BIN);
endif
EXECUTABLES = $(EXECUTABLES:-) $(ADDLICENSE_BIN)
\ No newline at end of file
......@@ -11,11 +11,12 @@ NODEJS ?= node
NODE ?= node
NPM ?= pnpm
EXECUTABLES = $(EXECUTABLES:-) $(PNPM);
EXECUTABLES = $(EXECUTABLES:-) $(NPM);
NODE_PACKAGES := $(shell find $(PROJECT_ROOT) -type f -name 'package.json' -not -path '*/node_modules/*')
NODE_MODULES := $(shell find $(PROJECT_ROOT) -type d -name 'node_modules' -prune)
NODE_MODULES_MODIFIED := $(shell find $(PROJECT_ROOT) -type d -name 'node_modules' -prune -exec echo {}/.modified \; )
NODE_MODULES_MODIFIED := $(shell find . -type f -name 'package.json' -not -path '*/node_modules/*' -exec sh -c 'F=$$(dirname {}); echo $${F}/node_modules/.modified' \;)
$(NODE_MODULES_MODIFIED): $(NODE_PACKAGES)
$(ECHOMARKER) "Updating node modules..."
......
#############################################################################################
#############################################################################################
##
## REQMAN
##
#############################################################################################
#############################################################################################
REQMAN_BIN ?= $(VENDOR_PATH)reqman
#############################################################################################
#############################################################################################
##
## ADD SPDX LICENSES
##
## For commercial projects, it is not necessary to add the SPDX license identifier.
## The license header in each file is only for open-source projects, for example under
## the AGPL 3.0 license.
##
#############################################################################################
#############################################################################################
ifeq ($(ADDLICENSE_BIN),)
$(error "addlicense is not installed. Please check your makefile and include the licenses.mk")
endif
.PHONY: add-licenses
## Add license headers to all go files
add-licenses:
$(ECHOMARKER) "Add license headers to all go files"
ifndef SPDX_LICENSE_ID
$(error "SPDX_LICENSE_ID is not defined. Please check your makefile and include the licenses.mk")
endif
$(QUIET) $(ADDLICENSE_BIN) -c "$(COPYRIGHT_OWNER)" -s -l "$(SPDX_LICENSE_ID)" $(LICENSE_FILE_PATTERN)
\ No newline at end of file
......@@ -17,5 +17,5 @@ $(CONAN_BIN):
.PHONY: run-conan
## run conan webserver
run-conan: $(CONAN_BIN)
$(QUIET) $(CONAN_BIN) server serve --config $(CONAN_CONFIG)
$(QUIET) $(CONAN_BIN) server serve -config $(CONAN_CONFIG)
......@@ -7,13 +7,20 @@
#############################################################################################
#############################################################################################
ifeq ($(DOCMAN_BIN),)
$(error "$(DOCMAN_BIN) is not installed. Please check your makefile and include the docman.mk")
endif
$(DOCMAN_BIN):
$(QUIET) $(MKDIR) -p $(VENDOR_PATH)
$(QUIET) $(WGET) -O $(DOCMAN_BIN) http://download.schukai.com/tools/docman/docman-$(shell uname -s | tr [:upper:] [:lower:])-$(shell echo `uname -m | sed s/aarch64/arm64/ | sed s/x86_64/amd64/`)
$(QUIET) $(CHMOD) u+x $(DOCMAN_BIN)
$(PROJECT_ROOT)deployment/build/manual.html: ~/.local/bin/docman
docman document html --config $(PROJECT_ROOT)documentation/config.yaml
$(PROJECT_ROOT)deployment/build/manual.html: $(DOCMAN_BIN)
$(DOCMAN_BIN) document html --config $(PROJECT_ROOT)documentation/config.yaml
$(PROJECT_ROOT)deployment/build/manual.pdf: ~/.local/bin/docman
docman document pdf --config $(PROJECT_ROOT)documentation/config.yaml
$(PROJECT_ROOT)deployment/build/manual.pdf: $(DOCMAN_BIN)
$(DOCMAN_BIN) document pdf --config $(PROJECT_ROOT)documentation/config.yaml
.PHONY: build-doc-pdf
## creating the documentation in pdf format
......@@ -29,11 +36,3 @@ build-doc-html: $(PROJECT_ROOT)deployment/build/manual.html
build-doc: build-doc-pdf build-doc-html
~/.local/bin/docman:
wget -O ~/.local/bin/docman https://download.schukai.com/tools/docman/docman-linux-amd64
chmod u+x ~/.local/bin/docman
.PHONY: install-docman
install-docman: ~/.local/bin/docman
......@@ -6,7 +6,9 @@
#############################################################################################
#############################################################################################
EXECUTABLES = $(EXECUTABLES:-) uuidgen
ifeq ($(GIT),)
$(error $(ERRORMARKER) Git is not defined, check your Makefile if git.mk is included)
endif
## Current Branch-GIT_TAG
GIT_TAG := -
......@@ -17,7 +19,6 @@ GIT_MESSAGE := current status
.PHONY: git-branch
## create new branch (use GIT_TAG-Variable)
git-branch:
$(QUIET) export BRANCH="b$(GIT_TAG)/$(shell uuidgen --random)" ; \
$(QUIET) $(GIT) checkout -b $${BRANCH} && \
RESULT=$$($(GIT) push origin $$BRANCH 2>&1) && \
......@@ -45,3 +46,13 @@ git-push: git-branch git-push-to-server
## git create version tag
git-tag:
$(QUIET) $(GIT) tag -a "$(COMPONENT_VERSION)" -m "release $(COMPONENT_VERSION)"
.PHONY: git-prune-remote
## removes your local remote tracking branches where the branch no longer exists on the remote
git-prune-remote:
$(QUIET) $(GIT) remote prune origin
.PHONY: git-prune-local
## deletes local merged branches except the master branch
git-prune-local:
$(QUIET) $(GIT) branch --merged master | grep -v '^[ *]*master$$' | xargs git branch -d
\ No newline at end of file
......@@ -6,6 +6,10 @@
#############################################################################################
#############################################################################################
ifeq ($(GO),)
$(error $(ERRORMARKER) Go is not defined, check your Makefile if go.mk is included)
endif
GO_RELEASE_PACKAGE_NAME ?= main
.PHONY: compile
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment