diff --git a/.distignore b/.distignore index f660ff4..5ac45df 100644 --- a/.distignore +++ b/.distignore @@ -13,4 +13,3 @@ /package-lock.json /phpcs.xml /phpunit.xml -/RoboFile.php diff --git a/.gitattributes b/.gitattributes index 8c5a657..6cf95d7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11,4 +11,3 @@ CONTRIBUTING.md export-ignore package.json export-ignore phpcs.xml export-ignore phpunit.xml export-ignore -RoboFile.php export-ignore diff --git a/RoboFile.php b/RoboFile.php deleted file mode 100644 index 87d9f79..0000000 --- a/RoboFile.php +++ /dev/null @@ -1,396 +0,0 @@ - - * - * @package Statify_Blacklist - * @version 1.0.0 - */ - -use Robo\Exception\TaskException; -use Robo\Tasks; - -/** - * Class RoboFile - */ -class RoboFile extends Tasks { - const PROJECT_NAME = 'statify-blacklist'; - const SVN_URL = 'https://plugins.svn.wordpress.org/statify-blacklist'; - - const OPT_TARGET = 'target'; - const OPT_SKIPTEST = 'skipTests'; - const OPT_SKIPSTYLE = 'skipStyle'; - - /** - * Version tag (read from composer.json). - * - * @var string - */ - private $version; - - /** - * Target directory path. - * - * @var string - */ - private $target_dir; - - /** - * Final package name. - * - * @var string - */ - private $final_name; - - /** - * RoboFile constructor - * - * @param array $opts Options. - * - * @return void - */ - public function __construct( $opts = [ self::OPT_TARGET => 'dist' ] ) { - // Read composer configuration and extract version number.. - $composer = json_decode( file_get_contents( __DIR__ . '/composer.json' ) ); - // Extract parameter from options. - $this->version = $composer->version; - $this->target_dir = $opts[ self::OPT_TARGET ]; - $this->final_name = self::PROJECT_NAME . '.' . $this->version; - } - - /** - * Clean up target directory - * - * @param array $opts Options. - * - * @return void - */ - public function clean( $opts = [ self::OPT_TARGET => 'dist' ] ) { - $this->say( 'Cleaning target directory...' ); - if ( is_dir( $this->target_dir . '/' . $this->final_name ) ) { - $this->_deleteDir( [ $this->target_dir . '/' . $this->final_name ] ); - } - if ( is_file( $this->target_dir . '/' . $this->final_name . '.zip' ) ) { - $this->_remove( $this->target_dir . '/' . $this->final_name . '.zip' ); - } - } - - /** - * Run PHPUnit tests - * - * @return void - */ - public function test() { - $this->say( 'Executing PHPUnit tests...' ); - $this->taskPhpUnit()->configFile( __DIR__ . '/phpunit.xml' )->run(); - } - - /** - * Run code style tests - * - * @return void - */ - public function testCS() { - $this->say( 'Executing PHPCS tests...' ); - $this->_exec( __DIR__ . '/vendor/bin/phpcs --standard=phpcs.xml -s' ); - } - - /** - * Build a distributable bundle. - * - * @param array $opts Options. - * - * @return void - */ - public function build( - $opts = [ - self::OPT_TARGET => 'dist', - self::OPT_SKIPTEST => false, - self::OPT_SKIPSTYLE => false, - ] - ) { - $this->clean( $opts ); - if ( isset( $opts[ self::OPT_SKIPTEST ] ) && true === $opts[ self::OPT_SKIPTEST ] ) { - $this->say( 'Tests skipped' ); - } else { - $this->test(); - } - if ( isset( $opts[ self::OPT_SKIPSTYLE ] ) && true === $opts[ self::OPT_SKIPSTYLE ] ) { - $this->say( 'Style checks skipped' ); - } else { - $this->testCS(); - } - $this->bundle(); - } - - /** - * Bundle global resources. - * - * @return void - */ - private function bundle() { - $this->say( 'Bundling resources...' ); - $this->taskCopyDir( - [ - 'inc' => $this->target_dir . '/' . $this->final_name . '/inc', - 'views' => $this->target_dir . '/' . $this->final_name . '/views', - ] - )->run(); - $this->_copy( 'statify-blacklist.php', $this->target_dir . '/' . $this->final_name . '/statify-blacklist.php' ); - $this->_copy( 'LICENSE.md', $this->target_dir . '/' . $this->final_name . '/LICENSE.md' ); - $this->_copy( 'README.md', $this->target_dir . '/' . $this->final_name . '/README.md' ); - - // Remove content before title (e.g. badges) from README file. - $this->taskReplaceInFile( $this->target_dir . '/' . $this->final_name . '/README.md' ) - ->regex( '/^[^\\#]*/' ) - ->to( '' ) - ->run(); - } - - /** - * Create ZIP package from distribution bundle. - * - * @param array $opts Options. - * - * @return void - */ - public function package( - $opts = [ - self::OPT_TARGET => 'dist', - self::OPT_SKIPTEST => false, - self::OPT_SKIPSTYLE => false, - ] - ) { - $this->build( $opts ); - $this->say( 'Packaging...' ); - $this->taskPack( $this->target_dir . '/' . $this->final_name . '.zip' ) - ->addDir( '', $this->target_dir . '/' . $this->final_name ) - ->run(); - } - - /** - * Deploy development version (trunk). - * - * @param array $opts Options. - * - * @return void - * @throws TaskException On errors. - */ - public function deployTrunk( - $opts = [ - self::OPT_TARGET => 'dist', - self::OPT_SKIPTEST => false, - self::OPT_SKIPSTYLE => false, - ] - ) { - // First execute build job. - $this->build( $opts ); - - // Prepare VCS, either checkout or update local copy. - $this->prepareVCS(); - - $this->say( 'Preparing deployment directory...' ); - $this->updateVCStrunk(); - - // Update remote repository. - $this->say( 'Deploying...' ); - $this->commitVCS( - '--force trunk/*', - 'Updated ' . self::PROJECT_NAME . ' trunk' - ); - } - - /** - * Deploy current version tag. - * - * @param array $opts Options. - * - * @return void - * @throws TaskException On errors. - */ - public function deployTag( - $opts = [ - self::OPT_TARGET => 'dist', - self::OPT_SKIPTEST => false, - self::OPT_SKIPSTYLE => false, - ] - ) { - // First execute build job. - $this->build( $opts ); - - // Prepare VCS, either checkout or update local copy. - $this->prepareVCS(); - - $this->say( 'Preparing deployment directory...' ); - $this->updateVCStag(); - - // Update remote repository. - $this->say( 'Deploying...' ); - $this->commitVCS( - 'tags/' . $this->version, - 'Updated ' . self::PROJECT_NAME . ' v' . $this->version - ); - } - - /** - * Deploy current version tag. - * - * @param array $opts Options. - * - * @return void - * @throws TaskException On errors. - */ - public function deployReadme( - $opts = [ - self::OPT_TARGET => 'dist', - self::OPT_SKIPTEST => false, - self::OPT_SKIPSTYLE => false, - ] - ) { - // First execute build job. - $this->build( $opts ); - - // Prepare VCS, either checkout or update local copy. - $this->prepareVCS(); - - $this->updateVCSreadme(); - - // Update remote repository. - $this->say( 'Deploying...' ); - $this->commitVCS( - '--force trunk/README.md', - 'Updated ' . self::PROJECT_NAME . ' ReadMe' - ); - } - - /** - * Deploy current version tag and trunk. - * - * @param array $opts Options. - * - * @return void - * @throws TaskException On errors. - */ - public function deployAll( - $opts = [ - self::OPT_TARGET => 'dist', - self::OPT_SKIPTEST => false, - self::OPT_SKIPSTYLE => false, - ] - ) { - // First execute build job. - $this->build( $opts ); - - // Prepare VCS, either checkout or update local copy. - $this->prepareVCS(); - - $this->say( 'Preparing deployment directory...' ); - $this->updateVCStrunk(); - $this->updateVCStag(); - - // Update remote repository. - $this->say( 'Deploying...' ); - $this->commitVCS( - [ - '--force trunk/*', - '--force tags/' . $this->version, - ], - 'Updated ' . self::PROJECT_NAME . ' v' . $this->version - ); - } - - /** - * Prepare VCS direcory. - * - * Checkout or update local copy of SVN repository. - * - * @return void - * @throws TaskException On errors. - */ - private function prepareVCS() { - if ( is_dir( $this->target_dir . '/svn' ) ) { - $this->taskSvnStack() - ->stopOnFail() - ->dir( $this->target_dir . '/svn/statify-blacklist' ) - ->update() - ->run(); - } else { - $this->_mkdir( $this->target_dir . '/svn' ); - $this->taskSvnStack() - ->dir( $this->target_dir . '/svn' ) - ->checkout( self::SVN_URL ) - ->run(); - } - } - - /** - * Commit VCS changes - * - * @param string|array $to_add Files to add. - * @param string $msg Commit message. - * - * @return void - * @throws TaskException On errors. - */ - private function commitVCS( $to_add, $msg ) { - $task = $this->taskSvnStack() - ->stopOnFail() - ->dir( $this->target_dir . '/svn/statify-blacklist' ); - - if ( is_array( $to_add ) ) { - foreach ( $to_add as $ta ) { - $task = $task->add( $ta ); - } - } else { - $task = $task->add( $to_add ); - } - - $task->commit( $msg )->run(); - } - - /** - * Update SVN readme file. - * - * @return void - */ - private function updateVCSreadme() { - $trunk_dir = $this->target_dir . '/svn/statify-blacklist/trunk'; - $this->_copy( $this->target_dir . '/' . $this->final_name . '/README.md', $trunk_dir . '/README.md' ); - } - - /** - * Update SVN development version (trunk). - * - * @return void - */ - private function updateVCStrunk() { - // Clean trunk directory. - $trunk_dir = $this->target_dir . '/svn/statify-blacklist/trunk'; - $this->taskCleanDir( $trunk_dir )->run(); - - // Copy built bundle to trunk. - $this->taskCopyDir( [ $this->target_dir . '/' . $this->final_name => $trunk_dir ] )->run(); - } - - /** - * Update current SVN version tag. - * - * @return void - */ - private function updateVCStag() { - // Clean tag directory if it exists. - $tag_dir = $this->target_dir . '/svn/statify-blacklist/tags/' . $this->version; - if ( is_dir( $tag_dir ) ) { - $this->taskCleanDir( $this->target_dir . '/svn/statify-blacklist/tags/' . $this->version )->run(); - } else { - $this->_mkdir( $tag_dir ); - } - - // Copy built bundle to trunk. - $this->taskCopyDir( [ $this->target_dir . '/' . $this->final_name => $tag_dir ] )->run(); - } -} diff --git a/composer.json b/composer.json index e786e43..4ba952b 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,6 @@ }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "^0.7", - "consolidation/robo": "^1.4", "phpunit/phpunit": "*", "phpunit/php-code-coverage": "*", "slowprog/composer-copy-file": "~0.3", @@ -32,15 +31,6 @@ "wp-coding-standards/wpcs": "^2.3" }, "scripts": { - "build": [ - "robo build" - ], - "package": [ - "robo package" - ], - "deploy": [ - "robo deploy:all" - ], "test-all": [ "@test", "@test-cs"