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