From b5c691615eb81e69b5a9d9be04831ae22a59b58d Mon Sep 17 00:00:00 2001 From: Julius Haertl Date: Tue, 31 Jan 2017 09:59:23 +0100 Subject: [PATCH] Update makefile --- Makefile | 167 +++++++++++------------------------------------- js/Makefile | 2 +- js/bower.json | 2 +- js/package.json | 6 +- 4 files changed, 42 insertions(+), 135 deletions(-) diff --git a/Makefile b/Makefile index 7315cfc74..7cf54fabb 100644 --- a/Makefile +++ b/Makefile @@ -1,46 +1,6 @@ -# This file is licensed under the Affero General Public License version 3 or -# later. See the COPYING file. -# @author Bernhard Posselt -# @copyright Bernhard Posselt 2012, 2014 - -# Generic Makefile for building and packaging an ownCloud 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)) build_tools_directory=$(CURDIR)/build/tools +build_dir=$(CURDIR)/build/artifacts source_build_directory=$(CURDIR)/build/artifacts/source source_package_name=$(source_build_directory)/$(app_name) appstore_build_directory=$(CURDIR)/build/artifacts/appstore @@ -48,91 +8,37 @@ appstore_package_name=$(appstore_build_directory)/$(app_name) npm=$(shell which npm 2> /dev/null) composer=$(shell which composer 2> /dev/null) -all: build +sign_dir=$(build_dir)/sign +cert_dir=$(HOME)/.nextcloud/certificates -# 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 +all: appstore -# Installs npm dependencies -.PHONY: npm -npm: -ifeq (,$(wildcard $(CURDIR)/package.json)) - cd js && $(npm) run build -else - npm run build -endif +clean-build: + rm -rf $(build_dir) -# Removes the appstore build -.PHONY: clean -clean: - rm -rf ./build - -# 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 +clean-dist: rm -rf js/node_modules + rm -rf js/vendor -# Builds the source and appstore package -.PHONY: dist -dist: - make source - make appstore +install-npm-deps-dev: + cd js && npm install --deps + cd js && bower install -# Builds the source package -.PHONY: source -source: - make build - make test - 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)/*.log" \ - --exclude="../$(app_name)/js/*.log" \ +install-deps: + cd js && npm install --deps + cd js && bower install -# Builds the source package for the app store, ignores php and js tests -.PHONY: appstore -appstore: - make build - make test +build: build-js + +build-js: + $(MAKE) -C js build + +# appstore: clean install-deps +appstore: clean-build build rm -rf $(appstore_build_directory) mkdir -p $(appstore_build_directory) - tar cvzf $(appstore_package_name).tar.gz ../$(app_name) \ - --exclude-vcs \ + tar cvzf $(appstore_package_name).tar.gz \ --exclude="../$(app_name)/build" \ --exclude="../$(app_name)/tests" \ --exclude="../$(app_name)/Makefile" \ @@ -153,26 +59,27 @@ appstore: --exclude="../$(app_name)/protractor\.*" \ --exclude="../$(app_name)/.*" \ --exclude="../$(app_name)/js/.*" \ + --exclude-vcs \ + ../$(app_name) + + + @if [ -f $(cert_dir)/$(app_name).key ]; then \ + echo "Signing package…"; \ + openssl dgst -sha512 -sign $(cert_dir)/$(app_name).key $(build_dir)/$(app_name).tar.gz | openssl base64; \ + fi + + echo $(appstore_package_name).tar.gz + -# 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 ifeq (, $(shell which phpunit 2> /dev/null)) @echo "No phpunit command available, downloading a copy from the web" mkdir -p $(build_tools_directory) curl -sSL https://phar.phpunit.de/phpunit.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-unit.clover - + 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 else - phpunit -c phpunit.xml --coverage-clover build/php-unit.coverage.xml - phpunit -c phpunit.integration.xml --coverage-clover build/php-unit.integration.coverage.xml + phpunit -c phpunit.xml --coverage-clover build/php-unit.clover + phpunit -c phpunit.integration.xml --coverage-clover build/php-unit.clover endif diff --git a/js/Makefile b/js/Makefile index df7963fb5..8c0da9afa 100644 --- a/js/Makefile +++ b/js/Makefile @@ -1,4 +1,4 @@ -default: +build: grunt build watch: diff --git a/js/bower.json b/js/bower.json index 9f4e35041..f4a9795d1 100644 --- a/js/bower.json +++ b/js/bower.json @@ -1,5 +1,5 @@ { - "name": "ownCloud Deck", + "name": "deck", "version": "0.0.1", "dependencies": { "angular": "~1.6.1", diff --git a/js/package.json b/js/package.json index 0f7dcc526..2e0344d8f 100644 --- a/js/package.json +++ b/js/package.json @@ -9,11 +9,11 @@ "url": "git@github.com:juliushaertl/deck.git" }, "dependencies": { - "karma": "^1.1.1" + "karma": "^1.1.1", + "bower": "*", + "grunt": "*" }, "devDependencies": { - "bower": "*", - "grunt": "*", "grunt-cli": "*", "grunt-contrib-concat": "*", "grunt-contrib-jshint": "*",