150 lines
3.7 KiB
Makefile
150 lines
3.7 KiB
Makefile
# Makefile for building the project
|
|
|
|
app_name=facerecognition
|
|
project_dir=$(CURDIR)/../$(app_name)
|
|
build_dir=$(CURDIR)/build/artifacts
|
|
build_tools_dir=$(CURDIR)/build/tools
|
|
sign_dir=$(build_dir)/sign
|
|
appstore_dir=$(build_dir)/appstore
|
|
source_dir=$(build_dir)/source
|
|
package_name=$(app_name)
|
|
cert_dir=$(HOME)/.nextcloud/certificates
|
|
composer=$(shell which composer 2> /dev/null)
|
|
|
|
|
|
# Default rule
|
|
|
|
default: build
|
|
|
|
|
|
# Some utils rules
|
|
|
|
test-bin-deps:
|
|
@echo "================================================================================"
|
|
@echo "Checking binaries needed to build the application."
|
|
@echo "Testing node, npm, and curl. If one is missing, install it with the tools of "
|
|
@echo "your system."
|
|
@echo "================================================================================"
|
|
node -v
|
|
npm -v
|
|
curl -V
|
|
|
|
composer:
|
|
ifeq (,$(composer))
|
|
@echo "No composer command available, downloading a copy from the web"
|
|
mkdir -p $(build_tools_dir)
|
|
curl -sS https://getcomposer.org/installer | php
|
|
mv composer.phar $(build_tools_dir)
|
|
php $(build_tools_dir)/composer.phar install --prefer-dist
|
|
php $(build_tools_dir)/composer.phar update --prefer-dist
|
|
else
|
|
composer install --prefer-dist
|
|
composer update --prefer-dist
|
|
endif
|
|
|
|
|
|
# Dependencies of the application
|
|
|
|
npm-deps:
|
|
npm i
|
|
|
|
js/vendor/handlebars.js: npm-deps
|
|
mkdir -p js/vendor
|
|
cp node_modules/handlebars/dist/handlebars.js -f js/vendor/handlebars.js
|
|
|
|
js/vendor/lozad.js: npm-deps
|
|
mkdir -p js/vendor
|
|
cp node_modules/lozad/dist/lozad.js -f js/vendor/lozad.js
|
|
|
|
js/vendor/autocomplete.js:
|
|
mkdir -p js/vendor
|
|
wget https://raw.githubusercontent.com/realsuayip/autocomplete/master/dist/autocomplete.js -O js/vendor/autocomplete.js
|
|
|
|
js/vendor/egg.js:
|
|
mkdir -p js/vendor
|
|
wget https://raw.githubusercontent.com/mikeflynn/egg.js/master/egg.js -O js/vendor/egg.js
|
|
|
|
js/vendor/facerecognition-dialogs.js:
|
|
cp src/dialogs.js -f js/facerecognition-dialogs.js
|
|
|
|
javascript-deps: js/vendor/handlebars.js js/vendor/autocomplete.js js/vendor/lozad.js js/vendor/egg.js js/vendor/facerecognition-dialogs.js
|
|
|
|
vendor-deps: composer javascript-deps
|
|
|
|
|
|
# L10N Rules
|
|
|
|
l10n-update-pot:
|
|
php translationtool.phar create-pot-files
|
|
|
|
l10n-transifex-pull:
|
|
tx pull -s -a
|
|
|
|
l10n-transifex-push:
|
|
tx push -s -t
|
|
|
|
l10n-transifex-apply:
|
|
php translationtool.phar convert-po-files
|
|
|
|
l10n-clean:
|
|
rm -rf translationfiles
|
|
rm -f translationtool.phar
|
|
|
|
l10n-deps:
|
|
@echo "Checking transifex client."
|
|
tx --version
|
|
@echo "Downloading translationtool.phar"
|
|
curl -L https://github.com/nextcloud/docker-ci/raw/master/translations/translationtool/translationtool.phar -o translationtool.phar
|
|
|
|
# Build Rules
|
|
|
|
build-dev:
|
|
npm run dev
|
|
|
|
build-vue:
|
|
npm run build
|
|
|
|
js-templates:
|
|
node_modules/handlebars/bin/handlebars src/templates -f js/facerecognition-templates.js
|
|
|
|
build: test-bin-deps build-vue vendor-deps js-templates
|
|
@echo ""
|
|
@echo "Build done. You can enable the application in Nextcloud."
|
|
|
|
appstore:
|
|
mkdir -p $(sign_dir)
|
|
rsync -a \
|
|
--exclude='.*' \
|
|
--exclude=build \
|
|
--exclude=cli \
|
|
--exclude=composer* \
|
|
--exclude=translation* \
|
|
--exclude=node_modules \
|
|
--exclude=Makefile \
|
|
--exclude=package*json \
|
|
--exclude=phpunit*xml \
|
|
--exclude=psalm.xml \
|
|
--exclude=screenshots \
|
|
--exclude=src \
|
|
--exclude=tests \
|
|
--exclude=webpack* \
|
|
--exclude=js/*map \
|
|
--exclude=js/templates \
|
|
--include=js/vendor \
|
|
--exclude=vendor \
|
|
$(project_dir) $(sign_dir)
|
|
@echo "Signing…"
|
|
tar -czf $(build_dir)/$(app_name).tar.gz \
|
|
-C $(sign_dir) $(app_name)
|
|
openssl dgst -sha512 -sign $(cert_dir)/$(app_name).key $(build_dir)/$(app_name).tar.gz | openssl base64
|
|
|
|
test: composer
|
|
./vendor/bin/phpunit --coverage-clover clover.xml -c phpunit.xml
|
|
|
|
clean: l10n-clean
|
|
rm -rf js/vendor
|
|
rm -f js/*.map
|
|
rm -rf build
|
|
rm -rf vendor
|
|
rm -rf node_modules
|