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 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 default: @just -l [positional-arguments] build *ARGS: cargo build {{ARGS}} [linux] buildall *ARGS: @echo "Build {{BOLD + MAGENTA}}{{APP_NAME}}{{NORMAL}} ... " cargo build --release {{ARGS}} [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 \ mkdir -p target/apple-darwin/release; \ fi @if test -z {{ARGS}} || test {{ARGS}} = "universal" && type -p lipo > /dev/null; then \ 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 \ echo "\n{{BOLD + GREEN + INVERT}}target/apple-darwin/release/{{APP_NAME}}{{NORMAL}} created";\ fi [macos] make-app *ARGS: @just buildall {{ARGS}} @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 \ 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 @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}} [macos] package *ARGS: @just make-app {{ARGS}} @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}} @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}} @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}} @echo "\nInstall {{BOLD + GREEN + INVERT}}{{MACOS_APP_PATH}}{{NORMAL}}"; @cd {{justfile_directory()}} && if test -r {{MACOS_ROOT_PATH + MACOS_APP_PATH + '/Contents/MacOS/' + APP_NAME}} ; then \ cp {{MACOS_ROOT_PATH + MACOS_APP_PATH + '/Contents/MacOS/' + APP_NAME}} {{BIN_APP_PATH}}; \ chmod +x {{BIN_APP_PATH + '/' + APP_NAME}}; \ echo "\nCopy {{BOLD + GREEN + INVERT}}{{MACOS_APP_PATH}} -> {{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}} expand *ARGS: cargo expand {{ARGS}} benchmark *ARGS: cargo bench {{ARGS}} 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}} fmt *ARGS: cargo +nightly fmt {{ARGS}} clean *ARGS: cargo clean {{ARGS}} doc *ARGS: cargo doc --open --no-deps {{ARGS}}