Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Makefile - github.com/nextcloud/polls.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: bfa0ecf21eb1018b3499be037d5b7ebb3f8cd97e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# This file is licensed under the Affero General Public License version 3 or
# later. See the COPYING file.
# @author Bernhard Posselt <dev@bernhard-posselt.com>
# @copyright Bernhard Posselt 2016

# Dependencies:
# * make
# * which
# * npm
# * curl: used if phpunit and composer are not installed to fetch them from the web
# * tar: for building the archive

app_name=$(notdir $(CURDIR))
build_dir=$(CURDIR)/build
build_tools_dir=$(build_dir)/tools
build_source_dir=$(build_dir)/source
appstore_build_dir=$(build_dir)/artifacts/appstore
sign_dir=$(build_dir)/sign
appstore_package_name=$(appstore_build_dir)/$(app_name)
nc_cert_dir=$(HOME)/.nextcloud/certificates
composer=$(shell which composer 2> /dev/null)

all: dev-setup lint build-js-production test

# Dev environment setup
dev-setup: clean clean-dev npm-init composer

npm-init:
	npm install

# Build js
build-js-production:
	npm run build

# Installs and updates the composer dependencies. If composer is not installed
# a copy is fetched from the web
.PHONY: composer
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

# Lint
lint:
	npm run lint

lint-fix:
	npm run lint:fix

# Removes the appstore build and compiled js files
.PHONY: clean
clean:
	rm -rf $(build_dir)
	rm -f js/polls.js
	rm -f js/polls.js.map

clean-dev:
	rm -rf node_modules


# Builds the source package for the app store, ignores php and js tests
.PHONY: appstore
appstore: dev-setup lint build-js-production composer
	mkdir -p $(sign_dir)
	rsync -a \
	--exclude="ISSUE_TEMPLATE.md" \
	--exclude="*.log" \
	--exclude=".*" \
	--exclude="build" \
	--exclude="bower.json" \
	--exclude="composer.*" \
	--include="css/vendor" \
	--exclude="css/*.css" \
	--exclude="js/.*" \
	--exclude="js/*.log" \
	--exclude="js/bower.json" \
	--exclude="js/karma.*" \
	--exclude="js/node_modules" \
	--exclude="js/package.json" \
	--exclude="js/protractor.*" \
	--exclude="js/test" \
	--exclude="js/tests" \
	--include="js/vendor" \
	--exclude="karma.*" \
	--exclude="l10n/no-php" \
	--exclude="Makefile" \
	--exclude="node_modules" \
	--exclude="package*" \
	--exclude="phpunit*xml" \
	--exclude="protractor.*" \
	--exclude="screenshots" \
	--exclude="src" \
	--exclude="tests" \
	--exclude="vendor" \
	./ $(build_source_dir)/$(app_name)

	tar cvzf $(appstore_package_name).tar.gz \
	   --directory="$(build_source_dir)" $(app_name)

	@if [ -f $(nc_cert_dir)/$(app_name).key ]; then \
		echo "Signing package..."; \
		openssl dgst -sha512 -sign $(nc_cert_dir)/$(app_name).key $(appstore_build_dir)/$(app_name).tar.gz | openssl base64; \
	fi

.PHONY: test
test: composer
	$(CURDIR)/vendor/phpunit/phpunit/phpunit --coverage-clover clover.xml -c phpunit.xml
	$(CURDIR)/vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml