corso/docs/Makefile
Georgi Matev 137123294a
Auto-generate CLI docs in docs dev tooling (#721)
## Description

Auto-generate CLI docs in docs dev tooling. 
* Add new Makefile target to rebuild the `mdgen` binary, only if needed. This helps with slow in container builds. Relies on host caching of both modules and the actual binary. This approach is probably not suitable for the actual docs CI build. 
* Actual generation is fast and done every time when using relevant docs dev tooling commands. 

NOTE: .gitignore may need to be adjusted if we switch to creating the CLI docs as part of build and tooling as opposed to the current automated PR with changes. 

## Type of change

Please check the type of change your PR introduces:
- [x] 🌻 Feature
- [ ] 🐛 Bugfix
- [x] 🗺️ Documentation
- [ ] 🤖 Test
- [ ] 🐹 Trivial/Minor

## Issue(s)

## Test Plan

<!-- How will this be tested prior to merging.-->

- [x] 💪 Manual
- [ ]  Unit test
- [ ] 💚 E2E
2022-09-01 18:50:09 +00:00

64 lines
1.9 KiB
Makefile

.PHONY: buildimage build dev shell check genclidocs
#
CORSO_BUILD_DIR := /tmp/.corsobuild
CORSO_BUILD_CACHE := ${CORSO_BUILD_DIR}/cache
CORSO_BUILD_MOD := ${CORSO_BUILD_DIR}/mod
CORSO_BUILD_BIN := ${CORSO_BUILD_DIR}/bin
CORSO_REPO := ${PWD}/..
CORSO_REPO_CONTAINER := /go/src/github.com/alcionai/corso
MDGEN_SRC_CONTAINER := ${CORSO_REPO_CONTAINER}/src/cmd/mdgen/mdgen.go
MDGEN_BINARY := ${CORSO_BUILD_BIN}/mdgen
CLI_DOCS_CONTAINER := ${CORSO_REPO_CONTAINER}/docs/docs/cli
buildimage:
docker build -t "alcion/docs:latest" .
dev: genclidocs
docker run --rm -it \
-p 3000:3000 \
-v ${PWD}:/usr/src/docs alcion/docs
VALE_TARGET ?= docs README.md
dockercheck: genclidocs
docker run --rm \
-v ${PWD}:/usr/src/docs alcion/docs vale $(VALE_TARGET)
docker run --rm \
-v ${PWD}:/usr/src/docs alcion/docs markdownlint '**/*.md' --ignore styles/ --ignore src/ --ignore node_modules/
check: genclidocs
vale $(VALE_TARGET)
markdownlint '**/*.md' --ignore styles/ --ignore src/ --ignore node_modules/
shell:
docker run --rm -it \
-p 3000:3000 \
-v ${PWD}:/usr/src/docs alcion/docs /bin/bash
build: genclidocs
docker run --rm \
-v ${PWD}:/usr/src/docs alcion/docs npm run build
genclidocs: ${MDGEN_BINARY}
@echo 'Auto-generating Corso CLI docs...'
docker run --rm -it \
-v ${CORSO_REPO}:${CORSO_REPO_CONTAINER} -v ${CORSO_BUILD_DIR}:${CORSO_BUILD_DIR} \
--workdir ${CORSO_REPO_CONTAINER}/src \
--entrypoint ${MDGEN_BINARY} \
golang:1.18 \
--cli-folder ${CLI_DOCS_CONTAINER}
${MDGEN_BINARY}: ${CORSO_REPO}/src/** ${CORSO_REPO}/src/**/*.go
@echo 'Re-building Corso CLI docs auto-gen tooling...'
docker run --rm -it \
-v ${CORSO_REPO}:${CORSO_REPO_CONTAINER} -v ${CORSO_BUILD_DIR}:${CORSO_BUILD_DIR} \
--env GOCACHE=${CORSO_BUILD_CACHE} --env GOMODCACHE=${CORSO_BUILD_MOD} --env GOTMPDIR=${CORSO_BUILD_DIR} \
--workdir ${CORSO_REPO_CONTAINER}/src \
--entrypoint /usr/local/go/bin/go \
golang:1.18 \
build -o ${MDGEN_BINARY} ${MDGEN_SRC_CONTAINER}