Skip to content
This repository has been archived by the owner on Oct 24, 2023. It is now read-only.

Commit

Permalink
addded gh actions and code styles (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinpapst authored Dec 4, 2020
1 parent 12112a9 commit a0c53d4
Show file tree
Hide file tree
Showing 10 changed files with 247 additions and 16 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/linting.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: CI
on:
pull_request: null
push:
branches:
- master
jobs:
tests:
runs-on: ubuntu-latest
strategy:
matrix:
php: ['7.2', '7.3', '7.4']

name: Linting - PHP ${{ matrix.php }}
steps:
- uses: actions/checkout@v2
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: none
extensions: intl
- run: composer install --no-progress
- run: composer validate
- run: composer codestyle-check
- run: composer phpstan
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.gitignore
.idea

/vendor/
.php_cs.cache
composer.lock
vendor/
155 changes: 155 additions & 0 deletions .php_cs.dist
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
<?php

$fileHeaderComment = <<<COMMENT
This file is part of the RecalculateRatesBundle for Kimai 2.
All rights reserved by Kevin Papst (www.keleo.de).
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
COMMENT;

return PhpCsFixer\Config::create()
->setRiskyAllowed(true)
->setRules([
'encoding' => true,
'full_opening_tag' => true,
'blank_line_after_namespace' => true,
'braces' => true,
'class_definition' => true,
'elseif' => true,
'function_declaration' => true,
'indentation_type' => true,
'line_ending' => true,
'lowercase_constants' => true,
'lowercase_keywords' => true,
'method_argument_space' => ['on_multiline' => 'ensure_fully_multiline'],
'header_comment' => ['header' => $fileHeaderComment, 'separate' => 'both'],
'no_php4_constructor' => true,
'ordered_imports' => true,
'no_break_comment' => true,
'no_closing_tag' => true,
'no_spaces_after_function_name' => true,
'no_spaces_inside_parenthesis' => true,
'no_trailing_whitespace' => true,
'no_trailing_whitespace_in_comment' => true,
'single_blank_line_at_eof' => true,
'single_class_element_per_statement' => ['elements' => ['property']],
'single_import_per_statement' => true,
'single_line_after_imports' => true,
'switch_case_semicolon_to_colon' => true,
'switch_case_space' => true,
'array_syntax' => [
'syntax' => 'short'
],
'binary_operator_spaces' => true,
'blank_line_after_opening_tag' => true,
'blank_line_before_statement' => [
'statements' => ['return'],
],
'cast_spaces' => true,
'class_attributes_separation' => ['elements' => ['method']],
'concat_space' => ['spacing' => 'one'],
'declare_equal_normalize' => true,
'function_typehint_space' => true,
'include' => true,
'lowercase_cast' => true,
'lowercase_static_reference' => true,
'magic_constant_casing' => true,
'native_function_casing' => true,
'new_with_braces' => true,
'no_blank_lines_after_class_opening' => true,
'no_blank_lines_after_phpdoc' => true,
'no_empty_comment' => true,
'no_empty_phpdoc' => true,
'no_empty_statement' => true,
'no_extra_blank_lines' => ['tokens' => [
'curly_brace_block',
'extra',
'parenthesis_brace_block',
'square_brace_block',
'throw',
'use',
]],
'no_leading_import_slash' => true,
'no_leading_namespace_whitespace' => true,
'no_mixed_echo_print' => ['use' => 'echo'],
'no_multiline_whitespace_around_double_arrow' => true,
'no_short_bool_cast' => true,
'no_singleline_whitespace_before_semicolons' => true,
'no_spaces_around_offset' => true,
'no_trailing_comma_in_list_call' => true,
'no_trailing_comma_in_singleline_array' => true,
'no_unneeded_curly_braces' => true,
'no_unneeded_final_method' => true,
'no_unused_imports' => true,
'no_whitespace_before_comma_in_array' => true,
'no_whitespace_in_blank_line' => true,
'normalize_index_brace' => true,
'object_operator_without_whitespace' => true,
'php_unit_fqcn_annotation' => true,
'phpdoc_align' => [
'align' => 'left',
'tags' => [
'method',
'param',
'property',
'return',
'throws',
'type',
'var',
],
],
'phpdoc_annotation_without_dot' => true,
'phpdoc_indent' => true,
'phpdoc_inline_tag' => true,
'phpdoc_no_access' => true,
'phpdoc_no_alias_tag' => true,
'phpdoc_no_package' => true,
'phpdoc_no_useless_inheritdoc' => true,
'phpdoc_return_self_reference' => true,
'phpdoc_scalar' => true,
'phpdoc_separation' => false,
'phpdoc_single_line_var_spacing' => true,
'phpdoc_summary' => false,
'phpdoc_to_comment' => true,
'phpdoc_trim' => true,
'phpdoc_types' => true,
'phpdoc_var_without_name' => true,
'protected_to_private' => true,
'return_type_declaration' => true,
'semicolon_after_instruction' => true,
'short_scalar_cast' => true,
'single_blank_line_before_namespace' => true,
'single_line_comment_style' => [
'comment_types' => ['hash'],
],
'single_quote' => true,
'space_after_semicolon' => [
'remove_in_empty_for_expressions' => true,
],
'standardize_increment' => true,
'standardize_not_equals' => true,
'ternary_operator_spaces' => true,
'trailing_comma_in_multiline_array' => false,
'trim_array_spaces' => true,
'unary_operator_spaces' => true,
'whitespace_after_comma_in_array' => true,
'yoda_style' => false,
'ternary_to_null_coalescing' => true,
'visibility_required' => ['elements' => [
'const',
'method',
'property',
]],
])
->setFinder(
PhpCsFixer\Finder::create()
->in([
__DIR__
])->exclude([
__DIR__ . '/Resources/',
__DIR__ . '/vendor/',
])
)
->setFormat('checkstyle')
;
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## 0.2 (unreleased)

- Added GitHub actions for basic CI
- Code Styles

Compatible with Kimai 0.9

## 0.1

Initial release.
Expand Down
9 changes: 8 additions & 1 deletion DependencyInjection/RecalculateRatesExtension.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<?php

/*
* This file is part of the Kimai RecalculateRatesBundle.
* This file is part of the RecalculateRatesBundle for Kimai 2.
* All rights reserved by Kevin Papst (www.keleo.de).
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
Expand All @@ -16,6 +17,12 @@

class RecalculateRatesExtension extends Extension
{
/**
* @param array $configs
* @param ContainerBuilder $container
* @return void
* @throws \Exception
*/
public function load(array $configs, ContainerBuilder $container)
{
if ('test' === $container->getParameter('kernel.environment')) {
Expand Down
4 changes: 2 additions & 2 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2019 Kevin Papst - https://www.kevinpapst.de
Copyright (c) Kevin Papst - https://www.keleo.de

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand All @@ -18,4 +18,4 @@ 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.
SOFTWARE.
3 changes: 2 additions & 1 deletion RecalculateRatesBundle.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<?php

/*
* This file is part of the Kimai RecalculateRatesBundle.
* This file is part of the RecalculateRatesBundle for Kimai 2.
* All rights reserved by Kevin Papst (www.keleo.de).
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
Expand Down
12 changes: 6 additions & 6 deletions Timesheet/Calculator/RecalculateRateCalculator.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<?php

/*
* This file is part of the Kimai RecalculateRatesBundle.
* This file is part of the RecalculateRatesBundle for Kimai 2.
* All rights reserved by Kevin Papst (www.keleo.de).
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
Expand All @@ -13,12 +14,9 @@
use App\Timesheet\Calculator\RateCalculator;
use App\Timesheet\CalculatorInterface;

class RecalculateRateCalculator implements CalculatorInterface
final class RecalculateRateCalculator implements CalculatorInterface
{
/**
* @var RateCalculator
*/
protected $calculator;
private $calculator;

public function __construct(RateCalculator $calculator)
{
Expand All @@ -27,12 +25,14 @@ public function __construct(RateCalculator $calculator)

/**
* @param Timesheet $record
* @return void
*/
public function calculate(Timesheet $record)
{
if (null !== $record->getHourlyRate()) {
$record->setHourlyRate(null);
}

if (null !== $record->getFixedRate()) {
$record->setFixedRate(null);
}
Expand Down
31 changes: 27 additions & 4 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@
"description": "A Kimai 2 plugin, which forces to recalculate the hourly/fixed rate on every timesheet update.",
"homepage": "https://www.kimai.org/store/recalculate-rates-bundle.html",
"type": "kimai-plugin",
"require": {
"kimai/kimai2-composer": "*"
},
"version": "0.2",
"keywords": [
"kimai",
"kimai-plugin"
Expand All @@ -21,8 +19,33 @@
"extra": {
"kimai": {
"require": "0.9",
"version": "0.1",
"version": "0.2",
"name": "RecalculateRatesBundle"
}
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"scripts": {
"codestyle": "vendor/bin/php-cs-fixer fix --dry-run --verbose --show-progress=none",
"codestyle-fix": "vendor/bin/php-cs-fixer fix",
"codestyle-check": "vendor/bin/php-cs-fixer fix --dry-run --verbose --config=.php_cs.dist --using-cache=no --show-progress=none --format=checkstyle",
"phpstan": "vendor/bin/phpstan analyse . -c phpstan.neon --level=7",
"linting": [
"composer validate",
"@codestyle-check",
"@phpstan"
]
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.15",
"kevinpapst/kimai2": "1.11",
"phpstan/phpstan": "^0.12",
"phpstan/phpstan-symfony": "^0.12",
"symfony/console": "^4.0",
"symfony/event-dispatcher": "^4.0"
}
}
11 changes: 11 additions & 0 deletions phpstan.neon
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
includes:
- vendor/phpstan/phpstan-symfony/extension.neon
- vendor/phpstan/phpstan-symfony/rules.neon

parameters:
excludes_analyse:
- vendor/
treatPhpDocTypesAsCertain: false
inferPrivatePropertyTypeFromConstructor: true
checkMissingIterableValueType: false
checkGenericClassInNonGenericObjectType: false

0 comments on commit a0c53d4

Please sign in to comment.