diff options
| -rwxr-xr-x | open-as-pdf | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/open-as-pdf b/open-as-pdf index 8d09ad2..99e5e22 100755 --- a/open-as-pdf +++ b/open-as-pdf @@ -2,16 +2,42 @@ set -euo pipefail -main() { - if [ $# -eq 0 ]; then - echo First arguments must be a file. - exit 1 - fi +# @describe Convert document files to PDF and open them. +# @arg files+ Input document files (e.g., .docx, .xlsx, .pptx) to convert and view as PDF +# @flag -n --no-cache Prevent caching of converted PDFs +# @meta require-tools sha512sum,soffice,xdg-open +# @env OPEN_AS_PDF_CACHE_DIR Cache directory (default: $XDG_CACHE_HOME/open-as-pdf) + +_open_as_pdf() { + if [ -n "${argc_no_cache:-}" ]; then + OUTPUT_DIR=$(mktemp --directory) + trap 'rm -rf "$OUTPUT_DIR"' EXIT + + soffice --convert-to pdf --outdir "$OUTPUT_DIR" "$1" + xdg-open "$OUTPUT_DIR"/*.pdf && sleep 5 + else + local file_hash file_cach_dir + file_hash=$(sha512sum "$1" | cut -d' ' -f 1) + file_cach_dir="${OPEN_AS_PDF_CACHE_DIR:-${XDG_CACHE_HOME:-$HOME/.cache}/open-as-pdf}/$file_hash" + + if [ ! -d "$file_cach_dir" ]; then + OUTPUT_DIR=$(mktemp --directory) + trap 'rm -rf "$OUTPUT_DIR"' EXIT - OUTPUT_DIR=$(mktemp --directory) - trap 'rm -rf "$OUTPUT_DIR"' EXIT + soffice --convert-to pdf --outdir "$OUTPUT_DIR" "$1" - soffice --convert-to pdf --outdir "$OUTPUT_DIR" "$1" && xdg-open "$OUTPUT_DIR"/*.pdf && sleep 5 + mkdir -p "$file_cach_dir" + mv "$OUTPUT_DIR"/*.pdf "$file_cach_dir" + fi + + xdg-open "$file_cach_dir"/*.pdf + fi +} + +main() { + for file in "${argc_files[@]?}"; do + _open_as_pdf "$file" + done } -main "$@" +eval "$(argc --argc-eval "$0" "$@")" |
