101 lines
3.0 KiB
Makefile
101 lines
3.0 KiB
Makefile
build_dir_name := ".build"
|
|
ansible_dir := "playbook"
|
|
vars_file := "vars.yml"
|
|
vault_file := "vault.yml"
|
|
|
|
[private]
|
|
default:
|
|
just --list
|
|
|
|
[private]
|
|
run_pandoc dir output_file: build
|
|
@pandoc --pdf-engine=xelatex \
|
|
-H {{build_dir_name}}/"head.tex" \
|
|
-H {{build_dir_name}}/"footer.tex" \
|
|
-o {{dir}}/{{output_file}} \
|
|
{{build_dir_name}}/"Report.md" \
|
|
{{build_dir_name}}/"Definitions.md"
|
|
|
|
[private]
|
|
run_ansible build *ARGS:
|
|
@echo "Running ansible with build directory: {{build}}"
|
|
cd {{ansible_dir}} && \
|
|
ansible-playbook playbook.yml \
|
|
--inventory inventory.ini \
|
|
--extra-vars "work_dir={{justfile_directory()}}" \
|
|
--extra-vars "build_dir={{build}}" \
|
|
{{ARGS}}
|
|
|
|
alias ansible := build
|
|
|
|
# Run the playbook, which generates files required to build a report.
|
|
[group("build")]
|
|
build *ARGS: (
|
|
run_ansible justfile_directory()/build_dir_name
|
|
"--tags build"
|
|
ARGS
|
|
)
|
|
|
|
# Build & generate an HTML report.
|
|
[group("generate")]
|
|
html title="Report.html" output_dir=".build": (
|
|
run_pandoc output_dir file_stem(title) + ".html"
|
|
)
|
|
open {{output_dir}}/{{ prepend(file_stem(title), ".html") }}
|
|
|
|
# Build & generate a PDF report.
|
|
[group("generate")]
|
|
pdf title="Report.pdf" output_dir="${PWD}": (run_pandoc output_dir file_stem(title) + ".pdf")
|
|
open {{output_dir}}/{{ prepend(file_stem(title), ".pdf") }} && \
|
|
@osascript ./scripts/notify.scpt
|
|
|
|
# Build & generate a Latex file.
|
|
[group("generate")]
|
|
[group("debug")]
|
|
tex title="Report.tex" output_dir=".build": (run_pandoc output_dir file_stem(title) + ".tex")
|
|
@echo "Wrote to: " + {{output_dir}}/{{file_stem(title)}} + ".tex"
|
|
|
|
# Setup the working directory, setup tags see: `https://git.housh.dev/michael/ansible-role-hpa#setup-tags`
|
|
[group("setup")]
|
|
setup tag='setup': (
|
|
run_ansible justfile_directory()/build_dir_name "--tags " + tag
|
|
)
|
|
|
|
# Setup the working directory with ansible-vault.
|
|
[group("setup")]
|
|
setup-vault: (setup "setup-with-vault")(encrypt-vault)
|
|
|
|
# Encrypt the vault file, pass in --ask-vault-pass if no default password file is set.
|
|
[group("setup")]
|
|
[group("utlities")]
|
|
encrypt-vault *ARGS:
|
|
@ansible-vault encrypt {{vault_file}} {{ARGS}}
|
|
|
|
# Edit the vault file, pass in --ask-vault-pass if no default password file is set.
|
|
[group("utlities")]
|
|
edit-vault *ARGS:
|
|
@ansible-vault edit {{vault_file}} {{ARGS}}
|
|
|
|
# Removes build directory, useful when debugging.
|
|
[group("utilities")]
|
|
clean-build-dir:
|
|
@rm -rf {{build_dir_name}}
|
|
@rm -rf {{ansible_dir}}/{{build_dir_name}}
|
|
|
|
# Removes build directory, template, variable, and pdf files. Use with caution or work may lost.
|
|
[group("utilities")]
|
|
[confirm('This will remove build directories, template files, variables, and pdf files. Are you sure you want to do that?')]
|
|
clean-all: clean-build-dir
|
|
@rm -f ./Report.{md,pdf}
|
|
@rm -f vars.{yml,yaml}
|
|
@rm -f vault.{yml,yaml}
|
|
@rm -f Definitions.md
|
|
@rm -f {footer,head}.tex
|
|
@rm -f {{ansible_dir}}/group_vars/all/{vars,vault}.{yml,yaml}
|
|
|
|
|
|
# Install the required ansible roles.
|
|
[group("utilities")]
|
|
install-requirements:
|
|
@ansible-galaxy install -r {{ansible_dir}}/requirements.yml
|