# Makefile for building CORD docs site, guide.opencord.org
# Building docs requires the following tools:
#  - Gitbook toolchain: https://toolchain.gitbook.com/setup.html
#  - NPM (for Gitbook and Swagger)
#  - Python (for build glossary script)
#  - linkchecker (for test target) http://wummel.github.io/linkchecker/

default: serve

# use bash for pushd/popd, and to fail if commands within  a pipe fail
SHELL = bash -o pipefail

GENERATED_DOCS = 

LINT_STYLE ?= mdl_relaxed.rb

serve: setup
	gitbook serve

build: setup
	gitbook build

setup: xos-gui xos-tosca kubernetes openstack onos simpleexampleservice exampleservice
	gitbook init
	gitbook install

test: linkcheck lint

linkcheck: build
	linkchecker -a _book/

lint:
	@echo "markdownlint(mdl) version: `mdl --version`"
	@echo "style config:"
	@echo "---"
	@cat $(LINT_STYLE)
	@echo "---"
	mdl -s $(LINT_STYLE) `find -L . ! -path "./_book/*" ! -path "./node_modules/*" -name "*.md"`

# link directories that contain other documentation
xos-gui:
	ln -s ../../xos-gui/docs xos-gui

xos-tosca:
	ln -s ../../xos-tosca/docs xos-tosca

kubernetes:
	ln -s ../../xos-services/kubernetes-service/docs kubernetes

openstack:
	ln -s ../../xos-services/openstack/docs openstack

onos:
	ln -s ../../xos-services/onos-service/docs onos

exampleservice:
	ln -s ../../xos-services/exampleservice/docs exampleservice

simpleexampleservice:
	ln -s ../../xos-services/simpleexampleservice/docs simpleexampleservice


# HOW TO
# - load the virtual env (https://guide.opencord.org/xos/dev/local_env.html)
# - run `make`
# - open the browser at `http://127.0.0.1:8080/ui`
# - you'll see the 'core' apis
# - you can see a list of available apis at `http://127.0.0.1:8080/specs/`
# - just replace the swagger file (top bar) with another one to see different APIs (to be improved)

DOCSDIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))

swagger: swagger_clean swagger_docs swagger_serve_spec

venv-xosdocs:
	./venv-xosdocs.sh

swagger_docs: venv-xosdocs
	bash -c 'source $(DOCSDIR)venv-xosdocs/bin/activate && python $(DOCSDIR)scripts/swagger_docs.py'

swagger_clean:
	rm -rf swagger/specs/*

venv_clean:
	rm -rf $(DOCSDIR)venv-xosdocs

swagger_serve_spec:
	http-server --cors ./swagger

clean: swagger_clean venv_clean
	rm -rf $(GENERATED_DOCS)
	rm -rf _book
	rm -rf node_modules
	rm -rf xos xos-gui xos-tosca kubernetes openstack onos simpleexampleservice exampleservice
