diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..5ef1389 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,16 @@ +## Affected Version + +Show version numbers by pasting the output of `composer info --direct`. +Alternatively, get the framework version information from the CMS. +In SilverStripe 4.3 and newer you may find the Help menu in the bottom left corner, unfold it and hover over the version number to get the information. +Otherwise, simply hover over the SilverStripe logo in the bottom left corner of the CMS. + +## Description + +Describe expected and observed behaviour. +For visual issues, please include browser version and screenshots. +Please read [our contributing docs](../CONTRIBUTING.md). + +## Steps to Reproduce + +Help us with step-by-step instructions. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..d245014 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,5 @@ +Thanks for contributing, you're awesome! :star: +Please describe expected and observed behaviour, and what you're fixing. +For visual fixes, please include tested browsers and screenshots. +Search for related existing issues and link to them if possible. +Please read [our contributing docs](../CONTRIBUTING.md). diff --git a/.travis.yml b/.travis.yml index b604728..479779d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,34 +1,37 @@ language: php +services: + - mysql + - postgresql + env: global: - - COMPOSER_ROOT_VERSION=4.0.x-dev - - CODECOV_TOKEN= - - SCRUT_TOKEN= + - TRAVIS_NODE_VERSION="10" matrix: include: - php: 7.0 - env: DB=MYSQL PHPUNIT_TEST=1 PHPCS_TEST=1 + env: DB=MYSQL RECIPE_VERSION=4.3.x-dev PHPUNIT_TEST=1 - php: 7.1 - env: DB=MYSQL PHPUNIT_COVERAGE_TEST=1 - - php: 5.6 - env: DB=MYSQL PHPUNIT_TEST=1 + env: DB=MYSQL RECIPE_VERSION=4.3.x-dev PHPUNIT_TEST=1 + - php: 7.2 + env: DB=PGSQL RECIPE_VERSION=4.4.x-dev PHPUNIT_TEST=1 PHPCS_TEST=1 + - php: 7.3 + env: DB=MYSQL RECIPE_VERSION=4.x-dev PHPUNIT_COVERAGE_TEST=1 before_script: - # Init PHP - phpenv rehash - phpenv config-rm xdebug.ini - - echo 'memory_limit = 2048M' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini - # Install composer dependencies - - composer require --prefer-dist --no-update silverstripe-themes/simple:~3.2 - - composer update --no-suggest --prefer-dist + - composer validate + - composer require --no-update silverstripe/recipe-cms:"$RECIPE_VERSION" + - if [[ $DB == PGSQL ]]; then composer require --no-update silverstripe/postgresql:^2.1; fi + - composer install --prefer-source --no-interaction --no-progress --no-suggest --optimize-autoloader --verbose --profile script: - if [[ $PHPUNIT_TEST ]]; then vendor/bin/phpunit; fi - - if [[ $PHPUNIT_COVERAGE_TEST ]]; then phpdbg -qrr vendor/bin/phpunit --coverage-clover=coverage.xml && wget https://scrutinizer-ci.com/ocular.phar; fi - - if [[ $PHPCS_TEST ]]; then vendor/bin/phpcs src/ tests/; fi + - if [[ $PHPUNIT_COVERAGE_TEST ]]; then phpdbg -qrr vendor/bin/phpunit --coverage-clover=coverage.xml; fi + - if [[ $PHPCS_TEST ]]; then vendor/bin/phpcs src/ tests/ *.php; fi after_success: - - if [[ $PHPUNIT_COVERAGE_TEST ]]; then bash <(curl -s https://codecov.io/bash) -f coverage.xml -t $CODECOV_TOKEN && travis_retry php ocular.phar code-coverage:upload --format=php-clover --access-token=$SCRUT_TOKEN coverage.xml; fi \ No newline at end of file + - if [[ $PHPUNIT_COVERAGE_TEST ]]; then bash <(curl -s https://codecov.io/bash) -f coverage.xml -F php; fi diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..0bfe582 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,83 @@ +pipeline { + agent any + stages { + + stage('Build') { + steps { + sh 'mkdir silverstripe-cache' + sh 'composer require --prefer-dist --no-update silverstripe-themes/simple:~3.2' + sh 'composer update --no-suggest --prefer-dist' + } + } + + stage('PHPUnit') { + steps { + sh 'vendor/bin/phpunit --log-junit=build/logs/junit.xml --coverage-xml=build/logs/coverage' + } + } + + stage('Checkstyle Report') { + steps { + sh 'vendor/bin/phpcs --report=checkstyle --report-file=build/logs/checkstyle.xml --standard=phpcs.xml.dist --extensions=php,inc --ignore=autoload.php --ignore=vendor/ src/ tests/' + } + } + + stage('Mess Detection Report') { + steps { + sh 'vendor/bin/phpmd src xml codesize,unusedcode,naming --reportfile build/logs/pmd.xml --exclude vendor/ --exclude autoload.php || exit 0' + } + } + + stage('CPD Report') { + steps { + sh 'vendor/bin/phpcpd --log-pmd build/logs/pmd-cpd.xml --exclude vendor src/ tests/ || exit 0' + } + } + + stage('Lines of Code') { + steps { + sh 'vendor/bin/phploc --count-tests --exclude vendor/ --log-csv build/logs/phploc.csv --log-xml build/logs/phploc.xml src/ tests/' + } + } + + stage('Software metrics') { + steps { + sh 'mkdir build/pdepend' + sh 'vendor/bin/pdepend --jdepend-xml=build/logs/jdepend.xml --jdepend-chart=build/pdepend/dependencies.svg --overview-pyramid=build/pdepend/overview-pyramid.svg --ignore=vendor src' + } + } + + stage('Generate documentation') { + steps { + sh 'vendor/bin/phpdox -f phpdox.xml' + } + } + + stage('Publish Documentation') { + steps { + publishHTML (target: [ + allowMissing: false, + alwaysLinkToLastBuild: false, + keepAll: true, + reportDir: 'docs/html', + reportFiles: 'index.html', + reportName: "API" + ]) + } + } + + stage('Cleanup') { + steps { + sh 'rm -rf silverstripe-cache' + } + } + } + + post { + always { + junit 'build/logs/*.xml' + recordIssues enabledForFailure: true, tool: checkStyle(pattern: '**/logs/checkstyle.xml') + recordIssues enabledForFailure: true, tool: cpd(pattern: '**/logs/pmd-cpd.xml') + } + } +} diff --git a/composer.json b/composer.json index 0f737f6..bc15748 100644 --- a/composer.json +++ b/composer.json @@ -15,11 +15,16 @@ "license": "BSD-3-Clause", "require": { "dnadesign/silverstripe-elemental": "^4.0", - "sheadawson/silverstripe-linkable": "^2.0" + "dynamic/silverstripe-linkable": "^1.0" }, "require-dev": { "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "*" + "squizlabs/php_codesniffer": "^3.0", + "phpmd/phpmd": "^2.6", + "sebastian/phpcpd": "^3.0", + "phploc/phploc": "^4.0", + "pdepend/pdepend": "^2.5", + "theseer/phpdox": "^0.11.0" }, "config": { "process-timeout": 600 diff --git a/docs/en/index.md b/docs/en/index.md deleted file mode 100644 index 6f69326..0000000 --- a/docs/en/index.md +++ /dev/null @@ -1,5 +0,0 @@ -# silverstripe-elemental-oembed - -A block to embed media from other websites via oEmbed - -## Getting started diff --git a/docs/en/userguide/index.md b/docs/en/userguide/index.md deleted file mode 100644 index 8c9278f..0000000 --- a/docs/en/userguide/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# User Guide - -This guide provides helpful tips for people using silverstripe-elemental-oembed. diff --git a/phpdox.xml b/phpdox.xml new file mode 100644 index 0000000..cc263d6 --- /dev/null +++ b/phpdox.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +