diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2018-07-10 18:40:59 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2018-07-11 15:31:29 +0200 |
commit | 75f0d3c093de01365f85e8e3035291d9a9a8c889 (patch) | |
tree | b84b25a2e6eb16c00a74fd6db8b0f446ef661a03 /Makefile | |
parent | 3f3ad0eeb8e01fe725a89ad196d23f22ad33de41 (diff) |
Vue cleanup and init
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 200 |
1 files changed, 32 insertions, 168 deletions
@@ -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 |