From abd61d9f85620ce061f14c7c4e5dba03c7dbecb7 Mon Sep 17 00:00:00 2001 From: Brandon Hubbard Date: Tue, 6 Sep 2016 09:58:12 -0700 Subject: [PATCH 1/6] Added CodeClimate Badges --- readme.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 623986a..bc3f298 100644 --- a/readme.md +++ b/readme.md @@ -10,6 +10,10 @@ Automatically create Wayback Machine snapshots of your site when you update your content. +[![Code Climate](https://codeclimate.com/github/MickeyKay/archiver/badges/gpa.svg)](https://codeclimate.com/github/MickeyKay/archiver) +[![Test Coverage](https://codeclimate.com/github/MickeyKay/archiver/badges/coverage.svg)](https://codeclimate.com/github/MickeyKay/archiver/coverage) +[![Issue Count](https://codeclimate.com/github/MickeyKay/archiver/badges/issue_count.svg)](https://codeclimate.com/github/MickeyKay/archiver) + ## Description ## **Like this plugin? Please consider [leaving a 5-star review](https://wordpress.org/support/view/plugin-reviews/archiver).** @@ -90,4 +94,4 @@ Also available via Github: https://github.com/MickeyKay/archiver * Add max archive display count. ### 1.0.0 ### -* First release. \ No newline at end of file +* First release. From 6f71495e07379a05879932bfae00cac52a32b0af Mon Sep 17 00:00:00 2001 From: Brandon Hubbard Date: Tue, 6 Sep 2016 10:01:05 -0700 Subject: [PATCH 2/6] Support for WP Enforcer --- composer.json | 4 +- composer.lock | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++ phpcs.xml | 24 +++++++ 3 files changed, 200 insertions(+), 2 deletions(-) create mode 100644 composer.lock create mode 100644 phpcs.xml diff --git a/composer.json b/composer.json index bf27da3..bb9965b 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { "require": { - + "stevegrunwell/wp-enforcer": "^0.4.1" } -} \ No newline at end of file +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..206d879 --- /dev/null +++ b/composer.lock @@ -0,0 +1,174 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "7c99ecdd7803c7e2a04a1fe83ec8e75b", + "content-hash": "543c2aba3d9898df11f5679e821259a3", + "packages": [ + { + "name": "squizlabs/php_codesniffer", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "571e27b6348e5b3a637b2abc82ac0d01e6d7bbed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/571e27b6348e5b3a637b2abc82ac0d01e6d7bbed", + "reference": "571e27b6348e5b3a637b2abc82ac0d01e6d7bbed", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "bin": [ + "scripts/phpcs", + "scripts/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "classmap": [ + "CodeSniffer.php", + "CodeSniffer/CLI.php", + "CodeSniffer/Exception.php", + "CodeSniffer/File.php", + "CodeSniffer/Fixer.php", + "CodeSniffer/Report.php", + "CodeSniffer/Reporting.php", + "CodeSniffer/Sniff.php", + "CodeSniffer/Tokens.php", + "CodeSniffer/Reports/", + "CodeSniffer/Tokenizers/", + "CodeSniffer/DocGenerators/", + "CodeSniffer/Standards/AbstractPatternSniff.php", + "CodeSniffer/Standards/AbstractScopeSniff.php", + "CodeSniffer/Standards/AbstractVariableSniff.php", + "CodeSniffer/Standards/IncorrectPatternException.php", + "CodeSniffer/Standards/Generic/Sniffs/", + "CodeSniffer/Standards/MySource/Sniffs/", + "CodeSniffer/Standards/PEAR/Sniffs/", + "CodeSniffer/Standards/PSR1/Sniffs/", + "CodeSniffer/Standards/PSR2/Sniffs/", + "CodeSniffer/Standards/Squiz/Sniffs/", + "CodeSniffer/Standards/Zend/Sniffs/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2016-09-01 23:53:02" + }, + { + "name": "stevegrunwell/wp-enforcer", + "version": "0.4.1", + "source": { + "type": "git", + "url": "https://github.com/stevegrunwell/wp-enforcer.git", + "reference": "3aea90cb0a8bbd89f1fbbba042ed025a4674c640" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stevegrunwell/wp-enforcer/zipball/3aea90cb0a8bbd89f1fbbba042ed025a4674c640", + "reference": "3aea90cb0a8bbd89f1fbbba042ed025a4674c640", + "shasum": "" + }, + "require": { + "wp-coding-standards/wpcs": "0.8.0" + }, + "bin": [ + "bin/wp-enforcer" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Steve Grunwell", + "email": "steve@stevegrunwell.com", + "homepage": "https://stevegrunwell.com" + } + ], + "description": "Git hooks to encourage well-written WordPress.", + "keywords": [ + "PHP_CodeSniffer", + "coding standards", + "git hooks", + "wordpress" + ], + "time": "2016-01-06 20:19:11" + }, + { + "name": "wp-coding-standards/wpcs", + "version": "0.8.0", + "source": { + "type": "git", + "url": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git", + "reference": "b3d4d8eedd8b0b7f4fdf8764df1c8b23ff099334" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WordPress-Coding-Standards/WordPress-Coding-Standards/zipball/b3d4d8eedd8b0b7f4fdf8764df1c8b23ff099334", + "reference": "b3d4d8eedd8b0b7f4fdf8764df1c8b23ff099334", + "shasum": "" + }, + "require": { + "squizlabs/php_codesniffer": "~2.2" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions", + "keywords": [ + "phpcs", + "standards", + "wordpress" + ], + "time": "2015-10-02 22:20:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..563f72e --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,24 @@ + + + + Coding standards from WP Enforcer. + + + + */tests/* + */vendor/* + + + + 0 + + + + + \ No newline at end of file From 460266c26de8e96de3bb44c112db84e446657933 Mon Sep 17 00:00:00 2001 From: Brandon Hubbard Date: Tue, 6 Sep 2016 10:29:00 -0700 Subject: [PATCH 3/6] Fixes with phpcbf --- includes/class-archiver-i18n.php | 3 +-- includes/class-archiver.php | 19 ++++++++----------- includes/index.php | 2 +- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/includes/class-archiver-i18n.php b/includes/class-archiver-i18n.php index bf11163..795008a 100644 --- a/includes/class-archiver-i18n.php +++ b/includes/class-archiver-i18n.php @@ -54,10 +54,9 @@ public function load_plugin_textdomain() { * Set the domain equal to that of the specified domain. * * @since 1.0.0 - * @param string $domain The domain that represents the locale of this plugin. + * @param string $domain The domain that represents the locale of this plugin. */ public function set_domain( $domain ) { $this->domain = $domain; } - } diff --git a/includes/class-archiver.php b/includes/class-archiver.php index 3d748bc..f6e4516 100644 --- a/includes/class-archiver.php +++ b/includes/class-archiver.php @@ -387,7 +387,7 @@ public function add_term_meta_box() { $taxonomies = apply_filters( 'archiver_taxonomies', get_taxonomies() ); $archiver_taxonomy_slugs = array_map( - create_function( '$taxonomy', 'return "archiver-" . $taxonomy;'), + create_function( '$taxonomy', 'return "archiver-" . $taxonomy;' ), $taxonomies ); @@ -416,7 +416,6 @@ public function output_term_meta_box() { $object_type = get_current_screen()->taxonomy; $this->output_manual_meta_box( $object_type ); - } /** @@ -490,7 +489,7 @@ public function output_archiver_metabox() { echo '
    '; - foreach( $snapshots as $snapshot ) { + foreach ( $snapshots as $snapshot ) { // Convert to Y-m-d H:i:s format for get_date_from_gmt(). $date_time = date( 'Y-m-d H:i:s', strtotime( $snapshot['timestamp'] ) ); @@ -548,7 +547,7 @@ public function add_admin_bar_links( $wp_admin_bar ) { 'href' => $archive_link, 'meta' => array( 'target' => '_blank', - ) + ), ) ); $wp_admin_bar->add_node( array( @@ -558,7 +557,7 @@ public function add_admin_bar_links( $wp_admin_bar ) { 'href' => $archive_link, 'meta' => array( 'target' => '_blank', - ) + ), ) ); $wp_admin_bar->add_node( array( @@ -586,7 +585,7 @@ public function get_post_snapshots( $url = '' ) { $fetch_url = add_query_arg( array( 'url' => $url, 'output' => 'json', - ), $this->wayback_machine_url_fetch_archives ); + ), $this->wayback_machine_url_fetch_archives ); $response = wp_remote_get( $fetch_url ); @@ -612,7 +611,7 @@ public function get_post_snapshots( $url = '' ) { // Set up snapshots. $snapshots = array(); - foreach( $data as $snapshot ) { + foreach ( $data as $snapshot ) { $keyed_snapshot = array(); @@ -649,7 +648,6 @@ public function get_current_permalink() { } else { $this->current_permalink = $this->get_current_permalink_public(); } - } /** @@ -678,7 +676,7 @@ public function get_current_permalink_admin() { $object_type = $current_screen->base; // Generate permalink based on current object type. - switch( $object_type ) { + switch ( $object_type ) { // Post. case 'post': @@ -827,10 +825,9 @@ public function do_admin_notice_disabled() { } $class = 'archiver-notice notice notice-error is-dismissible'; - $message = __( "Archiver is currently disabled via the archiver_can_run filter.", 'archiver' ); + $message = __( 'Archiver is currently disabled via the archiver_can_run filter.', 'archiver' ); printf( '

    %s

    ', $id, $class, $message ); } - } diff --git a/includes/index.php b/includes/index.php index e71af0e..8142269 100644 --- a/includes/index.php +++ b/includes/index.php @@ -1 +1 @@ - Date: Tue, 6 Sep 2016 10:29:10 -0700 Subject: [PATCH 4/6] Default WordPress editorconfig --- .editorconfig | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..c951f00 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +# This file is for unifying the coding style for different editors and IDEs +# editorconfig.org + +# WordPress Coding Standards +# https://make.wordpress.org/core/handbook/coding-standards/ + +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = tab + +[{.jshintrc,*.json,*.yml}] +indent_style = space +indent_size = 2 + +[{*.txt,wp-config-sample.php}] +end_of_line = crlf \ No newline at end of file From c256e4a4dac1df4f06b2fe6fd0bac717bf963db3 Mon Sep 17 00:00:00 2001 From: Brandon Hubbard Date: Tue, 6 Sep 2016 10:31:40 -0700 Subject: [PATCH 5/6] Code Climate config files --- .codeclimate.yml | 62 ++++++++++++++ .csslintrc | 2 + .eslintignore | 1 + .eslintrc | 213 +++++++++++++++++++++++++++++++++++++++++++++++ .jshintrc | 26 ++++++ 5 files changed, 304 insertions(+) create mode 100644 .codeclimate.yml create mode 100644 .csslintrc create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .jshintrc diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 0000000..7f236a6 --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,62 @@ +--- +engines: + csslint: + enabled: true + duplication: + enabled: true + config: + languages: + - javascript + - php + fixme: + enabled: true + phpcodesniffer: + enabled: true + config: + standard: "WordPress-Core,WordPress-Docs,WordPress-Extra" + phpmd: + enabled: true + checks: + Controversial/CamelCaseParameterName: + enabled: false + Controversial/CamelCaseMethodName: + enabled: false + Controversial/CamelCasePropertyName: + enabled: false + Controversial/CamelCaseVariableName: + enabled: false + CleanCode/ElseExpression: + enabled: false + eslint: + enabled: true + channel: "eslint-2" + scss-lint: + enabled: true + markdownlint: + enabled: true +ratings: + paths: + - "**.css" + - "**.scss" + - "**.inc" + - "**.js" + - "**.jsx" + - "**.module" + - "**.php" + - "**.md" + - "**.py" + - "**.rb" +exclude_paths: + - "**.png" + - "**.jpg" + - "**.gif" + - "gulpfile.js" + - "composer.lock" + - "phpcs.xml" + - "**.json" + - "**.pot" + - "**.txt" + - "**-min.js" + - "**-min.css" + - "**.dist" + - "**.sh" diff --git a/.csslintrc b/.csslintrc new file mode 100644 index 0000000..aacba95 --- /dev/null +++ b/.csslintrc @@ -0,0 +1,2 @@ +--exclude-exts=.min.css +--ignore=adjoining-classes,box-model,ids,order-alphabetical,unqualified-attributes diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..96212a3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +**/*{.,-}min.js diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..30a6086 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,213 @@ +ecmaFeatures: + modules: true + jsx: true + +env: + amd: true + browser: true + es6: true + jquery: true + node: true + +# http://eslint.org/docs/rules/ +rules: + # Possible Errors + comma-dangle: [2, never] + no-cond-assign: 2 + no-console: 0 + no-constant-condition: 2 + no-control-regex: 2 + no-debugger: 2 + no-dupe-args: 2 + no-dupe-keys: 2 + no-duplicate-case: 2 + no-empty: 2 + no-empty-character-class: 2 + no-ex-assign: 2 + no-extra-boolean-cast: 2 + no-extra-parens: 0 + no-extra-semi: 2 + no-func-assign: 2 + no-inner-declarations: [2, functions] + no-invalid-regexp: 2 + no-irregular-whitespace: 2 + no-negated-in-lhs: 2 + no-obj-calls: 2 + no-regex-spaces: 2 + no-sparse-arrays: 2 + no-unexpected-multiline: 2 + no-unreachable: 2 + use-isnan: 2 + valid-jsdoc: 0 + valid-typeof: 2 + + # Best Practices + accessor-pairs: 2 + block-scoped-var: 0 + complexity: [2, 6] + consistent-return: 0 + curly: 0 + default-case: 0 + dot-location: 0 + dot-notation: 0 + eqeqeq: 2 + guard-for-in: 2 + no-alert: 2 + no-caller: 2 + no-case-declarations: 2 + no-div-regex: 2 + no-else-return: 0 + #no-empty-label: 2 + no-empty-pattern: 2 + no-eq-null: 2 + no-eval: 2 + no-extend-native: 2 + no-extra-bind: 2 + no-fallthrough: 2 + no-floating-decimal: 0 + no-implicit-coercion: 0 + no-implied-eval: 2 + no-invalid-this: 0 + no-iterator: 2 + no-labels: 0 + no-lone-blocks: 2 + no-loop-func: 2 + no-magic-number: 0 + no-multi-spaces: 0 + no-multi-str: 0 + no-native-reassign: 2 + no-new-func: 2 + no-new-wrappers: 2 + no-new: 2 + no-octal-escape: 2 + no-octal: 2 + no-proto: 2 + no-redeclare: 2 + no-return-assign: 2 + no-script-url: 2 + no-self-compare: 2 + no-sequences: 0 + no-throw-literal: 0 + no-unused-expressions: 2 + no-useless-call: 2 + no-useless-concat: 2 + no-void: 2 + no-warning-comments: 0 + no-with: 2 + radix: 2 + vars-on-top: 0 + wrap-iife: 2 + yoda: 0 + + # Strict + strict: 0 + + # Variables + init-declarations: 0 + no-catch-shadow: 2 + no-delete-var: 2 + no-label-var: 2 + no-shadow-restricted-names: 2 + no-shadow: 0 + no-undef-init: 2 + no-undef: 0 + no-undefined: 0 + no-unused-vars: 0 + no-use-before-define: 0 + + # Node.js and CommonJS + callback-return: 2 + global-require: 2 + handle-callback-err: 2 + no-mixed-requires: 0 + no-new-require: 0 + no-path-concat: 2 + no-process-exit: 2 + no-restricted-modules: 0 + no-sync: 0 + + # Stylistic Issues + array-bracket-spacing: 0 + block-spacing: 0 + brace-style: 0 + camelcase: 0 + comma-spacing: 0 + comma-style: 0 + computed-property-spacing: 0 + consistent-this: 0 + eol-last: 0 + func-names: 0 + func-style: 0 + id-length: 0 + id-match: 0 + indent: 0 + jsx-quotes: 0 + key-spacing: 0 + linebreak-style: 0 + lines-around-comment: 0 + max-depth: 0 + max-len: 0 + max-nested-callbacks: 0 + max-params: 0 + max-statements: [2, 30] + new-cap: 0 + new-parens: 0 + newline-after-var: 0 + no-array-constructor: 0 + no-bitwise: 0 + no-continue: 0 + no-inline-comments: 0 + no-lonely-if: 0 + no-mixed-spaces-and-tabs: 0 + no-multiple-empty-lines: 0 + no-negated-condition: 0 + no-nested-ternary: 0 + no-new-object: 0 + no-plusplus: 0 + no-restricted-syntax: 0 + no-spaced-func: 0 + no-ternary: 0 + no-trailing-spaces: 0 + no-underscore-dangle: 0 + no-unneeded-ternary: 0 + object-curly-spacing: 0 + one-var: 0 + operator-assignment: 0 + operator-linebreak: 0 + padded-blocks: 0 + quote-props: 0 + quotes: 0 + require-jsdoc: 0 + semi-spacing: 0 + semi: 0 + sort-vars: 0 + space-after-keywords: 0 + space-before-blocks: 0 + space-before-function-paren: 0 + space-before-keywords: 0 + space-in-parens: 0 + space-infix-ops: 0 + space-return-throw-case: 0 + space-unary-ops: 0 + spaced-comment: 0 + wrap-regex: 0 + + # ECMAScript 6 + arrow-body-style: 0 + arrow-parens: 0 + arrow-spacing: 0 + constructor-super: 0 + generator-star-spacing: 0 + no-arrow-condition: 0 + no-class-assign: 0 + no-const-assign: 0 + no-dupe-class-members: 0 + no-this-before-super: 0 + no-var: 0 + object-shorthand: 0 + prefer-arrow-callback: 0 + prefer-const: 0 + prefer-reflect: 0 + prefer-spread: 0 + prefer-template: 0 + require-yield: 0 diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..012652e --- /dev/null +++ b/.jshintrc @@ -0,0 +1,26 @@ +{ + "boss": true, + "curly": true, + "eqeqeq": true, + "eqnull": true, + "es3": true, + "expr": true, + "immed": true, + "noarg": true, + "nonbsp": true, + "onevar": true, + "quotmark": "single", + "trailing": true, + "undef": true, + "unused": true, + + "browser": true, + + "globals": { + "_": false, + "Backbone": false, + "jQuery": false, + "JSON": false, + "wp": false + } +} From 344c1a2a354ed7dfd3c072e505099bcbe3ca5a5e Mon Sep 17 00:00:00 2001 From: Brandon Hubbard Date: Tue, 6 Sep 2016 10:43:49 -0700 Subject: [PATCH 6/6] More phpcs fixes --- includes/class-archiver-i18n.php | 1 - includes/class-archiver.php | 12 ++++++++---- includes/index.php | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/includes/class-archiver-i18n.php b/includes/class-archiver-i18n.php index 795008a..94ec1e2 100644 --- a/includes/class-archiver-i18n.php +++ b/includes/class-archiver-i18n.php @@ -1,5 +1,4 @@ '; @@ -589,7 +593,7 @@ public function get_post_snapshots( $url = '' ) { $response = wp_remote_get( $fetch_url ); - if ( 200 == wp_remote_retrieve_response_code( $response ) ) { + if ( 200 === wp_remote_retrieve_response_code( $response ) ) { $data = json_decode( $response['body'] ); diff --git a/includes/index.php b/includes/index.php index 8142269..49d255d 100644 --- a/includes/index.php +++ b/includes/index.php @@ -1 +1 @@ -