dir-odt-to-pdf/justfile

277 lines
11 KiB
Makefile
Raw Normal View History

2025-05-20 21:56:32 +01:00
alias b := build
alias ba := buildall
alias ball := buildall
alias t := test
alias d := doc
alias e := expand
alias f := fmt
alias be := benchmark
alias rt := runtest
alias ru := run
alias cl := clean
alias mkapp := make-app
alias mk := make-app
2025-05-20 21:56:32 +01:00
alias i := install
alias p := package
alias pkg := package
APP_NAME := file_name(justfile_directory())
APP_PACKAGE := "DirOdtToPdf"
APP_PACKAGES_PATH := justfile_directory() + "/packages/"
APP_RESOURCES_PATH := justfile_directory() + "/resources/"
RUN_APP_PATH:= "RunDirOdtToPdf"
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"
set positional-arguments
2025-05-20 21:56:32 +01:00
default:
@just -l
[positional-arguments]
build *ARGS:
cargo build {{ARGS}}
2025-05-20 21:56:32 +01:00
[linux]
buildall *ARGS:
2025-05-20 21:56:32 +01:00
@echo "Build {{BOLD + MAGENTA}}{{APP_NAME}}{{NORMAL}} ... "
cargo build --release {{ARGS}}
2025-05-20 21:56:32 +01:00
[macos]
buildall *ARGS:
@if test -z {{ARGS}} || test {{ARGS}} = "universal" || test {{ARGS}} = "aarch64" || test {{ARGS}} = "arm64"; then \
echo "\nBuild {{BOLD + MAGENTA}}{{APP_NAME}}{{NORMAL}} universal for {{BOLD + GREEN}}{{os()}}{{NORMAL}} architectures ... " ; \
echo "\n{{BOLD + MAGENTA + INVERT}}Apple Silicon (arm64){{NORMAL}}" ;\
cargo build --target aarch64-apple-darwin --release ;\
fi
@if test -z {{ARGS}} || test {{ARGS}} = "universal" || test {{ARGS}} = "x86_64" || test {{ARGS}} = "x86"; then \
echo "\n{{BOLD + MAGENTA + INVERT}}Intel (x86_64){{NORMAL}} " ;\
cargo build --target x86_64-apple-darwin --release ;\
fi
@if test -z {{ARGS}} || test {{ARGS}} = "universal" && ! test -r target/apple-darwin/release ; then \
2025-05-20 21:56:32 +01:00
mkdir -p target/apple-darwin/release; \
fi
@if test -z {{ARGS}} || test {{ARGS}} = "universal" && type -p lipo > /dev/null; then \
2025-05-20 21:56:32 +01:00
lipo -create \
-output target/apple-darwin/release/{{APP_NAME}} \
target/aarch64-apple-darwin/release/{{APP_NAME}} \
target/x86_64-apple-darwin/release/{{APP_NAME}} ; \
fi
@if test -z {{ARGS}} || test {{ARGS}} = "universal" && test -r target/apple-darwin/release/{{APP_NAME}} ; then \
2025-05-20 21:56:32 +01:00
echo "\n{{BOLD + GREEN + INVERT}}target/apple-darwin/release/{{APP_NAME}}{{NORMAL}} created";\
fi
[macos]
make-app *ARGS:
@just buildall {{ARGS}}
2025-05-20 21:56:32 +01:00
@if test -r {{MACOS_ROOT_PATH + SRC_MACOS}} ; then \
echo "\n{{BOLD + GREEN + INVERT}}{{MACOS_APP_PATH}}{{NORMAL}}";\
echo "creating from {{BOLD + MAGENTA}}{{MACOS_ROOT_PATH + SRC_MACOS}}{{NORMAL}}";\
osacompile -o '{{MACOS_ROOT_PATH + MACOS_APP_PATH}}' '{{MACOS_ROOT_PATH + SRC_MACOS}}'; \
fi
@if test -r {{MACOS_ROOT_PATH + MACOS_APP_PATH}} ; then \
echo "\nCreated {{BOLD + GREEN}}{{MACOS_ROOT_PATH + MACOS_APP_PATH}}{{NORMAL}}";\
fi
@if test -r '{{MACOS_APP_ICNS_PATH}}' && test -r '{{MACOS_ROOT_PATH + MACOS_APP_PATH}}' ; then \
cp {{MACOS_APP_ICNS_PATH}} {{MACOS_ROOT_PATH + MACOS_APP_PATH + "/Contents/Resources/applet.icns"}}; \
echo "\nCopy {{BOLD + MAGENTA}}{{MACOS_APP_ICNS_PATH}}{{NORMAL}} to {{BOLD + GREEN}}{{MACOS_APP_PATH + "/Contents/Resources/applet.icns"}}{{NORMAL}}";\
fi
@if test -r '{{MACOS_APP_ICNS_PATH}}' && test -r '{{MACOS_ROOT_PATH + MACOS_APP_PATH}}' ; then \
cp {{MACOS_APP_ICNS_PATH}} {{MACOS_ROOT_PATH + MACOS_APP_PATH + "/Contents/Resources/applet.icns"}}; \
echo "\nCopy {{BOLD + MAGENTA}}{{MACOS_APP_ICNS_PATH}}{{NORMAL}} to {{BOLD + GREEN}}{{MACOS_APP_PATH + "/Contents/Resources/applet.icns"}}{{NORMAL}}";\
fi
@cd {{justfile_directory()}} && \
if [[ "{{ARGS}}" == "aarch64" || "{{ARGS}}" == "arm64" && -r target/aarch64-apple-darwin/release/{{APP_NAME}} ]] ; then \
cp {{'target/aarch64-apple-darwin/release/' + APP_NAME}} {{MACOS_ROOT_PATH + MACOS_APP_PATH + "/Contents/MacOS/" + APP_NAME}}; \
echo "\n{{BOLD + GREEN + INVERT}}target/aarch64-apple-darwin/release/{{APP_NAME}}{{NORMAL}} to Contets/MacOS/{{APP_NAME}}";\
elif [[ "{{ARGS}}" == "x86_64" || "{{ARGS}}" == "x86" && -r target/x86_64-apple-darwin/release/{{APP_NAME}} ]] ; then \
cp {{'target/x86_64-apple-darwin/release/' + APP_NAME}} {{MACOS_ROOT_PATH + MACOS_APP_PATH + "/Contents/MacOS/" + APP_NAME}}; \
echo "\n{{BOLD + GREEN + INVERT}}target/x86_64-apple-darwin/release/{{APP_NAME}}{{NORMAL}} to Contets/MacOS/{{APP_NAME}}"; \
elif [[ -z "{{ARGS}}" || "{{ARGS}}" == "universal" && -r target/apple-darwin/release/{{APP_NAME}} ]]; then \
2025-05-20 21:56:32 +01:00
cp {{'target/apple-darwin/release/' + APP_NAME}} {{MACOS_ROOT_PATH + MACOS_APP_PATH + "/Contents/MacOS/" + APP_NAME}}; \
echo "\n{{BOLD + GREEN + INVERT}}target/apple-darwin/release/{{APP_NAME}}{{NORMAL}} to Contets/MacOS/{{APP_NAME}}";\
else \
echo "Arquitectura no válida: {{ARGS}}"; \
exit 1; \
fi
2025-05-20 21:56:32 +01:00
@cd {{justfile_directory()}} && if test -r {{RUN_SRC}} ; then \
cat {{RUN_SRC}} | sed 's,:-\.,:-{{justfile_directory()}},g' |\
sed 's,/usr/local/bin,{{BIN_APP_PATH}},g' > {{MACOS_ROOT_PATH + MACOS_APP_PATH + '/Contents/MacOS/run-' + APP_NAME + '.sh'}}; \
chmod +x {{MACOS_ROOT_PATH + MACOS_APP_PATH + '/Contents/MacOS/run-' + APP_NAME + '.sh'}}; \
echo "\nCopy and fix paths {{BOLD + GREEN + INVERT}}{{RUN_SRC}}{{NORMAL}} to {{BOLD + MAGENTA}}{{'/run-' + APP_NAME + '.sh'}}{{NORMAL}}";\
fi
[linux]
make-app *ARGS:
@just buildall {{ARGS}}
2025-05-20 21:56:32 +01:00
[macos]
package *ARGS:
@just make-app {{ARGS}}
2025-05-20 21:56:32 +01:00
@if test -r {{'/Volumes/' + APP_PACKAGE}} ; then \
hdiutil detach {{'/Volumes/' + APP_PACKAGE}}; \
fi
@if test -r {{APP_PACKAGES_PATH + APP_PACKAGE}} ; then \
rm -rf {{APP_PACKAGES_PATH + APP_PACKAGE}}; \
fi
@if ! test -r '{{MACOS_APP_ICNS_PATH}}' || ! test -r '{{MACOS_ROOT_PATH + MACOS_APP_PATH}}' ; then \
echo "\nUnable to Create DMG {{BOLD + GREEN}}{{APP_PACKAGE + '.dmg'}}{{NORMAL}} {{BOLD + RED}}{{MACOS_APP_PATH}} or icns not found{{NORMAL}}";\
exit 1 ; \
fi
@mkdir {{APP_PACKAGES_PATH + APP_PACKAGE}};
@if test -r '{{MACOS_APP_ICNS_PATH}}' ; then \
cp {{MACOS_APP_ICNS_PATH}} {{MACOS_ROOT_PATH + MACOS_APP_PATH + "/Contents/Resources/applet.icns"}}; \
fi
@# cp "{{APP_RESOURCES_PATH + 'icon/app/macos/AppIcon.icns'}}" {{APP_PACKAGES_PATH + APP_PACKAGE + "/" + APP_PACKAGE + "-volume.icns"}};
@if test -r "{{MACOS_ROOT_PATH + 'install.command'}}" ; then \
cp {{MACOS_ROOT_PATH + 'install.command'}} {{APP_PACKAGES_PATH + APP_PACKAGE}};\
fi
@if test -r "{{MACOS_ROOT_PATH + 'README'}}" ; then \
cp {{MACOS_ROOT_PATH + 'README'}} {{APP_PACKAGES_PATH + APP_PACKAGE}};\
fi
@if test -r {{MACOS_ROOT_PATH + MACOS_APP_PATH}} ; then \
cp -pr {{MACOS_ROOT_PATH + MACOS_APP_PATH}} {{APP_PACKAGES_PATH + APP_PACKAGE}};\
echo "\nCopy {{BOLD + GREEN}}{{MACOS_APP_PATH}}{{NORMAL}} to {{BOLD + MAGENTA}}{{APP_PACKAGE}}{{NORMAL}}";\
fi
@if test -r {{'/Volumes/' + APP_PACKAGE + '.dmg'}} ; then \
hdiutil detach {{'/Volumes/' + APP_PACKAGE + '.dmg'}}; \
fi
@if test -r {{APP_PACKAGES_PATH + APP_PACKAGE + ".dmg"}} ; then \
rm -f {{APP_PACKAGES_PATH + APP_PACKAGE + ".dmg"}}; \
fi
@#--volicon ".{{APP_RESOURCES_PATH + 'icon/app/macos/AppIcon.icns'}}"
@#--volicon "{{APP_PACKAGE + '-volume.icns'}}"
@if type -p create-dmg > /dev/null; then \
create-dmg \
--volname "{{APP_PACKAGE}}" \
--background "{{APP_RESOURCES_PATH + 'ins_background.png'}}" \
--window-pos 200 120 \
--window-size 500 400 \
--icon-size 100 \
--app-drop-link 300 200 \
--icon "{{MACOS_APP_PATH}}" 100 200 \
--icon "README" 100 50 \
--icon "install.command" 300 50 \
--hide-extension "{{MACOS_APP_PATH}}" \
--no-internet-enable \
--hdiutil-quiet \
"{{APP_PACKAGES_PATH + APP_PACKAGE + '.dmg'}}" \
"{{APP_PACKAGES_PATH + APP_PACKAGE}}"; \
echo "\nCreate DMG image {{BOLD + GREEN}}{{APP_PACKAGE + '.dmg'}}{{NORMAL}} in {{BOLD + MAGENTA}}{{APP_PACKAGES_PATH}}{{NORMAL}}";\
else \
hdiutil create -volname "{{APP_PACKAGE}}" -srcfolder {{APP_PACKAGES_PATH + APP_PACKAGE}} -ov -format UDZO {{APP_PACKAGES_PATH + APP_PACKAGE + ".dmg"}}; \
echo "\nCreate DMG hd {{BOLD + GREEN}}{{APP_PACKAGE + '.dmg'}}{{NORMAL}} in {{BOLD + MAGENTA}}{{APP_PACKAGES_PATH}}{{NORMAL}}";\
fi
@if test -r {{'/Volumes/' + APP_PACKAGE}} ; then \
hdiutil detach {{'/Voulumes/' + APP_PACKAGE}}; \
fi
@if test -r {{APP_PACKAGES_PATH + APP_PACKAGE}} ; then \
rm -rf {{APP_PACKAGES_PATH + APP_PACKAGE}}; \
fi
[linux]
package *ARGS:
@just make-app {{ARGS}}
2025-05-20 21:56:32 +01:00
@if test -r {{APP_PACKAGES_PATH + APP_PACKAGE}} ; then \
rm -rf {{APP_PACKAGES_PATH + APP_PACKAGE}}; \
fi
@mkdir {{APP_PACKAGES_PATH + APP_PACKAGE}};
@if test -r {{APP_PACKAGES_PATH + APP_PACKAGE}} ; then \
echo "\nPackage {{BOLD + GREEN}}{{APP_PACKAGE}}{{NORMAL}} in {{BOLD + MAGENTA}}{{APP_PACKAGES_PATH}}{{NORMAL}}";\
fi
delete-run:
@bash -c 'echo -en "Are you sure you want to delete current script ({{BOLD + GREEN + BIN_APP_PATH}}/run-{{APP_NAME}}.sh{{NORMAL}})? (s/n): " ;\
read -r answer;\
case $answer in \
yes|y|s|si) \
rm -rf "{{BIN_APP_PATH}}/run-{{APP_NAME}}.sh"; \
echo -e "\nDeleted {{BOLD + GREEN + INVERT}}{{BIN_APP_PATH + '/run-' + APP_NAME + '.sh'}}{{NORMAL}}"; \
;; \
*) \
echo -e "\n{{BOLD + RED + INVERT}}No deleted{{NORMAL}}"; \
;; \
esac; \
'
[linux]
make-run:
@if test -r {{BIN_APP_PATH + '/run-' + APP_NAME + '.sh'}} ; then \
echo "\n{{BOLD + MAGENTA}}{{BIN_APP_PATH + '/run-' + APP_NAME + '.sh'}}{{NORMAL}} already exists";\
just delete-run; \
fi
[macos]
make-run:
@if test -r {{BIN_APP_PATH + '/run-' + APP_NAME + '.sh'}} ; then \
echo "\n{{BOLD + MAGENTA}}{{BIN_APP_PATH + '/run-' + APP_NAME + '.sh'}}{{NORMAL}} already exists";\
just delete-run; \
fi
@if ! test -r {{BIN_APP_PATH + '/run-' + APP_NAME + '.sh'}} ; then \
cp {{MACOS_ROOT_PATH + MACOS_APP_PATH + '/Contents/MacOS/run-' + APP_NAME + '.sh'}} {{BIN_APP_PATH}}; \
chmod +x {{BIN_APP_PATH + '/run-' + APP_NAME + '.sh'}}; \
echo "\nCopy and fix paths {{BOLD + GREEN + INVERT}}{{RUN_SRC}}{{NORMAL}} to {{BOLD + MAGENTA}}{{BIN_APP_PATH + '/run-' + APP_NAME + '.sh'}}{{NORMAL}}";\
fi
[linux]
install *ARGS:
@just make-app {{ARGS}}
2025-05-20 21:56:32 +01:00
@echo "\nInstall {{BOLD + GREEN + INVERT}}{{BIN_APP_PATH}}{{NORMAL}}";
@cd {{justfile_directory()}} && if test -r target/{{APP_NAME}} ; then \
cp -p target/{{APP_NAME}} {{BIN_APP_PATH}};\
echo "\nCopy {{BOLD + GREEN + INVERT}}target/{{APP_NAME}}{{NORMAL}} to {{BOLD + MAGENTA}}{{BIN_APP_PATH}}{{NORMAL}}";\
fi
[macos]
install *ARGS:
@just make-app {{ARGS}}
2025-05-20 21:56:32 +01:00
@echo "\nInstall {{BOLD + GREEN + INVERT}}{{MACOS_APP_PATH}}{{NORMAL}}" >/tmp/i;
@cd {{justfile_directory()}} && if test -r target/{{APP_NAME}} ; then \
cp -p target/{{APP_NAME}} {{BIN_APP_PATH}};\
echo "\nCopy {{BOLD + GREEN + INVERT}}target/{{APP_NAME}}{{NORMAL}} to {{BOLD + MAGENTA}}{{BIN_APP_PATH}}{{NORMAL}}";\
fi
@if test -r {{"/Applications/" + MACOS_APP_PATH}} ; then \
rm -rf {{"/Applications/" + MACOS_APP_PATH}};\
echo "\nRemove /Applications/{{MACOS_APP_PATH}}";\
fi
@if test -r {{MACOS_ROOT_PATH + MACOS_APP_PATH}} ; then \
cp -pr {{MACOS_ROOT_PATH + MACOS_APP_PATH}} /Applications;\
echo "\nCopy {{BOLD + GREEN}}{{MACOS_ROOT_PATH + MACOS_APP_PATH}}{{NORMAL}} to /Applications";\
fi
@just make-run
test *ARGS:
cargo t {{ARGS}}
2025-05-20 21:56:32 +01:00
expand *ARGS:
cargo expand {{ARGS}}
2025-05-20 21:56:32 +01:00
benchmark *ARGS:
cargo bench {{ARGS}}
2025-05-20 21:56:32 +01:00
runtest:
@cd {{justfile_directory()}} && if test -d "test/documents" ; then \
rm -rf "test/documents"; \
fi
@cd {{justfile_directory()}} && if test -r {{RUN_SRC}} ; then \
./{{RUN_SRC}}; \
fi
run *ARGS:
cargo b -r {{ARGS}}
2025-05-20 21:56:32 +01:00
fmt *ARGS:
cargo +nightly fmt {{ARGS}}
2025-05-20 21:56:32 +01:00
clean *ARGS:
cargo clean {{ARGS}}
2025-05-20 21:56:32 +01:00
doc *ARGS:
cargo doc --open --no-deps {{ARGS}}