build_dir_name := ".build" ansible_dir := ".ansible" [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.yaml \ --extra-vars '{"config": { "work_dir": {{justfile_directory()}}, "build_dir": {{build}} }}' \ {{ARGS}} alias ansible := build # Run the playbook, using the vault example files. [group("build")] ansible-vault-example: ( run_ansible build_dir_name "--extra-vars @group_vars/vault_example/vars.yaml" "--extra-vars @group_vars/vault_example/vault.yaml" "--ask-vault-password" ) # Run the playbook, which generates files required to build a report. [group("build")] build: (run_ansible justfile_directory()/build_dir_name) # 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 [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") # 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} # Install the required ansible roles. [group("utilities")] install-requirements: @ansible-galaxy install -r ./.ansible/requirements.yaml