build: Add help to main Makefile

This commit is contained in:
jesus m. rodriguez
2018-04-06 10:46:20 -04:00
parent 3c8d424a43
commit 15681ddca9

View File

@@ -52,7 +52,7 @@ default: build
# #
# art # art
# #
art: art/mgmt_logo_default_symbol.png art/mgmt_logo_default_tall.png art/mgmt_logo_default_wide.png art/mgmt_logo_reversed_symbol.png art/mgmt_logo_reversed_tall.png art/mgmt_logo_reversed_wide.png art/mgmt_logo_white_symbol.png art/mgmt_logo_white_tall.png art/mgmt_logo_white_wide.png art: art/mgmt_logo_default_symbol.png art/mgmt_logo_default_tall.png art/mgmt_logo_default_wide.png art/mgmt_logo_reversed_symbol.png art/mgmt_logo_reversed_tall.png art/mgmt_logo_reversed_wide.png art/mgmt_logo_white_symbol.png art/mgmt_logo_white_tall.png art/mgmt_logo_white_wide.png ## generate artwork
cleanart: cleanart:
rm -f art/mgmt_logo_default_symbol.png art/mgmt_logo_default_tall.png art/mgmt_logo_default_wide.png art/mgmt_logo_reversed_symbol.png art/mgmt_logo_reversed_tall.png art/mgmt_logo_reversed_wide.png art/mgmt_logo_white_symbol.png art/mgmt_logo_white_tall.png art/mgmt_logo_white_wide.png rm -f art/mgmt_logo_default_symbol.png art/mgmt_logo_default_tall.png art/mgmt_logo_default_wide.png art/mgmt_logo_reversed_symbol.png art/mgmt_logo_reversed_tall.png art/mgmt_logo_reversed_wide.png art/mgmt_logo_white_symbol.png art/mgmt_logo_white_tall.png art/mgmt_logo_white_wide.png
@@ -88,19 +88,19 @@ art/mgmt_logo_white_wide.png: art/mgmt_logo_white_wide.svg
all: docs $(PROGRAM).static all: docs $(PROGRAM).static
# show the current version # show the current version
version: version: ## show the current version
@echo $(VERSION) @echo $(VERSION)
program: program: ## show the program name
@echo $(PROGRAM) @echo $(PROGRAM)
path: path: ## create working paths
./misc/make-path.sh ./misc/make-path.sh
deps: deps: ## install system and golang dependencies
./misc/make-deps.sh ./misc/make-deps.sh
run: run: ## run mgmt
find . -maxdepth 1 -type f -name '*.go' -not -name '*_test.go' | xargs go run -ldflags "-X main.program=$(PROGRAM) -X main.version=$(SVERSION)" find . -maxdepth 1 -type f -name '*.go' -not -name '*_test.go' | xargs go run -ldflags "-X main.program=$(PROGRAM) -X main.version=$(SVERSION)"
# include race flag # include race flag
@@ -108,20 +108,20 @@ race:
find . -maxdepth 1 -type f -name '*.go' -not -name '*_test.go' | xargs go run -race -ldflags "-X main.program=$(PROGRAM) -X main.version=$(SVERSION)" find . -maxdepth 1 -type f -name '*.go' -not -name '*_test.go' | xargs go run -race -ldflags "-X main.program=$(PROGRAM) -X main.version=$(SVERSION)"
# generate go files from non-go source # generate go files from non-go source
bindata: bindata: ## generate go files from non-go sources
@echo "Generating: bindata..." @echo "Generating: bindata..."
$(MAKE) --quiet -C bindata $(MAKE) --quiet -C bindata
generate: generate:
go generate go generate
lang: lang: ## generates the lexer/parser for the language frontend
@# recursively run make in child dir named lang @# recursively run make in child dir named lang
@echo "Generating: lang..." @echo "Generating: lang..."
$(MAKE) --quiet -C lang $(MAKE) --quiet -C lang
# build a `mgmt` binary for current host os/arch # build a `mgmt` binary for current host os/arch
$(PROGRAM): build/mgmt-${GOHOSTOS}-${GOHOSTARCH} $(PROGRAM): build/mgmt-${GOHOSTOS}-${GOHOSTARCH} ## build an mgmt binary for current host os/arch
cp $< $@ cp $< $@
$(PROGRAM).static: $(GO_FILES) $(PROGRAM).static: $(GO_FILES)
@@ -129,7 +129,7 @@ $(PROGRAM).static: $(GO_FILES)
go generate go generate
go build -a -installsuffix cgo -tags netgo -ldflags '-extldflags "-static" -X main.program=$(PROGRAM) -X main.version=$(SVERSION) -s -w' -o $(PROGRAM).static $(BUILD_FLAGS); go build -a -installsuffix cgo -tags netgo -ldflags '-extldflags "-static" -X main.program=$(PROGRAM) -X main.version=$(SVERSION) -s -w' -o $(PROGRAM).static $(BUILD_FLAGS);
build: LDFLAGS=-s -w build: LDFLAGS=-s -w ## build a fresh mgmt binary
build: $(PROGRAM) build: $(PROGRAM)
build-debug: LDFLAGS= build-debug: LDFLAGS=
@@ -148,7 +148,7 @@ build/mgmt-%: $(GO_FILES) | bindata lang
crossbuild_targets = $(addprefix build/mgmt-,$(subst /,-,${GOOSARCHES})) crossbuild_targets = $(addprefix build/mgmt-,$(subst /,-,${GOOSARCHES}))
crossbuild: ${crossbuild_targets} crossbuild: ${crossbuild_targets}
clean: clean: ## clean things up
$(MAKE) --quiet -C bindata clean $(MAKE) --quiet -C bindata clean
$(MAKE) --quiet -C lang clean $(MAKE) --quiet -C lang clean
[ ! -e $(PROGRAM) ] || rm $(PROGRAM) [ ! -e $(PROGRAM) ] || rm $(PROGRAM)
@@ -157,7 +157,7 @@ clean:
# crossbuild artifacts # crossbuild artifacts
rm -f build/mgmt-* rm -f build/mgmt-*
test: build test: build ## run tests
./test.sh ./test.sh
# create all test targets for make tab completion (eg: make test-gofmt) # create all test targets for make tab completion (eg: make test-gofmt)
@@ -179,9 +179,9 @@ gofmt:
yamlfmt: yamlfmt:
find . -maxdepth 3 -type f -name '*.yaml' -not -path './old/*' -not -path './tmp/*' -not -path './omv.yaml' -exec ruby -e "require 'yaml'; x=YAML.load_file('{}').to_yaml.each_line.map(&:rstrip).join(10.chr)+10.chr; File.open('{}', 'w').write x" \; find . -maxdepth 3 -type f -name '*.yaml' -not -path './old/*' -not -path './tmp/*' -not -path './omv.yaml' -exec ruby -e "require 'yaml'; x=YAML.load_file('{}').to_yaml.each_line.map(&:rstrip).join(10.chr)+10.chr; File.open('{}', 'w').write x" \;
format: gofmt yamlfmt format: gofmt yamlfmt ## format yaml and golang code
docs: $(PROGRAM)-documentation.pdf docs: $(PROGRAM)-documentation.pdf ## generate docs
$(PROGRAM)-documentation.pdf: docs/documentation.md $(PROGRAM)-documentation.pdf: docs/documentation.md
pandoc docs/documentation.md -o docs/'$(PROGRAM)-documentation.pdf' pandoc docs/documentation.md -o docs/'$(PROGRAM)-documentation.pdf'
@@ -206,7 +206,7 @@ rpmbuild/SOURCES/: tar
rpmbuild/SRPMS/: srpm rpmbuild/SRPMS/: srpm
rpmbuild/RPMS/: rpm rpmbuild/RPMS/: rpm
upload: upload-sources upload-srpms upload-rpms upload: upload-sources upload-srpms upload-rpms ## upload sources
# do nothing # do nothing
# #
@@ -314,14 +314,14 @@ upload-rpms: rpmbuild/RPMS/ rpmbuild/RPMS/SHA256SUMS rpmbuild/RPMS/SHA256SUMS.as
# #
# copr build # copr build
# #
copr: upload-srpms copr: upload-srpms ## build in copr
./misc/copr-build.py https://$(SERVER)/$(REMOTE_PATH)/SRPMS/$(SRPM_BASE) ./misc/copr-build.py https://$(SERVER)/$(REMOTE_PATH)/SRPMS/$(SRPM_BASE)
# #
# deb build # deb build
# #
deb: deb: ## build debian package
./misc/gen-deb-changelog-from-git.sh ./misc/gen-deb-changelog-from-git.sh
dpkg-buildpackage dpkg-buildpackage
# especially when building in Docker container, pull build artifact in project directory. # especially when building in Docker container, pull build artifact in project directory.
@@ -329,15 +329,24 @@ deb:
# cleanup # cleanup
rm -rf debian/mgmt/ rm -rf debian/mgmt/
build_container: build_container: ## builds the container
docker build -t purpleidea/mgmt-build -f docker/Dockerfile.build . docker build -t purpleidea/mgmt-build -f docker/Dockerfile.build .
docker run -td --name mgmt-build purpleidea/mgmt-build docker run -td --name mgmt-build purpleidea/mgmt-build
docker cp mgmt-build:/root/gopath/src/github.com/purpleidea/mgmt/mgmt . docker cp mgmt-build:/root/gopath/src/github.com/purpleidea/mgmt/mgmt .
docker build -t purpleidea/mgmt -f docker/Dockerfile.static . docker build -t purpleidea/mgmt -f docker/Dockerfile.static .
docker rm mgmt-build || true docker rm mgmt-build || true
clean_container: clean_container: ## removes the container
docker rmi purpleidea/mgmt-build docker rmi purpleidea/mgmt-build
docker rmi purpleidea/mgmt docker rmi purpleidea/mgmt
help: ## show this help screen
@echo 'Usage: make <OPTIONS> ... <TARGETS>'
@echo ''
@echo 'Available targets are:'
@echo ''
@grep -E '^[ a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
@echo ''
# vim: ts=8 # vim: ts=8