|
SHELL := /bin/bash |
|
PWD ?= pwd_unknown |
|
THIS_FILE := $(lastword $(MAKEFILE_LIST)) |
|
export THIS_FILE |
|
TIME := $(shell date +%s) |
|
export TIME |
|
ARCH := $(shell uname -m) |
|
export ARCH |
|
ifeq ($(user),) |
|
HOST_USER := root |
|
HOST_UID := $(strip $(if $(uid),$(uid),0)) |
|
else |
|
HOST_USER := $(strip $(if $(USER),$(USER),nodummy)) |
|
HOST_UID := $(strip $(if $(shell id -u),$(shell id -u),4000)) |
|
endif |
|
export HOST_USER |
|
export HOST_UID |
|
|
|
ifeq ($(target),) |
|
SERVICE_TARGET ?= shell |
|
else |
|
SERVICE_TARGET := $(target) |
|
endif |
|
export SERVICE_TARGET |
|
|
|
ifeq ($(docker),) |
|
#DOCKER := $(shell find /usr/local/bin -name 'docker') |
|
DOCKER := $(shell which docker) |
|
else |
|
DOCKER := $(docker) |
|
endif |
|
export DOCKER |
|
|
|
ifeq ($(compose),) |
|
DOCKER_COMPOSE := $(shell which docker-compose) |
|
else |
|
DOCKER_COMPOSE := $(compose) |
|
endif |
|
export DOCKER_COMPOSE |
|
|
|
ifeq ($(alpine),) |
|
ALPINE_VERSION := 3.11.6 |
|
else |
|
ALPINE_VERSION := $(alpine) |
|
endif |
|
export ALPINE_VERSION |
|
|
|
# PROJECT_NAME defaults to name of the current directory. |
|
ifeq ($(project),) |
|
PROJECT_NAME := $(notdir $(PWD)) |
|
else |
|
PROJECT_NAME := $(project) |
|
endif |
|
export PROJECT_NAME |
|
|
|
#GIT CONFIG |
|
GIT_USER_NAME := $(shell git config user.name) |
|
export GIT_USER_NAME |
|
GIT_USER_EMAIL := $(shell git config user.email) |
|
export GIT_USER_EMAIL |
|
GIT_SERVER := gist.github.com |
|
export GIT_SERVER |
|
|
|
GIT_REPO_NAME := $(PROJECT_NAME) |
|
export GIT_REPO_NAME |
|
|
|
ifeq ($(GIT_REPO_NAME),d77f8ab35cafc61d85e7b775576c2481) |
|
GIT_PROFILE := randymcmillan |
|
else |
|
GIT_PROFILE := randymcmillan |
|
endif |
|
export GIT_PROFILE |
|
|
|
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD) |
|
export GIT_BRANCH |
|
GIT_HASH := $(shell git rev-parse HEAD) |
|
export GIT_HASH |
|
GIT_PREVIOUS_HASH := $(shell git rev-parse master@{0}) |
|
export GIT_PREVIOUS_HASH |
|
GIT_REPO_ORIGIN := $(shell git remote get-url origin) |
|
export GIT_REPO_ORIGIN |
|
GIT_REPO_PATH := $(HOME)/$(GIT_REPO_NAME) |
|
export GIT_REPO_PATH |
|
|
|
ifeq ($(nocache),true) |
|
NOCACHE := --no-cache |
|
else |
|
NOCACHE := |
|
endif |
|
export NOCACHE |
|
|
|
ifeq ($(verbose),true) |
|
VERBOSE := --verbose |
|
else |
|
VERBOSE := |
|
endif |
|
export VERBOSE |
|
|
|
ifneq ($(passwd),) |
|
PASSWORD := $(passwd) |
|
else |
|
PASSWORD := changeme |
|
endif |
|
export PASSWORD |
|
|
|
ifeq ($(cmd),) |
|
CMD_ARGUMENTS := |
|
else |
|
CMD_ARGUMENTS := $(cmd) |
|
endif |
|
export CMD_ARGUMENTS |
|
|
|
####################### |
|
|
|
PACKAGE_PREFIX := ghcr.io |
|
export PACKAGE_PREFIX |
|
|
|
GH_TOKEN :=~/GH_TOKEN.txt |
|
|
|
.PHONY: help |
|
help: |
|
@echo '' |
|
@echo ' [USAGE]: make [COMMAND] [EXTRA_ARGUMENTS] ' |
|
@echo '' |
|
@echo ' make help' |
|
@echo ' make super' |
|
@echo ' make signin' |
|
@echo ' make report' |
|
@echo '' |
|
@echo ' [DEV ENVIRONMENT]: ' |
|
@echo '' |
|
@echo ' make signin ~/GH_TOKEN.txt required from github.com' |
|
@echo '' |
|
@echo ' [EXTRA_ARGUMENTS]: set build variables ' |
|
@echo '' |
|
@echo ' nocache=true' |
|
@echo ' add --no-cache to command' |
|
@echo ' verbose=true' |
|
@echo ' add --verbose to command' |
|
@echo '' |
|
@echo ' [COMMANDS]: push a command to somewhere ' |
|
@echo '' |
|
@echo ' cmd=command ' |
|
@echo ' cmd="command" ' |
|
@echo ' send CMD_ARGUMENTS to the [TARGET]' |
|
@echo '' |
|
@echo ' [EXAMPLE]:' |
|
@echo ' make push nocache=true verbose=true cmd=test' |
|
@echo '' |
|
|
|
.PHONY: report |
|
report: |
|
@echo '' |
|
@echo ' [ARGUMENTS] ' |
|
@echo ' args:' |
|
@echo ' - HOME=${HOME}' |
|
@echo ' - PWD=${PWD}' |
|
@echo ' - THIS_FILE=${THIS_FILE}' |
|
@echo ' - TIME=${TIME}' |
|
@echo ' - PACKAGE_PREFIX=${PACKAGE_PREFIX}' |
|
@echo ' - ARCH=${ARCH}' |
|
@echo ' - HOST_USER=${HOST_USER}' |
|
@echo ' - HOST_UID=${HOST_UID}' |
|
@echo ' - SERVICE_TARGET=${SERVICE_TARGET}' |
|
@echo ' - ALPINE_VERSION=${ALPINE_VERSION}' |
|
@echo ' - PROJECT_NAME=${PROJECT_NAME}' |
|
@echo ' - DOCKER=${DOCKER}' |
|
@echo ' - DOCKER_COMPOSE=${DOCKER_COMPOSE}' |
|
@echo ' - GIT_USER_NAME=${GIT_USER_NAME}' |
|
@echo ' - GIT_USER_EMAIL=${GIT_USER_EMAIL}' |
|
@echo ' - GIT_SERVER=${GIT_SERVER}' |
|
@echo ' - GIT_PROFILE=${GIT_PROFILE}' |
|
@echo ' - GIT_BRANCH=${GIT_BRANCH}' |
|
@echo ' - GIT_PREVIOUS_HASH=${GIT_PREVIOUS_HASH}' |
|
@echo ' - GIT_REPO_ORIGIN=${GIT_REPO_ORIGIN}' |
|
@echo ' - GIT_REPO_NAME=${GIT_REPO_NAME}' |
|
@echo ' - GIT_REPO_PATH=${GIT_REPO_PATH}' |
|
@echo ' - NOCACHE=${NOCACHE}' |
|
@echo ' - VERBOSE=${VERBOSE}' |
|
@echo ' - PASSWORD=${PASSWORD}' |
|
@echo ' - CMD_ARGUMENTS=${CMD_ARGUMENTS}' |
|
|
|
####################### |
|
.PHONY: super |
|
super: |
|
ifneq ($(shell id -u),0) |
|
@echo switch to superuser |
|
sudo -s |
|
endif |
|
####################### |
|
.PHONY: signin |
|
signin: |
|
bash -c 'cat ~/GH_TOKEN.txt | docker login $(PACKAGE_PREFIX) -u $(GIT_USER_NAME) --password-stdin' |
|
|
|
.PHONY: readme |
|
readme: |
|
#$ make report no-cache=true verbose=true cmd='make doc' user=root doc |
|
#SHELL := /bin/bash |
|
@echo 'readme' |
|
bash -c "if pgrep MacDown; then pkill MacDown; fi" |
|
# bash -c "echo '<insert string>' >> README.md" |
|
bash -c "echo '## [$(PROJECT_NAME)](https://$(GIT_SERVER)/$(GIT_REPO_NAME)) ' > README.md" |
|
bash -c "cat DOCS.md >> README.md" |
|
bash -c "echo '##### $ <code>make report help</code>' >> README.md" |
|
bash -c "make report >> README.md" |
|
bash -c "make help >> README.md" |
|
bash -c "if hash open 2>/dev/null; then open README.md; fi || echo failed to open README.md" |
|
.PHONY: push |
|
push: readme |
|
@echo 'push' |
|
bash -c "git add -f GNUmakefile README.md DOCS.md" |
|
bash -c "git commit -m ... " |
|
bash -c "git push -f --all git@$(GIT_SERVER):$(PROJECT_NAME).git || echo failed to push docs" |
|
|
|
.PHONY: push-docs |
|
push-docs: readme push |
|
@echo 'push-docs' |
|
-include Makefile |
|
|