diff options
author | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2018-09-28 19:26:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-28 19:26:05 +0200 |
commit | d520d96fee5e791cf7cea9cd5ffcbbbe4ce8d2ea (patch) | |
tree | cb79e4bfd4e00b395b3c3b0cc88fe841925d1d90 /Makefile | |
parent | 754ea8e03f70999a08d9ea172b423aeeb6dcc413 (diff) | |
parent | fc816f42b0c6934c00627e97f0786e8324e9218f (diff) |
Merge pull request #596 from nextcloud/vuev3.0.0-alpha1
Contacts 3.0.0
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 205 |
1 files changed, 50 insertions, 155 deletions
@@ -1,43 +1,5 @@ # 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 - -# Generic Makefile for building and packaging an Nextcloud app which uses npm and -# Composer. -# -# Dependencies: -# * make -# * which -# * curl: used if phpunit and composer are not installed to fetch them from the web -# * tar: for building the archive -# * npm: for building and testing everything JS -# -# If no composer.json is in the app root directory, the Composer step -# will be skipped. The same goes for the package.json which can be located in -# the app root or the js/ directory. -# -# The npm command by launches the npm build script: -# -# npm run build -# -# The npm test command launches the npm test script: -# -# npm run test -# -# The idea behind this is to be completely testing and build tool agnostic. All -# build tools and additional package managers should be installed locally in -# your project, since this won't pollute people's global namespace. -# -# The following npm scripts in your package.json install and update the bower -# and npm dependencies and use gulp as build system (notice how everything is -# run from the node_modules folder): -# -# "scripts": { -# "test": "node node_modules/gulp-cli/bin/gulp.js karma", -# "prebuild": "npm install && node_modules/bower/bin/bower install && node_modules/bower/bin/bower update", -# "build": "node node_modules/gulp-cli/bin/gulp.js" -# }, app_name=$(notdir $(CURDIR)) project_directory=$(CURDIR)/../$(app_name) @@ -46,98 +8,61 @@ source_build_directory=$(CURDIR)/build/artifacts/source source_package_name=$(source_build_directory)/$(app_name) appstore_build_directory=$(CURDIR)/build/artifacts/appstore appstore_package_name=$(appstore_build_directory)/$(app_name) -npm=$(shell which npm 2> /dev/null) -composer=$(shell which composer 2> /dev/null) - -all: build - -# Fetches the PHP and JS dependencies and compiles the JS. If no composer.json -# is present, the composer step is skipped, if no package.json or js/package.json -# is present, the npm step is skipped -.PHONY: build -build: -ifneq (,$(wildcard $(CURDIR)/composer.json)) - make composer -endif -ifneq (,$(wildcard $(CURDIR)/package.json)) - make npm -endif -ifneq (,$(wildcard $(CURDIR)/js/package.json)) - make npm -endif - -# 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_directory) - curl -sS https://getcomposer.org/installer | php - mv composer.phar $(build_tools_directory) - php $(build_tools_directory)/composer.phar install --prefer-dist - php $(build_tools_directory)/composer.phar update --prefer-dist -else - composer install --prefer-dist - composer update --prefer-dist -endif - -# We need to build css files for Nextcloud 11 -# variables.scss is necessary and not provided by stable11 => download it -.PHONY: css -css: -ifeq (,$(wildcard $(CURDIR)/build/css/variables.scss)) - curl --silent --create-dirs -o $(CURDIR)/build/css/variables.scss https://raw.githubusercontent.com/nextcloud/server/master/core/css/variables.scss - npm run scss-compile -else - npm run scss-compile -endif - -# Installs npm dependencies -.PHONY: npm -npm: -ifeq (,$(wildcard $(CURDIR)/package.json)) - cd js && $(npm) run build -else + +all: dev-setup lint build-js-production test + +# Dev env management +dev-setup: clean clean-dev npm-init + +npm-init: + npm install + +npm-update: + npm update + +# Building +build-js: + npm run dev + +build-js-production: npm run build - make css -endif -# Removes the appstore build -.PHONY: clean +watch-js: + npm run watch + +# Testing +test: + npm run test + +test-watch: + npm run test:watch + +test-coverage: + npm run test:coverage + +# Linting +lint: + npm run lint + +lint-fix: + npm run lint:fix + +# Style linting +stylelint: + npm run stylelint + +stylelint-fix: + npm run stylelint:fix + +# Cleaning clean: - rm -rf ./build + rm -f js/contacts.js + rm -f js/contacts.js.map -# Same as clean but also removes dependencies installed by composer, bower and -# npm -.PHONY: distclean -distclean: clean - rm -rf vendor +clean-dev: rm -rf node_modules - rm -rf js/vendor - rm -rf js/node_modules - -# Builds the source and appstore package -.PHONY: dist -dist: - make source - make appstore - -# Builds the source package -.PHONY: source -source: - rm -rf $(source_build_directory) - mkdir -p $(source_build_directory) - tar cvzf $(source_package_name).tar.gz ../$(app_name) \ - --exclude-vcs \ - --exclude="../$(app_name)/build" \ - --exclude="../$(app_name)/js/node_modules" \ - --exclude="../$(app_name)/node_modules" \ - --exclude="../$(app_name)/*.log" \ - --exclude="../$(app_name)/js/*.log" \ # Builds the source package for the app store, ignores php and js tests -.PHONY: appstore appstore: rm -rf $(appstore_build_directory) mkdir -p $(appstore_build_directory) @@ -149,35 +74,5 @@ appstore: $(project_directory)/l10n \ $(project_directory)/lib \ $(project_directory)/templates \ - $(project_directory)/js/public \ - $(project_directory)/js/vendor \ - $(project_directory)/js/dav/dav.js \ - $(project_directory)/js/contacts-inject-14.js - -# Command for running JS and PHP tests. Works for package.json files in the js/ -# and root directory. If phpunit is not installed systemwide, a copy is fetched -# from the internet -.PHONY: test -test: -ifneq (,$(wildcard $(CURDIR)/js/package.json)) - cd js && $(npm) run test -endif -ifneq (,$(wildcard $(CURDIR)/package.json)) - $(npm) run test -endif -# hotfix to prevent travis from using phpunix 6.x - @echo "No phpunit command available, downloading a copy from the web" - mkdir -p $(build_tools_directory) - curl -sSL https://phar.phpunit.de/phpunit-5.7.9.phar -o $(build_tools_directory)/phpunit.phar - php $(build_tools_directory)/phpunit.phar -c phpunit.xml --coverage-clover build/php-unit.clover - php $(build_tools_directory)/phpunit.phar -c phpunit.integration.xml --coverage-clover build/php-integration.clover - -# watch out for changes and rebuild -.PHONY: watch -watch: -ifneq (,$(wildcard $(CURDIR)/js/package.json)) - cd js && $(npm) run watch -endif -ifneq (,$(wildcard $(CURDIR)/package.json)) - $(npm) run watch -endif + $(project_directory)/js \ + $(project_directory)/COPYING |