Skip to content

Commit

Permalink
Merge pull request appserver-io#1060 from wagnert/master
Browse files Browse the repository at this point in the history
Use Robo for build process
  • Loading branch information
wagnert authored Jun 2, 2017
2 parents df671e0 + 00f6b73 commit fa5a41e
Show file tree
Hide file tree
Showing 9 changed files with 308 additions and 26 deletions.
13 changes: 12 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,23 @@
.DS_Store
/target
/instance-src
/include
/lib
/etc/conf.d
/etc/pear.conf
/etc/php-fpm*
/etc/php.ini
/man
/php
/share
/ssl
/vendor
/webapps
/deploy/*.phar*
/tmp
/var/log
/var/tmp/example
/var/run
/var/tmp/localhost
/build.properties
/composer.lock
/composer.phar
Expand Down
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ before_install:
- wget https://scrutinizer-ci.com/ocular.phar

script:
- ant composer-init
- ant build
- composer install
- vendor/bin/robo build
- php ocular.phar code-coverage:upload --format=php-clover $TRAVIS_BUILD_DIR/target/reports/unit/clover.xml

notifications:
Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
# Version 1.1.4-beta12

## Bugfixes

* None

## Features

* Use Robo for build process

# Version 1.1.4-beta11

## Bugfixes
Expand Down
206 changes: 206 additions & 0 deletions RoboFile.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
<?php

/**
* RoboFile.php
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
*
* PHP version 5
*
* @author Tim Wagner <tw@appserver.io>
* @copyright 2015 TechDivision GmbH <info@appserver.io>
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @link http://github.com/appserver-io/appserver
* @link http://www.appserver.io
*/

use Robo\Robo;
use AppserverIo\RoboTasks\AbstractRoboFile;
use AppserverIo\RoboTasks\ConfigurationKeys;

/**
* Defines the available appserver.io build tasks.
*
* @author Tim Wagner <tw@appserver.io>
* @copyright 2015 TechDivision GmbH <info@appserver.io>
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @link http://github.com/appserver-io/appserver
* @link http://www.appserver.io
*
* @SuppressWarnings(PHPMD)
*/
class RoboFile extends AbstractRoboFile
{

/**
* Load the appserver.io base tasks.
*
* @var \AppserverIo\RoboTasks\Base\loadTasks
*/
use AppserverIo\RoboTasks\Base\loadTasks;

/**
* Initializes the default configuration.
*/
public function __construct()
{

// call parent constructor
parent::__construct();

// initialize the default configuration
Robo::config()->setDefault(sprintf('%s.%s', ConfigurationKeys::DIRS, 'dist'), sprintf('%s/dist', getcwd()));
}

/**
* Run's the composer install command.
*
* @return void
*/
public function composerInstall()
{
// optimize autoloader with custom path
$this->taskComposerInstall()
->preferDist()
->optimizeAutoloader()
->run();
}

/**
* Run's the composer update command.
*
* @return void
*/
public function composerUpdate()
{
// optimize autoloader with custom path
$this->taskComposerUpdate()
->preferDist()
->optimizeAutoloader()
->run();
}

/**
* Clean up the environment for a new build.
*
* @return void
*/
public function clean()
{
$this->taskDeleteDir($this->getTargetDir())->run();
}

/**
* Prepare's the environment for a new build.
*
* @return void
*/
public function prepare()
{
$this->taskFileSystemStack()
->mkdir($this->getDistDir())
->mkdir($this->getTargetDir())
->mkdir($this->getReportsDir())
->run();
}

/**
* Run's the PHPMD.
*
* @return void
*/
public function runMd()
{

// run the mess detector
$this->_exec(
sprintf(
'%s/bin/phpmd %s xml phpmd.xml --reportfile %s/reports/pmd.xml --ignore-violations-on-exit || exit 0',
$this->getVendorDir(),
$this->getSrcDir(),
$this->getTargetDir()
)
);
}

/**
* Run's the PHPCPD.
*
* @return void
*/
public function runCpd()
{

// run the copy past detector
$this->_exec(
sprintf(
'%s/bin/phpcpd --names-exclude=DirectoryParser.php %s --log-pmd %s/reports/pmd-cpd.xml',
$this->getVendorDir(),
$this->getSrcDir(),
$this->getTargetDir()
)
);
}

/**
* Run's the PHPCodeSniffer.
*
* @return void
*/
public function runCs()
{

// run the code sniffer
$this->_exec(
sprintf(
'%s/bin/phpcs -n --report-full --extensions=php --standard=phpcs.xml --report-checkstyle=%s/reports/phpcs.xml %s',
$this->getVendorDir(),
$this->getTargetDir(),
$this->getSrcDir()
)
);
}

/**
* Run's the PHPUnit tests.
*
* @return void
*/
public function runTests()
{

// run PHPUnit
$this->taskPHPUnit(sprintf('%s/bin/phpunit', $this->getVendorDir()))
->configFile('phpunit.xml')
->run();
}

/**
* The complete build process.
*
* @return void
*/
public function build()
{
$this->clean();
$this->prepare();
$this->runCs();
$this->runCpd();
$this->runMd();
$this->runTests();
}

/**
* Returns the distribution directory.
*
* @return string The distribution directory
*/
protected function getDistDir()
{
return Robo::config()->get(sprintf('%s.%s', ConfigurationKeys::DIRS, 'dist'));
}
}
26 changes: 13 additions & 13 deletions build.default.properties
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
#--------------------------------------------------------------------------------
# appserver-io/appserver Build Default Properties
#
# @copyright Copyright (c) 2010 <info@techdivision.com> - TechDivision GmbH
# @license http://opensource.org/licenses/osl-3.0.php
# Open Software License (OSL 3.0)
# @author TechDivision GmbH - Core Team <core@techdivision.com>
#--------------------------------------------------------------------------------
;--------------------------------------------------------------------------------
; appserver-io/appserver Build Default Properties
;
; @copyright Copyright (c) 2010 <info@techdivision.com> - TechDivision GmbH
; @license http://opensource.org/licenses/osl-3.0.php
; Open Software License (OSL 3.0)
; @author TechDivision GmbH - Core Team <core@techdivision.com>
;--------------------------------------------------------------------------------

# ---- Module Release Settings --------------------------------------------------
; ---- Module Release Settings --------------------------------------------------
release.version = 1.1.4-beta10
release.name = Iron Knight

# ---- PHPCPD Settings ----------------------------------------------------------
# Directories
; ---- PHPCPD Settings ----------------------------------------------------------
; Directories
phpcpd-exclude.dir = --exclude AppserverIo/Appserver/PersistentServletEngine
phpcpd-exclude.names = --names-exclude=NamingDirectoryImpl.php,DeploymentDescriptorParser.php,DirectoryParser.php
phpcpd-additional.args = ${phpcpd-exclude.dir} ${phpcpd-exclude.names}

# ---- PHPCS Settings -----------------------------------------------------------
# can be overwritten locally
; ---- PHPCS Settings -----------------------------------------------------------
; can be overwritten locally
phpcs-additional.args = --ignore=server.php,bootstrap.php,webapps,var/scripts/bootstrap.php
6 changes: 5 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
"appserver-io/single-app": "~3.0",
"appserver-io/properties": "~2.0",
"appserver-io/concurrency": "0.3.*",
"appserver-io/robo-tasks": "~0.1",
"appserver-io/description": "~7.0",
"appserver-io/authenticator": "~1.0",
"appserver-io/configuration": "~2.0",
Expand All @@ -44,7 +45,10 @@
},
"require-dev": {
"mikey179/vfsStream": "1.*",
"appserver-io/build": "~1.0"
"appserver-io/build": "~1.0",
"consolidation/robo": "~1.0",
"henrikbjorn/lurker" : "~1.0",
"appserver-io/pthreads-polyfill": "~1.0"
},
"autoload": {
"psr-0": {
Expand Down
27 changes: 27 additions & 0 deletions phpcs.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0"?>
<ruleset name="appserver-io/appserver">

<!--
The TechDivision GmbH coding standard is using a mix of PSR-2
coding conventions and PEAR doc-block commenting rules.
-->
<description>TechDivision GmbH coding standard</description>

<!-- Define global exclude patterns -->
<exclude-pattern>*/doc/*</exclude-pattern>
<exclude-pattern>*/tests/*</exclude-pattern>
<exclude-pattern>*/target/*</exclude-pattern>
<exclude-pattern>*/vendor/*</exclude-pattern>

<!-- Mainly use PSR2 coding standard -->
<rule ref="PSR2"/>

<!-- Include commenting sniffs from PEAR standard -->
<rule ref="PEAR.Commenting.FunctionComment"/>
<rule ref="PEAR.Commenting.InlineComment"/>

<!-- Include generic commenting sniffs -->
<rule ref="Generic.Commenting.Fixme"/>
<rule ref="Generic.Commenting.Todo"/>

</ruleset>
22 changes: 22 additions & 0 deletions phpmd.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="appserver-io/appserver PHPMD rule set"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0
http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:noNamespaceSchemaLocation="
http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>
TechDivision GmbH default PHPMD rule set
</description>

<rule ref="rulesets/unusedcode.xml" />
<rule ref="rulesets/codesize.xml" />

<!-- Define global exclude patterns -->
<exclude-pattern>*/doc/*</exclude-pattern>
<exclude-pattern>*/tests/*</exclude-pattern>
<exclude-pattern>*/target/*</exclude-pattern>
<exclude-pattern>*/vendor/*</exclude-pattern>

</ruleset>
Loading

0 comments on commit fa5a41e

Please sign in to comment.