Files
q-tools/py-packages/imagelist2/Makefile
2025-06-02 17:34:34 +03:00

127 lines
3.8 KiB
Makefile

SHELL := /bin/bash
.PHONY:
.ONESHELL:
help: ## *:・゚✧*:・゚✧ This help *:・゚✧*:・゚✧
@printf "\033[36;1m %14s \033[0;32;1m %s\033[0m\n" Target Description
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
awk ' \
BEGIN {FS = ":.*?## "}; \
{ if ( $$1 != "-") { \
printf "\033[31;1m[ \033[36;1m%14s \033[31;1m]\033[0;32;1m %s\033[0m\n", $$1, $$2 \
} else { \
printf " \033[0;33;1m=^= %-25s =^=\033[0m\n", $$2 \
} \
} \
'
-: ## Building
all: clean install test
install: ## Run installer
set -e
. useve-runner
useve imagelist2
py-format ./
pip install ./
PRINT_TABLE := 'sqlite3 -header image-list.sqlite "SELECT * FROM files" | tabulate -1 -s "\|"'
PRINT_DATA := 'sqlite3 -header image-list.sqlite "SELECT * FROM data" | tabulate -1 -s "\|"'
PRINT_LIST := 'sqlite3 -header image-list.sqlite "SELECT * FROM list" | tabulate -1 -s "\|"'
test: test-db test-du test-dup test-tag ## Test
test-db:
set -e
. useve-runner
useve imagelist2
echo =================================
rm -f image-list.sqlite
mkdir -p folder1/folder2 folder1/.hidden folder1/_med
convert -size 600x300 xc:red red.jpg
cp red.jpg folder1/.hidden/
convert -size 600x300 xc:cyan folder1/cyan.jpg
convert -size 600x300 xc:cyan folder1/cyan.png
cp folder1/cyan.png folder1/cyan_dup2.png
cp folder1/cyan.png folder1/cyan_dup3.png
cp folder1/cyan.jpg folder1/cyan_dup2.jpg
cp folder1/cyan.jpg folder1/cyan_dup3.jpg
convert -size 600x300 plasma: folder1/noisy.png
convert -size 600x300 plasma: -blur 0x3 folder1/blur.png
convert -size 300x600 xc:blue folder1/folder2/blue.tif
convert wizard: folder1/wizard.jpg
convert folder1/wizard.jpg -resize 95%x98% folder1/wizard.mod.jpg
convert folder1/wizard.jpg -flip -resize 95%x98% folder1/wizard.flip.jpg
image-list db -x imagelist2
eval ${PRINT_TABLE}
convert -size 600x600 xc:black folder1/black.png
image-list db -x imagelist2
eval ${PRINT_TABLE}
rm folder1/black.png
image-list db -x imagelist2
eval ${PRINT_TABLE}
mogrify -rotate 90 folder1/cyan.png
image-list db -x imagelist2 -c
eval ${PRINT_LIST}
eval ${PRINT_DATA}
image-list db -x imagelist2
eval ${PRINT_DATA}
image-list db -x imagelist2 --measure
eval ${PRINT_DATA}
eval ${PRINT_TABLE}
echo "========= check sha1 ============="
sqlite3 image-list.sqlite "SELECT hash,file FROM list" -separator ' ' | sha1sum -c -
test-du:
set -e
. useve-runner
useve imagelist2
echo =================================
image-list du
echo =================================
image-list du -d 2
echo =================================
image-list du -d 1
echo =================================
image-list du -d 1 folder1/
test-dup:
set -e
. useve-runner
useve imagelist2
echo ========== duplicates =======================
image-list search --dup
echo ========== visual duplicates =======================
image-list search --visdup
echo ========== nearest red ======================
image-list search --color 255,0,0,10
echo ========== nearest from file ======================
image-list search --color red.jpg,3
echo ========== Similar by phash ======================
image-list search --similar 30
echo ========== Similar by file ======================
image-list search --similar folder1/wizard.jpg
test-tag:
set -e
. useve-runner
useve imagelist2
echo ========== tag add =======================
image-list tag -t plain -t red red.jpg
image-list tag -t red red.jpg
echo ========== tag list =======================
image-list tag red.jpg
echo ========== tag delete =======================
image-list tag -d red red.jpg
echo ========== tag list fail =======================
image-list tag red.jpg.missing || true
init: ## Init test env
. useve-runner
useve mk imagelist2
clean: ## Clean testfiles
rm -rf folder1 image-list.sqlite red.jpg || true