2025-05-20 22:13:11 +01:00
2025-05-20 21:58:20 +01:00
2025-05-23 20:00:19 +01:00
2025-05-23 19:19:43 +01:00
2025-05-20 21:55:58 +01:00
2025-05-20 21:55:58 +01:00
2025-05-23 17:02:20 +01:00
2025-05-20 22:14:29 +01:00

dir-odt-to-pdf

Dir ODT to PDF

Convert source directory with odt files to target path with pdf files

Note

Source files will be converted if are changed or not exist in target path

The following extensions will be converted via LibreOffice soffice command.

FILES_TO_CONVERT: odt, doc, docx

The following extensions or path will be copied to target with any conversion

FILES_TO_COPY: jpg, jpeg, png, gif, bmp, tiff, webp, avif, txt, md

The following path will be ignored during clean_target_directory process after coversions and copy tasks

PATHS_TO_IGNORE: .DS_Store, .syncthing, .sync-conflict-, .stfolder, .stversions

Repository content

.
├── Cargo.lock
├── Cargo.toml                  Rust Cargo defs
├── justfile                    File defs for just command
├── linux                       Files to pack app for Linux
│   ├── install.sh              Installer command (app and bin)
│   └── README                  README for linux installation
├── macos
│   ├── dir-odt-to-pdf.scpt     Apple Script to build APP
│   ├── DirOdtToPdf.app         Apple app 
│   ├── install.command         DMG Installer command (app and bin)
│   └── README                  DMG README
├── packages                    Distribution Packages
│   └── DirOdtToPdf.dmg         DMG file
├── README.md
├── resources                  
│   ├── icon
│   ├── icon.psd
│   ├── ins_background.png
│   └── tools
├── run.sh                      Script model to run 
├── src
│   └── main.rs                 Rust source code
└── test                        Path to test with run.sh
    ├── documents               Target path PDFs files
    └── originals               Source path ODTs files

dir-odt-to-pdf is the Cargo.toml pakage name and it should be directory name for path where just command will be used with justfile commands and recipes .

MacOS APP

DirOdtToPdf.app run run-dir-odt-to-pdf.sh located in /usr/local/bin

/usr/local/bin/run-dir-odt-to-pdf.sh can be used as a sequence of several executions of dir-odt-to-pdf

justfile settings:

MACOS_APP_PATH := "DirOdtToPdf.app"

Terminal Commands

dir-odt-to-pdf can be used via commands installed in BIN_APP_PATH(/usr/local/bin):

Command filename Type Descripción Required parameters
dir-odt-to-pdf Binary Executable that converts .odt files to .pdf.
Requires source and destination paths
SOURCE (for .odt files) DEST (for .pdf files)
run-dir-odt-to-pdf.sh Script bash Script to executes dir-odt-to-pdf binary
with specific values for SOURCE and DEST
To be used as model.
Does not require (defines them internally)

In MacOS install.command copy above commands to BIN_APP_PATH(/usr/local/bin)

justfile settings:

APP_PACKAGE := "DirOdtToPdf"
BIN_APP_PATH := "/usr/local/bin"

Just

Recipes

Available recipes:
    benchmark # [alias: be]
    build     # [alias: b]
    buildall  # [aliases: ba, ball]
    clean     # [alias: cl]
    doc       # [alias: d]
    expand    # [alias: e]
    fmt       # [alias: f]
    install   # [alias: i]
    make-app  # [alias: mk, mkapp]
    package   # [alias: p, pkg]
    run       # [alias: ru]
    runtest   # [alias: rt]
    test      # [alias: t]

The following have different recipes for macos and linux

  • buildall
  • make-run
  • make-app
  • make-package
  • install

Main Values

APP_NAME := file_name(justfile_directory())
APP_PACKAGE := "DirOdtToPdf"
APP_PACKAGES_PATH :=  justfile_directory() + "/packages/"
APP_RESOURCES_PATH := justfile_directory() + "/resources/"

MACOS_ROOT_PATH := justfile_directory() + "/macos/"
MACOS_APP_PATH := "DirOdtToPdf.app"
MACOS_APP_ICNS_PATH := justfile_directory() + "/resources/icon/app/macos/AppIcon.icns"
SRC_MACOS := file_name(justfile_directory()) + ".scpt"

RUN_SRC := "run.sh"
BIN_APP_PATH := "/usr/local/bin"

For Development

Recipe alias Descripción parameters
build b run cargo cargo arguments
buildall ba, ball on MacOS:
  • build target releases for aarch64, x86_64
  • create universal (apple-darwin)i with lipo
on Linux:
  • build target release
architecture (arm64 or x86_64 or universal)
run ru run cargo b -r cargo arguments
expand e run cargo expand cargo arguments
fmt f run cargo +nightly fmt cargo arguments
clean cl run cargo clean cargo arguments
doc d run cargo doc --open --no-deps cargo arguments
benchmark be run cargo bench cargo arguments
test* be run cargo t cargo arguments
runtest rt run run.sh script using test directories for SOURCE and DEST parametets

To work on app

Recipe alias Descripción parameters
install i on MacOS: on Linux:
  • just make-run
  • install commands
make-app mk , mkapp on MacOS: on Linux:
  • just buildall
architecture (arm64 or x86_64 or universal)
make-run on MacOS: on Linux:
  • just delete-run
  • install commands
delete-run Ask for replace run-dir-odt-to-pdf.sh created from run.sh
package on MacOS: on Linux:
  • just make-app
  • pack binary in compressed archive
    with linux files and commands
architecture (arm64 or x86_64 or universal)
Description
Convert source directory with odt files to target path with pdf files
Readme 938 KiB
Languages
Rust 66.5%
Just 20.1%
Shell 7.4%
AppleScript 6%