From 29692b1e5bb61d88a0dd29ddd4693e1b8fbd5756 Mon Sep 17 00:00:00 2001 From: "Stefano D. Mtangoo" Date: Sun, 29 Sep 2024 15:08:59 +0300 Subject: [PATCH] Initial commit --- .editorconfig | 21 +++++ .gitattributes | 39 ++++++++++ .github/CODE_OF_CONDUCT.md | 102 +++++++++++++++++++++++++ .github/ISSUE_TEMPLATE.md | 14 ++++ .github/PULL_REQUEST_TEMPLATE.md | 6 ++ .github/dependabot.yml | 14 ++++ .github/workflows/build.yml | 31 ++++++++ .github/workflows/dependency-check.yml | 33 ++++++++ .github/workflows/static.yml | 31 ++++++++ .gitignore | 24 ++++++ .styleci.yml | 86 +++++++++++++++++++++ LICENSE | 21 +++++ README.md | 53 +++++++++++++ changelog.md | 2 + composer.json | 53 +++++++++++++ docs/README.md | 1 + docs/testing.md | 27 +++++++ infection.json.dist | 16 ++++ phpstan-yii-config.php | 5 ++ phpstan.neon | 21 +++++ phpunit.xml.dist | 24 ++++++ src/Example.php | 13 ++++ tests/ExampleTest.php | 18 +++++ 23 files changed, 655 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .github/CODE_OF_CONDUCT.md create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/dependency-check.yml create mode 100644 .github/workflows/static.yml create mode 100644 .gitignore create mode 100644 .styleci.yml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 changelog.md create mode 100644 composer.json create mode 100644 docs/README.md create mode 100644 docs/testing.md create mode 100644 infection.json.dist create mode 100644 phpstan-yii-config.php create mode 100644 phpstan.neon create mode 100644 phpunit.xml.dist create mode 100644 src/Example.php create mode 100644 tests/ExampleTest.php diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8802775 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +# editorconfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.php] +ij_php_space_before_short_closure_left_parenthesis = false +ij_php_space_after_type_cast = true + +[*.md] +trim_trailing_whitespace = false + +[*.yml] +indent_size = 2 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..65a6a4e --- /dev/null +++ b/.gitattributes @@ -0,0 +1,39 @@ +# Autodetect text files +* text=auto eol=lf + +# ...Unless the name matches the following overriding patterns + +# Definitively text files +*.php text +*.css text +*.js text +*.txt text +*.md text +*.xml text +*.json text +*.bat text +*.sql text +*.yml text + +# Ensure those won't be messed up with +*.png binary +*.jpg binary +*.gif binary +*.ttf binary + +# Avoid merge conflicts in CHANGELOG +# https://about.gitlab.com/2015/02/10/gitlab-reduced-merge-conflicts-by-90-percent-with-changelog-placeholders/ +/CHANGELOG.md merge=union + +# Exclude files from the archive +/.gitattributes export-ignore +/.github export-ignore +/.gitignore export-ignore +/.styleci.yml export-ignore +/codeception.yml export-ignore +/composer-require-checker.json export-ignore +/docs export-ignore +/phpunit.xml.dist export-ignore +/psalm.xml export-ignore +/rector.php export-ignore +/tests export-ignore diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..1946f00 --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,102 @@ +# Code of Conduct + +## Our Pledge + +As contributors and maintainers of this project, and in order to keep community open and welcoming, we ask to +respect all community members. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall community + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery, and sexual attention or advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Enforcement Responsibilities + +Core team members are responsible for clarifying and enforcing our standards of acceptable behavior and will take +appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Core team members have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, +issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for +moderation decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing +the community in public spaces. Examples of representing a project or community include using an official e-mail +address, posting via an official social media account, within project GitHub, official forum or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting core team members. All +complaints will be reviewed and investigated promptly and fairly. + +All core team members are obligated to respect the privacy and security of the reporter of any incident. + +## Enforcement Guidelines + +Core team members will follow these Community Impact Guidelines in determining the consequences for any action they +deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in +the community. + +**Consequence**: A private, written warning from core team members, providing clarity around the nature of the violation +and an explanation of why the behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of actions. + +**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including +unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding +interactions in community spaces as well as external channels like social media. Violating these terms may lead to +a temporary or permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified +period of time. No public or private interaction with the people involved, including unsolicited interaction with those +enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate +behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..7e17783 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,14 @@ +### What steps will reproduce the problem? + +### What is the expected result? + +### What do you get instead? + + +### Additional info + +| Q | A +| ---------------- | --- +| Version | 1.0.? +| PHP version | +| Operating system | diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..cecccf6 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,6 @@ +| Q | A +| ------------- | --- +| Is bugfix? | ✔️/❌ +| New feature? | ✔️/❌ +| Breaks BC? | ✔️/❌ +| Fixed issues | diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..c8150bf --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,14 @@ +version: 2 +updates: + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + + # Maintain dependencies for Composer + - package-ecosystem: "composer" + directory: "/" + schedule: + interval: "daily" + versioning-strategy: increase-if-necessary diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..719d5a9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,31 @@ +on: + pull_request: + paths-ignore: + - 'docs/**' + - 'README.md' + - 'CHANGELOG.md' + - '.gitignore' + - '.gitattributes' + - 'infection.json.dist' + - 'psalm.xml' + + push: + paths-ignore: + - 'docs/**' + - 'README.md' + - 'CHANGELOG.md' + - '.gitignore' + - '.gitattributes' + - 'infection.json.dist' + - 'psalm.xml' + +name: build + +jobs: + phpunit: + uses: yiisoft/actions/.github/workflows/phpunit.yml@master + with: + os: >- + ['ubuntu-latest', 'windows-latest'] + php: >- + ['8.1', '8.2', '8.3'] diff --git a/.github/workflows/dependency-check.yml b/.github/workflows/dependency-check.yml new file mode 100644 index 0000000..b115ab1 --- /dev/null +++ b/.github/workflows/dependency-check.yml @@ -0,0 +1,33 @@ +on: + pull_request: + paths-ignore: + - 'docs/**' + - 'README.md' + - 'CHANGELOG.md' + - '.gitignore' + - '.gitattributes' + - 'infection.json.dist' + - 'phpunit.xml.dist' + - 'psalm.xml' + + push: + paths-ignore: + - 'docs/**' + - 'README.md' + - 'CHANGELOG.md' + - '.gitignore' + - '.gitattributes' + - 'infection.json.dist' + - 'phpunit.xml.dist' + - 'psalm.xml' + +name: Composer require checker + +jobs: + composer-require-checker: + uses: yiisoft/actions/.github/workflows/composer-require-checker.yml@master + with: + os: >- + ['ubuntu-latest'] + php: >- + ['8.1'] diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml new file mode 100644 index 0000000..75a378c --- /dev/null +++ b/.github/workflows/static.yml @@ -0,0 +1,31 @@ +on: + pull_request: + paths-ignore: + - 'docs/**' + - 'README.md' + - 'CHANGELOG.md' + - '.gitignore' + - '.gitattributes' + - 'infection.json.dist' + - 'phpunit.xml.dist' + + push: + paths-ignore: + - 'docs/**' + - 'README.md' + - 'CHANGELOG.md' + - '.gitignore' + - '.gitattributes' + - 'infection.json.dist' + - 'phpunit.xml.dist' + +name: static analysis + +jobs: + phpstan: + uses: php-forge/actions/.github/workflows/phpstan.yml@main + with: + os: >- + ['ubuntu-latest'] + php: >- + ['8.1'] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..33918c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +#code coverage +/code_coverage + +# composer vendor dir +/vendor +/composer.lock + +#node_modules +/node_modules + +# phpstorm project files +.idea + +# phpunit +phpunit.phar +.phpunit.result.cache +.phpunit.cache +phpunit.xlm + +#yii3 config packages +/config/packages + +# windows thumbnail cache +Thumbs.db diff --git a/.styleci.yml b/.styleci.yml new file mode 100644 index 0000000..5b7ddb2 --- /dev/null +++ b/.styleci.yml @@ -0,0 +1,86 @@ +preset: psr12 +risky: true + +version: 8.1 + +finder: + exclude: + - docs + - vendor + +enabled: + - alpha_ordered_traits + - array_indentation + - array_push + - combine_consecutive_issets + - combine_consecutive_unsets + - combine_nested_dirname + - declare_strict_types + - dir_constant + - fully_qualified_strict_types + - function_to_constant + - hash_to_slash_comment + - is_null + - logical_operators + - magic_constant_casing + - magic_method_casing + - method_separation + - modernize_types_casting + - native_function_casing + - native_function_type_declaration_casing + - no_alias_functions + - no_empty_comment + - no_empty_phpdoc + - no_empty_statement + - no_extra_block_blank_lines + - no_short_bool_cast + - no_superfluous_elseif + - no_unneeded_control_parentheses + - no_unneeded_curly_braces + - no_unneeded_final_method + - no_unset_cast + - no_unused_imports + - no_unused_lambda_imports + - no_useless_else + - no_useless_return + - normalize_index_brace + - php_unit_dedicate_assert + - php_unit_dedicate_assert_internal_type + - php_unit_expectation + - php_unit_mock + - php_unit_mock_short_will_return + - php_unit_namespaced + - php_unit_no_expectation_annotation + - phpdoc_no_empty_return + - phpdoc_no_useless_inheritdoc + - phpdoc_order + - phpdoc_property + - phpdoc_scalar + - phpdoc_separation + - phpdoc_singular_inheritdoc + - phpdoc_trim + - phpdoc_trim_consecutive_blank_line_separation + - phpdoc_type_to_var + - phpdoc_types + - phpdoc_types_order + - print_to_echo + - regular_callable_call + - return_assignment + - self_accessor + - self_static_accessor + - set_type_to_cast + - short_array_syntax + - short_list_syntax + - simplified_if_return + - single_quote + - standardize_not_equals + - ternary_to_null_coalescing + - trailing_comma_in_multiline_array + - unalign_double_arrow + - unalign_equals + - empty_loop_body_braces + - integer_literal_case + - union_type_without_spaces + +disabled: + - function_declaration diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d89684f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 yii2-extensions + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..7fc0a59 --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +

+ + + +

Yii2-Template.

+
+

+ +

+ + php-version + + + yii2-version + + + PHPUnit + + + Codecov + + + PHPStan + + + PHPStan level + + + Code style + +

+ +## Requirements + +The minimun version of `PHP` required by this package is `PHP 8.1`. + +For install this package, you need [composer](https://getcomposer.org/). + +## Usage + +[Check the documentation docs](/docs/README.md) to learn about usage. + +## Testing + +[Check the documentation testing](/docs/testing.md) to learn about testing. + +## Our social networks + +[![Twitter](https://img.shields.io/badge/twitter-follow-1DA1F2?logo=twitter&logoColor=1DA1F2&labelColor=555555?style=flat)](https://twitter.com/Terabytesoftw) + +## License + +The MIT License. Please see [License File](LICENSE.md) for more information. diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..9a203e1 --- /dev/null +++ b/changelog.md @@ -0,0 +1,2 @@ +Change Log +========== diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..cd5155d --- /dev/null +++ b/composer.json @@ -0,0 +1,53 @@ +{ + "name": "yii2/template", + "type": "library", + "description": "_____", + "keywords": [ + "_____" + ], + "license": "mit", + "minimum-stability": "dev", + "prefer-stable": true, + "require": { + "php": ">=8.1", + "yiisoft/yii2": "^2.2" + }, + "require-dev": { + "maglnet/composer-require-checker": "^4.6", + "phpunit/phpunit": "^10.2", + "yii2-extensions/phpstan": "dev-main" + }, + "autoload": { + "psr-4": { + "yii\\template\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "yii\\template\\tests\\": "tests" + } + }, + "extra": { + "branch-alias": { + "dev-main": "1.0.x-dev" + } + }, + "config": { + "sort-packages": true, + "allow-plugins": { + "yiisoft/yii2-composer": true + } + }, + "scripts": { + "check-dependencies": "composer-require-checker", + "mutation": "roave-infection-static-analysis-plugin", + "phpstan": "phpstan", + "test": "phpunit" + }, + "repositories": [ + { + "type": "composer", + "url": "https://asset-packagist.org" + } + ] +} diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..d2d3c30 --- /dev/null +++ b/docs/README.md @@ -0,0 +1 @@ +# Your extensions here diff --git a/docs/testing.md b/docs/testing.md new file mode 100644 index 0000000..46a4946 --- /dev/null +++ b/docs/testing.md @@ -0,0 +1,27 @@ +# Testing + +## Checking dependencies + +This package uses [composer-require-checker](https://github.com/maglnet/ComposerRequireChecker) to check if all dependencies are correctly defined in `composer.json`. + +To run the checker, execute the following command: + +```shell +composer run check-dependencies +``` + +## Static analysis + +The code is statically analyzed with [Phpstan](https://phpstan.org/). To run static analysis: + +```shell +composer run phpstan +``` + +## Unit tests + +The code is tested with [PHPUnit](https://phpunit.de/). To run tests: + +``` +composer run test +``` diff --git a/infection.json.dist b/infection.json.dist new file mode 100644 index 0000000..d06b334 --- /dev/null +++ b/infection.json.dist @@ -0,0 +1,16 @@ +{ + "source": { + "directories": [ + "src" + ] + }, + "logs": { + "text": "php:\/\/stderr", + "stryker": { + "report": "main" + } + }, + "mutators": { + "@default": true + } +} diff --git a/phpstan-yii-config.php b/phpstan-yii-config.php new file mode 100644 index 0000000..0dae23d --- /dev/null +++ b/phpstan-yii-config.php @@ -0,0 +1,5 @@ + + + + + tests + + + + + + ./src + + + diff --git a/src/Example.php b/src/Example.php new file mode 100644 index 0000000..067eeb8 --- /dev/null +++ b/src/Example.php @@ -0,0 +1,13 @@ +assertTrue($example->getExample()); + } +}