chore: add justfile
This commit is contained in:
parent
72f4191292
commit
3cd24e8a8f
252
justfile
Normal file
252
justfile
Normal file
@ -0,0 +1,252 @@
|
|||||||
|
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 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"
|
||||||
|
|
||||||
|
default:
|
||||||
|
@just -l
|
||||||
|
|
||||||
|
build:
|
||||||
|
cargo build
|
||||||
|
|
||||||
|
[linux]
|
||||||
|
buildall:
|
||||||
|
@echo "Build {{BOLD + MAGENTA}}{{APP_NAME}}{{NORMAL}} ... "
|
||||||
|
cargo build --release
|
||||||
|
|
||||||
|
[macos]
|
||||||
|
buildall:
|
||||||
|
@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
|
||||||
|
@echo "\n{{BOLD + MAGENTA + INVERT}}Intel (x86_64){{NORMAL}} "
|
||||||
|
cargo build --target x86_64-apple-darwin --release
|
||||||
|
@if ! test -r target/apple-darwin/release ; then \
|
||||||
|
mkdir -p target/apple-darwin/release; \
|
||||||
|
fi
|
||||||
|
@if 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 -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: buildall
|
||||||
|
@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 test -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}}";\
|
||||||
|
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: buildall
|
||||||
|
|
||||||
|
[macos]
|
||||||
|
package: make-app
|
||||||
|
@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:
|
||||||
|
@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: make-app
|
||||||
|
@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: make-app
|
||||||
|
@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:
|
||||||
|
cargo t
|
||||||
|
|
||||||
|
expand:
|
||||||
|
cargo expand
|
||||||
|
|
||||||
|
benchmark:
|
||||||
|
cargo bench
|
||||||
|
|
||||||
|
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:
|
||||||
|
cargo b -r
|
||||||
|
|
||||||
|
fmt:
|
||||||
|
cargo +nightly fmt
|
||||||
|
|
||||||
|
clean:
|
||||||
|
cargo clean
|
||||||
|
|
||||||
|
doc:
|
||||||
|
cargo doc --open --no-deps
|
Loading…
x
Reference in New Issue
Block a user