From d4869448fb1443119f013abc05ed063700b1aa1d Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Mon, 13 May 2024 23:35:27 +0100 Subject: [PATCH] fix: better scripting to allow folks to make teh html only --- .gitlab-ci.yml | 3 +- _scripts/format_handovers.sh | 10 ++- _scripts/format_minutes.sh | 116 +++++++++++++++++++++++++---------- flake.nix | 8 +++ 4 files changed, 103 insertions(+), 34 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4adc6c2..44757e4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -34,6 +34,7 @@ handovers: name: "Handovers" paths: - Committee/_Handovers_pdf/ + - Committee/errors.log minutes: @@ -45,4 +46,4 @@ minutes: name: "Minutes" paths: - Minutes_pdf/ - - Minutes/errors.log + - errors.log diff --git a/_scripts/format_handovers.sh b/_scripts/format_handovers.sh index c14ae01..5b91540 100755 --- a/_scripts/format_handovers.sh +++ b/_scripts/format_handovers.sh @@ -2,6 +2,9 @@ cd Committee +# cleanup the last run (if there was one) +rm -rf _Handovers_html + # copy in teh config for this folder cp ../_scripts/md_toml/_Handovers.md.toml ./.md.toml @@ -10,6 +13,11 @@ cargo-bfom ## cleanup rm -f .md.toml +# if the user only wants teh html tehn early return +if [[ $1 == "html" ]]; then + exit 0; +fi + # recursively parse _Handovers_html use wkhtmltopdf to convert to pdf cd _Handovers_html @@ -36,7 +44,7 @@ for d in */ ; do echo "$out_folder/$stripped.pdf" # convert teh html to pdf - wkhtmltopdf -q --enable-local-file-access --no-stop-slow-scripts "$stripped.html" "$out_folder/$stripped.pdf" 2> ./tmp.txt + wkhtmltopdf -q --enable-local-file-access --no-stop-slow-scripts "$stripped.html" "$out_folder/$stripped.pdf" 2>> ../errors.log & fi done done diff --git a/_scripts/format_minutes.sh b/_scripts/format_minutes.sh index 67757ce..2a4708b 100755 --- a/_scripts/format_minutes.sh +++ b/_scripts/format_minutes.sh @@ -1,52 +1,104 @@ #!/usr/bin/env bash +root="$PWD" -# delete to allow for a full rebuild without any ghost artifacts -rm -rf "Minutes_pdf" +# make teh html files first +function build_html(){ + # wipe and reset teh old html folder + rm -rf Minutes_html + mkdir Minutes_html -cd Minutes + # this folder has css and images needed + cp -R Minutes/_Templates Minutes_html/ -for year in */ ; do - # skip symlinks - [ -L "''${year%/}" ] && continue - # exclude teh template fodler - if [[ $year == *"_Templates"* ]]; then - continue - fi + cd Minutes - # go into the year folder - cd $year + # loop through each year worth of data + for year in */ ; do + # skip symlinks + [ -L "''${year%/}" ] && continue + # exclude teh template fodler + if [[ $year == *"_Templates"* ]]; then + continue + fi - # convert the Committee ones first + # go into the year folder + cd $year - cp ../../_scripts/md_toml/_Minutes-Committee.md.toml ./.md.toml - cargo-bfom + # convert the Committee ones first + cp ../../_scripts/md_toml/_Minutes-Committee.md.toml ./.md.toml + cargo-bfom - cp ../../_scripts/md_toml/_Minutes-Council.md.toml ./.md.toml - cargo-bfom + # then the council + cp ../../_scripts/md_toml/_Minutes-Council.md.toml ./.md.toml + cargo-bfom - mkdir -p "../../Minutes_pdf/$year/Committee" - mkdir -p "../../Minutes_pdf/$year/Council" + # cleanup + rm -f .md.toml - # iterate the files - for file in {Committee,Council}_html/*.html; do + # create teh new folders where stuff is going to + mkdir -p "../../Minutes_html/$year/Committee" + mkdir -p "../../Minutes_html/$year/Council" + + # iterate the files + for file in {Committee,Council}_html/*.html; do + if [ -f "$file" ]; then + stripped=''${file/_html/""} + cp $file "../../Minutes_html/$year/$stripped" + fi + done + # the temp folders where teh html was created, leaving these could cause ghost artifacts + rm -rf ./*_html + + # back up to original folder + cd ../ + done + + # return to root + cd $root +} + + +function build_pdf(){ + # used to match ** + shopt -s globstar + + # wipe and reset past runs + rm -rf Minutes_pdf + mkdir Minutes_pdf + + cd Minutes_html + + for file in **/*.html; do + # skip teh template folder + if [[ $file == *"_Templates"* ]]; then + continue + fi + + # only deal with files if [ -f "$file" ]; then - # we need teh filename/path - stripped=''${file/.html/""} - - output="../../Minutes_pdf/$year${stripped/_html/""}.pdf" + # .html => .pdf + output="../Minutes_pdf/''${file/.html/".pdf"}" echo $output - wkhtmltopdf -q --enable-local-file-access --no-stop-slow-scripts "$stripped.html" "$output" 2>> ../errors.log + # have someplace for it to go + mkdir -p $(dirname $output) + + wkhtmltopdf -q --enable-local-file-access --no-stop-slow-scripts "$file" "$output" 2>> ../errors.log & fi done - # cleanup - rm -f .md.toml - # the temp folders where teh html was created, leaving these could cause ghost artifacts - rm -rf ./*_html -done + shopt -u globstar + cd $root +} -cd ../ \ No newline at end of file + +if [[ $1 == "html" ]]; +then + build_html +else + build_html + build_pdf +fi \ No newline at end of file diff --git a/flake.nix b/flake.nix index ee6b913..83a7d1b 100644 --- a/flake.nix +++ b/flake.nix @@ -52,11 +52,19 @@ export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH ${./_scripts/format_handovers.sh} ''; + handovers_html = pkgs.writeShellScriptBin "format_handovers_html" '' + export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH + ${./_scripts/format_handovers.sh} html + ''; minutes = pkgs.writeShellScriptBin "format_minutes" '' export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH ${./_scripts/format_minutes.sh} ''; + minutes_html = pkgs.writeShellScriptBin "format_minutes_html" '' + export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH + ${./_scripts/format_minutes.sh} html + ''; }; }); }