summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2018-07-10 18:40:59 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2018-07-11 15:31:29 +0200
commit75f0d3c093de01365f85e8e3035291d9a9a8c889 (patch)
treeb84b25a2e6eb16c00a74fd6db8b0f446ef661a03 /Makefile
parent3f3ad0eeb8e01fe725a89ad196d23f22ad33de41 (diff)
Vue cleanup and init
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile200
1 files changed, 32 insertions, 168 deletions
diff --git a/Makefile b/Makefile
index a9f79072..274f50a7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,182 +1,46 @@
-# 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
+all: dev-setup lint build-js-production test
-# 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"
-# },
+# Dev env management
+dev-setup: clean clean-dev npm-init
-app_name=$(notdir $(CURDIR))
-project_directory=$(CURDIR)/../$(app_name)
-build_tools_directory=$(CURDIR)/build/tools
-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)
+npm-init:
+ npm install
-all: build
+npm-update:
+ npm update
-# 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
+# Building
+build-js:
+ npm run dev
-# 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
+build-js-production:
+ npm run build
-# 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
+watch-js:
+ npm run watch
-# Installs npm dependencies
-.PHONY: npm
-npm:
-ifeq (,$(wildcard $(CURDIR)/package.json))
- cd js && $(npm) run build
-else
- npm run build
- make css
-endif
+# Testing
+test:
+ npm run test
-# Removes the appstore build
-.PHONY: clean
-clean:
- rm -rf ./build
+test-watch:
+ npm run test:watch
-# Same as clean but also removes dependencies installed by composer, bower and
-# npm
-.PHONY: distclean
-distclean: clean
- rm -rf vendor
- rm -rf node_modules
- rm -rf js/vendor
- rm -rf js/node_modules
+test-coverage:
+ npm run test:coverage
-# Builds the source and appstore package
-.PHONY: dist
-dist:
- make source
- make appstore
+# Linting
+lint:
+ npm run lint
-# 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" \
+lint-fix:
+ npm run lint:fix
-# 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)
- tar cvzf $(appstore_package_name).tar.gz \
- --exclude-vcs \
- $(project_directory)/appinfo \
- $(project_directory)/css \
- $(project_directory)/img \
- $(project_directory)/l10n \
- $(project_directory)/lib \
- $(project_directory)/templates \
- $(project_directory)/js/public \
- $(project_directory)/js/vendor \
- $(project_directory)/js/dav/dav.js
+# Cleaning
+clean:
+ rm -f js/contacts.js
+ rm -f js/contacts.js.map
-# 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
+clean-dev:
+ rm -rf node_modules
-# 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