blob: 6db573d80bca9899e9a35c72bada42a78c3afd80 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ________________________________________________________
# _________/\\\___________________________________________
# ________\/\\\___________________________________________
# ________\/\\\___________________________________________
# ________\/\\\______/\\\\\________/\\\\\\\\__/\\\\\\\\\\_
# ___/\\\\\\\\\____/\\\///\\\____/\\\//////__\/\\\//////__
# __/\\\////\\\___/\\\__\//\\\__/\\\_________\/\\\\\\\\\\_
# _\/\\\__\/\\\__\//\\\__/\\\__\//\\\________\////////\\\_
# _\//\\\\\\\/\\__\///\\\\\/____\///\\\\\\\\__/\\\\\\\\\\_
# __\///////\//_____\/////________\////////__\//////////__
# ________________________________________________________
#
#
BUILDDIR = _build
DOCKER_GROUP = $(or $(shell printenv DOCKER_GROUP), $(GID), 1000)
DOCKER_USER = $(or $(shell printenv DOCKER_USER), $(UID), 1000)
DOCS_FILES = $(shell find . -name \*.rst -print)
SOURCEDIR = docs
SPHINXBUILD = sphinx-build
SPHINXOPTS = -W
SPHINXPROJ = Stateful Functions
# Target called by netlify, does some setup tasks specific to netlify
.PHONY: multiversion
multiversion:
sphinx-versioning build "$(SOURCEDIR)" "$(BUILDDIR)/html"
# Target for building the docs on netlify
.PHONY: netlify
netlify:
./netlify-build.sh
# Run sphinx-autobuild to watch and rebuild the docs on changes
.PHONY: autobuild
autobuild:
sphinx-autobuild \
--host 0.0.0.0 \
--port 8000 \
--ignore "*.sw?" \
--ignore "*.sw??" \
--ignore "*~" \
"$(SOURCEDIR)" \
"$(BUILDDIR)/html" \
$(SPHINXOPTS) \
$(0)
.PHONY: latexpdf
latexpdf:
sphinx-build \
-M latexpdf \
"$(SOURCEDIR)" \
"$(BUILDDIR)/pdf" \
$(SPHINXOPTS) \
$(0)
# Build the base docker image for the docker-% target to use
.PHONY: docker
docker:
docker build -t stateful-functions-docs-builder .
# Run other make targets in docker... obviously don't call another docker target
.PHONY: docker-%
docker-%: docker
docker \
run \
--rm \
-it \
-v $(PWD):/build \
--user $(DOCKER_USER):$(DOCKER_GROUP) \
-p 8000:8000 \
stateful-functions-docs-builder \
make -C /build $*
# Run sphinx-autobuild in a docker container, much nicer than running locally
.PHONY: auto
auto: docker-autobuild
.PHONY: html
html:
@$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
# Legacy build hosted in a docker container, then deployed to kubernetes
.PHONY: dist
dist: docker-html
rsync -a _build/html dist/
make -C dist
# Remove/clean the build directory
.PHONY: clean
clean:
rm -rf "$(BUILDDIR)"
build-linter: Dockerfile-linter
docker build -f Dockerfile-linter -t stateful-functions/stateful-functions-docs-linter .
touch $@
.PHONY: docker-linter
docker-linter: build-linter
docker \
run \
--rm \
-it \
--name docker-linter \
-v ${PWD}:/run/docs \
-w /run/docs \
stateful-functions/stateful-functions-docs-linter:latest \
$(LINTER) $(or $(LINTER_TARGET), $(DOCS_FILES))
.PHONY: linter-alex
linter-alex:
make docker-linter LINTER=alex
.PHONY: linter-mdspell
linter-mdspell:
make docker-linter LINTER="mdspell --en-us --ignore-numbers --ignore-acronyms --report"
.PHONY: linter-proselint
linter-proselint:
make docker-linter LINTER=proselint
.PHONY: linter-retext-mapbox-standard
linter-retext-mapbox-standard:
make docker-linter LINTER=retext-mapbox-standard
.PHONY: linter-write-good
linter-write-good:
make docker-linter LINTER=write-good
.PHONY: lint
lint:
make linter-write-good || true
make linter-retext-mapbox-standard || true
make linter-alex || true
make linter-proselint || true
# This recreates the netlify build environment for local testing and troubleshooting.
# If you're really stumped, try running it with BUILD_ARGS=/bin/bash to get a shell
# and look around the filesystem to see whats up.
.PHONY: netlify-build-local
netlify-build-local:
@mkdir -p _build
@chmod g+w _build
docker \
run \
--rm \
-it \
-v $(PWD):/opt/buildhome/local_repo \
-e NETLIFY_REPO_URL=/opt/buildhome/local_repo \
--user buildbot:$(DOCKER_GROUP) \
netlify/build \
build $(or $(BUILD_ARGS), ./netlify-build-local.sh)