diff --git a/bin/console b/bin/console index f8daf5e7..f9e652f5 100755 --- a/bin/console +++ b/bin/console @@ -44,7 +44,7 @@ return (static function () { new ValidatorChangelogLinter(), ))); $application->addCommand(new LintMixinCommand($differ)); - $application->addCommand(new LintSpdxCommand()); + $application->addCommand(new LintSpdxCommand($differ)); $application->addCommand(new UpdateDomainSuffixesCommand($dataSaver)); $application->addCommand(new UpdateDomainToplevelCommand($dataSaver)); $application->addCommand(new UpdatePostalCodesCommand($dataSaver)); diff --git a/docs/case-sensitiveness.md b/docs/case-sensitiveness.md index 0bc5e631..de38b747 100644 --- a/docs/case-sensitiveness.md +++ b/docs/case-sensitiveness.md @@ -1,6 +1,6 @@ # Case Insensitive Validation diff --git a/docs/comparable-values.md b/docs/comparable-values.md index 2b6322a0..c034ea82 100644 --- a/docs/comparable-values.md +++ b/docs/comparable-values.md @@ -1,6 +1,6 @@ # Comparable values diff --git a/docs/comparing-empty-values.md b/docs/comparing-empty-values.md index e1f6cedc..08bb883d 100644 --- a/docs/comparing-empty-values.md +++ b/docs/comparing-empty-values.md @@ -1,6 +1,6 @@ # Comparing empty values diff --git a/docs/custom-validators.md b/docs/custom-validators.md index 009c967c..b375287f 100644 --- a/docs/custom-validators.md +++ b/docs/custom-validators.md @@ -1,6 +1,6 @@ # Custom validators diff --git a/docs/feature-guide.md b/docs/feature-guide.md index 1142b512..c07a8129 100644 --- a/docs/feature-guide.md +++ b/docs/feature-guide.md @@ -1,6 +1,6 @@ # Feature Guide diff --git a/docs/getting-started.md b/docs/getting-started.md index 8b1fc955..ec6c871a 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,6 +1,6 @@ # Getting Started diff --git a/docs/handling-exceptions.md b/docs/handling-exceptions.md index 043214fc..1996fe38 100644 --- a/docs/handling-exceptions.md +++ b/docs/handling-exceptions.md @@ -1,6 +1,6 @@ # Handling exceptions diff --git a/docs/handling-results.md b/docs/handling-results.md index ebae4331..774e9add 100644 --- a/docs/handling-results.md +++ b/docs/handling-results.md @@ -1,6 +1,6 @@ # Handling results diff --git a/docs/index.md b/docs/index.md index 8d9efbb3..75e7b3b1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ # Overview diff --git a/docs/messages/placeholder-conversion.md b/docs/messages/placeholder-conversion.md index 9585fa3a..792fd9e9 100644 --- a/docs/messages/placeholder-conversion.md +++ b/docs/messages/placeholder-conversion.md @@ -1,6 +1,6 @@ # Message placeholder conversion diff --git a/docs/messages/placeholder-pipes.md b/docs/messages/placeholder-pipes.md index 27c49f8a..79c543c0 100644 --- a/docs/messages/placeholder-pipes.md +++ b/docs/messages/placeholder-pipes.md @@ -1,6 +1,6 @@ # Placeholder Pipes diff --git a/docs/messages/translation.md b/docs/messages/translation.md index 5e5ee343..2181431f 100644 --- a/docs/messages/translation.md +++ b/docs/messages/translation.md @@ -1,6 +1,6 @@ # Message translation diff --git a/docs/migrating-from-v2-to-v3.md b/docs/migrating-from-v2-to-v3.md index 9d971b64..1279a3c0 100644 --- a/docs/migrating-from-v2-to-v3.md +++ b/docs/migrating-from-v2-to-v3.md @@ -1,6 +1,6 @@ # Migrating from v2.x to v3.x diff --git a/docs/prefixes.md b/docs/prefixes.md index 2042a5cd..9b142312 100644 --- a/docs/prefixes.md +++ b/docs/prefixes.md @@ -1,6 +1,6 @@ # Prefixes diff --git a/docs/validators.md b/docs/validators.md index c8a2559f..f0179b97 100644 --- a/docs/validators.md +++ b/docs/validators.md @@ -1,6 +1,6 @@ # Validators diff --git a/docs/validators/After.md b/docs/validators/After.md index 7fc9540d..f0d6108c 100644 --- a/docs/validators/After.md +++ b/docs/validators/After.md @@ -1,6 +1,6 @@ # After diff --git a/docs/validators/All.md b/docs/validators/All.md index f2e04d6c..26955d1c 100644 --- a/docs/validators/All.md +++ b/docs/validators/All.md @@ -1,6 +1,6 @@ # All diff --git a/docs/validators/AllOf.md b/docs/validators/AllOf.md index fa5aaf9b..ca5f601b 100644 --- a/docs/validators/AllOf.md +++ b/docs/validators/AllOf.md @@ -1,6 +1,6 @@ # AllOf diff --git a/docs/validators/Alnum.md b/docs/validators/Alnum.md index 9e9aa99f..64cbb359 100644 --- a/docs/validators/Alnum.md +++ b/docs/validators/Alnum.md @@ -1,6 +1,6 @@ # Alnum diff --git a/docs/validators/Alpha.md b/docs/validators/Alpha.md index f96721cb..0ac3dd72 100644 --- a/docs/validators/Alpha.md +++ b/docs/validators/Alpha.md @@ -1,6 +1,6 @@ # Alpha diff --git a/docs/validators/AlwaysInvalid.md b/docs/validators/AlwaysInvalid.md index 7b470e3d..9591764a 100644 --- a/docs/validators/AlwaysInvalid.md +++ b/docs/validators/AlwaysInvalid.md @@ -1,6 +1,6 @@ # AlwaysInvalid diff --git a/docs/validators/AlwaysValid.md b/docs/validators/AlwaysValid.md index e2746e7f..e597da8b 100644 --- a/docs/validators/AlwaysValid.md +++ b/docs/validators/AlwaysValid.md @@ -1,6 +1,6 @@ # AlwaysValid diff --git a/docs/validators/AnyOf.md b/docs/validators/AnyOf.md index dbad4db7..f23c5b85 100644 --- a/docs/validators/AnyOf.md +++ b/docs/validators/AnyOf.md @@ -1,6 +1,6 @@ # AnyOf diff --git a/docs/validators/ArrayType.md b/docs/validators/ArrayType.md index 414c26cc..3982ba70 100644 --- a/docs/validators/ArrayType.md +++ b/docs/validators/ArrayType.md @@ -1,6 +1,6 @@ # ArrayType diff --git a/docs/validators/ArrayVal.md b/docs/validators/ArrayVal.md index 2d004039..3d684ec4 100644 --- a/docs/validators/ArrayVal.md +++ b/docs/validators/ArrayVal.md @@ -1,6 +1,6 @@ # ArrayVal diff --git a/docs/validators/Attributes.md b/docs/validators/Attributes.md index f99a49c5..f2011308 100644 --- a/docs/validators/Attributes.md +++ b/docs/validators/Attributes.md @@ -1,6 +1,6 @@ # Attributes diff --git a/docs/validators/Base.md b/docs/validators/Base.md index 709ebeb2..fe1d8c0a 100644 --- a/docs/validators/Base.md +++ b/docs/validators/Base.md @@ -1,6 +1,6 @@ # Base diff --git a/docs/validators/Base64.md b/docs/validators/Base64.md index 80a5a46e..7013dcf0 100644 --- a/docs/validators/Base64.md +++ b/docs/validators/Base64.md @@ -1,6 +1,6 @@ # Base64 diff --git a/docs/validators/Between.md b/docs/validators/Between.md index 21dcbce4..ad8a2564 100644 --- a/docs/validators/Between.md +++ b/docs/validators/Between.md @@ -1,6 +1,6 @@ # Between diff --git a/docs/validators/BetweenExclusive.md b/docs/validators/BetweenExclusive.md index 860056fd..899de85e 100644 --- a/docs/validators/BetweenExclusive.md +++ b/docs/validators/BetweenExclusive.md @@ -1,6 +1,6 @@ # BetweenExclusive diff --git a/docs/validators/Blank.md b/docs/validators/Blank.md index f9740fc5..94aaf1b0 100644 --- a/docs/validators/Blank.md +++ b/docs/validators/Blank.md @@ -1,6 +1,6 @@ # Blank diff --git a/docs/validators/BoolType.md b/docs/validators/BoolType.md index a1bc1b56..5bd8e37a 100644 --- a/docs/validators/BoolType.md +++ b/docs/validators/BoolType.md @@ -1,6 +1,6 @@ # BoolType diff --git a/docs/validators/BoolVal.md b/docs/validators/BoolVal.md index 1a9c7d93..65ed66fa 100644 --- a/docs/validators/BoolVal.md +++ b/docs/validators/BoolVal.md @@ -1,6 +1,6 @@ # BoolVal diff --git a/docs/validators/Bsn.md b/docs/validators/Bsn.md index 1ab7dc8e..3ff44718 100644 --- a/docs/validators/Bsn.md +++ b/docs/validators/Bsn.md @@ -1,6 +1,6 @@ # Bsn diff --git a/docs/validators/CallableType.md b/docs/validators/CallableType.md index c08e080c..277f954c 100644 --- a/docs/validators/CallableType.md +++ b/docs/validators/CallableType.md @@ -1,6 +1,6 @@ # CallableType diff --git a/docs/validators/Charset.md b/docs/validators/Charset.md index 3fcdbe36..139d2a22 100644 --- a/docs/validators/Charset.md +++ b/docs/validators/Charset.md @@ -1,6 +1,6 @@ # Charset diff --git a/docs/validators/Circuit.md b/docs/validators/Circuit.md index f0633887..e7b0da14 100644 --- a/docs/validators/Circuit.md +++ b/docs/validators/Circuit.md @@ -1,6 +1,6 @@ # Circuit diff --git a/docs/validators/Cnh.md b/docs/validators/Cnh.md index 1ee45fbb..b48ffb12 100644 --- a/docs/validators/Cnh.md +++ b/docs/validators/Cnh.md @@ -1,6 +1,6 @@ # Cnh diff --git a/docs/validators/Cnpj.md b/docs/validators/Cnpj.md index d5d6567c..6b8bfd72 100644 --- a/docs/validators/Cnpj.md +++ b/docs/validators/Cnpj.md @@ -1,6 +1,6 @@ # Cnpj diff --git a/docs/validators/Consonant.md b/docs/validators/Consonant.md index 73426355..5f18bbc0 100644 --- a/docs/validators/Consonant.md +++ b/docs/validators/Consonant.md @@ -1,6 +1,6 @@ # Consonant diff --git a/docs/validators/Contains.md b/docs/validators/Contains.md index c9b82da9..b3c6a7d3 100644 --- a/docs/validators/Contains.md +++ b/docs/validators/Contains.md @@ -1,6 +1,6 @@ # Contains diff --git a/docs/validators/ContainsAny.md b/docs/validators/ContainsAny.md index 0d77db81..0babf58e 100644 --- a/docs/validators/ContainsAny.md +++ b/docs/validators/ContainsAny.md @@ -1,6 +1,6 @@ # ContainsAny diff --git a/docs/validators/ContainsCount.md b/docs/validators/ContainsCount.md index b13dc177..6a30c3cd 100644 --- a/docs/validators/ContainsCount.md +++ b/docs/validators/ContainsCount.md @@ -1,6 +1,6 @@ # ContainsCount diff --git a/docs/validators/Control.md b/docs/validators/Control.md index dd13bbe0..b11a75c7 100644 --- a/docs/validators/Control.md +++ b/docs/validators/Control.md @@ -1,6 +1,6 @@ # Control diff --git a/docs/validators/Countable.md b/docs/validators/Countable.md index f18f48f9..841768e7 100644 --- a/docs/validators/Countable.md +++ b/docs/validators/Countable.md @@ -1,6 +1,6 @@ # Countable diff --git a/docs/validators/CountryCode.md b/docs/validators/CountryCode.md index 8837684c..63cea8c4 100644 --- a/docs/validators/CountryCode.md +++ b/docs/validators/CountryCode.md @@ -1,6 +1,6 @@ # CountryCode diff --git a/docs/validators/Cpf.md b/docs/validators/Cpf.md index 3d9b4e43..9ef944b4 100644 --- a/docs/validators/Cpf.md +++ b/docs/validators/Cpf.md @@ -1,6 +1,6 @@ # Cpf diff --git a/docs/validators/CreditCard.md b/docs/validators/CreditCard.md index 132ea371..4bd04b26 100644 --- a/docs/validators/CreditCard.md +++ b/docs/validators/CreditCard.md @@ -1,6 +1,6 @@ # CreditCard diff --git a/docs/validators/CurrencyCode.md b/docs/validators/CurrencyCode.md index fa81b887..82b22edf 100644 --- a/docs/validators/CurrencyCode.md +++ b/docs/validators/CurrencyCode.md @@ -1,6 +1,6 @@ # CurrencyCode diff --git a/docs/validators/Date.md b/docs/validators/Date.md index f2103798..288e1c6b 100644 --- a/docs/validators/Date.md +++ b/docs/validators/Date.md @@ -1,6 +1,6 @@ # Date diff --git a/docs/validators/DateTime.md b/docs/validators/DateTime.md index 08ce23a6..ab8eae59 100644 --- a/docs/validators/DateTime.md +++ b/docs/validators/DateTime.md @@ -1,6 +1,6 @@ # DateTime diff --git a/docs/validators/DateTimeDiff.md b/docs/validators/DateTimeDiff.md index e0d903e1..1fba1798 100644 --- a/docs/validators/DateTimeDiff.md +++ b/docs/validators/DateTimeDiff.md @@ -1,6 +1,6 @@ # DateTimeDiff diff --git a/docs/validators/Decimal.md b/docs/validators/Decimal.md index 58968cf4..c8f79dd1 100644 --- a/docs/validators/Decimal.md +++ b/docs/validators/Decimal.md @@ -1,6 +1,6 @@ # Decimal diff --git a/docs/validators/Digit.md b/docs/validators/Digit.md index d6d418d4..e6e6f20d 100644 --- a/docs/validators/Digit.md +++ b/docs/validators/Digit.md @@ -1,6 +1,6 @@ # Digit diff --git a/docs/validators/Directory.md b/docs/validators/Directory.md index 727a00ca..2264b907 100644 --- a/docs/validators/Directory.md +++ b/docs/validators/Directory.md @@ -1,6 +1,6 @@ # Directory diff --git a/docs/validators/Domain.md b/docs/validators/Domain.md index f30a1ab7..0f30948f 100644 --- a/docs/validators/Domain.md +++ b/docs/validators/Domain.md @@ -1,6 +1,6 @@ # Domain diff --git a/docs/validators/Each.md b/docs/validators/Each.md index ce5cf7fb..0cfc2825 100644 --- a/docs/validators/Each.md +++ b/docs/validators/Each.md @@ -1,6 +1,6 @@ # Each diff --git a/docs/validators/Email.md b/docs/validators/Email.md index f9619f0f..58f80dbc 100644 --- a/docs/validators/Email.md +++ b/docs/validators/Email.md @@ -1,6 +1,6 @@ # Email diff --git a/docs/validators/Emoji.md b/docs/validators/Emoji.md index 33afd76f..027a6bd5 100644 --- a/docs/validators/Emoji.md +++ b/docs/validators/Emoji.md @@ -1,6 +1,6 @@ # Emoji diff --git a/docs/validators/EndsWith.md b/docs/validators/EndsWith.md index 3bdc31bd..facf872e 100644 --- a/docs/validators/EndsWith.md +++ b/docs/validators/EndsWith.md @@ -1,6 +1,6 @@ # EndsWith diff --git a/docs/validators/Equals.md b/docs/validators/Equals.md index 09cbff1e..516de7ce 100644 --- a/docs/validators/Equals.md +++ b/docs/validators/Equals.md @@ -1,6 +1,6 @@ # Equals diff --git a/docs/validators/Equivalent.md b/docs/validators/Equivalent.md index 501ab737..14c50e69 100644 --- a/docs/validators/Equivalent.md +++ b/docs/validators/Equivalent.md @@ -1,6 +1,6 @@ # Equivalent diff --git a/docs/validators/Even.md b/docs/validators/Even.md index ce04584f..0e0ea1da 100644 --- a/docs/validators/Even.md +++ b/docs/validators/Even.md @@ -1,6 +1,6 @@ # Even diff --git a/docs/validators/Executable.md b/docs/validators/Executable.md index db4222c9..f7ec8e69 100644 --- a/docs/validators/Executable.md +++ b/docs/validators/Executable.md @@ -1,6 +1,6 @@ # Executable diff --git a/docs/validators/Exists.md b/docs/validators/Exists.md index e8904b36..329415d0 100644 --- a/docs/validators/Exists.md +++ b/docs/validators/Exists.md @@ -1,6 +1,6 @@ # Exists diff --git a/docs/validators/Extension.md b/docs/validators/Extension.md index 03ac50fc..8b927f66 100644 --- a/docs/validators/Extension.md +++ b/docs/validators/Extension.md @@ -1,6 +1,6 @@ # Extension diff --git a/docs/validators/Factor.md b/docs/validators/Factor.md index a371007e..7e255a80 100644 --- a/docs/validators/Factor.md +++ b/docs/validators/Factor.md @@ -1,6 +1,6 @@ # Factor diff --git a/docs/validators/Factory.md b/docs/validators/Factory.md index 68923c65..6266ee0d 100644 --- a/docs/validators/Factory.md +++ b/docs/validators/Factory.md @@ -1,6 +1,6 @@ # Factory diff --git a/docs/validators/FalseVal.md b/docs/validators/FalseVal.md index c15279e2..c0fe5cd1 100644 --- a/docs/validators/FalseVal.md +++ b/docs/validators/FalseVal.md @@ -1,6 +1,6 @@ # FalseVal diff --git a/docs/validators/Falsy.md b/docs/validators/Falsy.md index 75c1f39e..5bfa7b8c 100644 --- a/docs/validators/Falsy.md +++ b/docs/validators/Falsy.md @@ -1,6 +1,6 @@ # Falsy diff --git a/docs/validators/File.md b/docs/validators/File.md index a6f95018..fd8cc14c 100644 --- a/docs/validators/File.md +++ b/docs/validators/File.md @@ -1,6 +1,6 @@ # File diff --git a/docs/validators/Finite.md b/docs/validators/Finite.md index 6b76011e..731f711d 100644 --- a/docs/validators/Finite.md +++ b/docs/validators/Finite.md @@ -1,6 +1,6 @@ # Finite diff --git a/docs/validators/FloatType.md b/docs/validators/FloatType.md index dea04101..ce0b221a 100644 --- a/docs/validators/FloatType.md +++ b/docs/validators/FloatType.md @@ -1,6 +1,6 @@ # FloatType diff --git a/docs/validators/FloatVal.md b/docs/validators/FloatVal.md index 3d60facf..37e4e242 100644 --- a/docs/validators/FloatVal.md +++ b/docs/validators/FloatVal.md @@ -1,6 +1,6 @@ # FloatVal diff --git a/docs/validators/Graph.md b/docs/validators/Graph.md index deac66db..394cd6a7 100644 --- a/docs/validators/Graph.md +++ b/docs/validators/Graph.md @@ -1,6 +1,6 @@ # Graph diff --git a/docs/validators/GreaterThan.md b/docs/validators/GreaterThan.md index 21b60d81..e0e595f6 100644 --- a/docs/validators/GreaterThan.md +++ b/docs/validators/GreaterThan.md @@ -1,6 +1,6 @@ # GreaterThan diff --git a/docs/validators/GreaterThanOrEqual.md b/docs/validators/GreaterThanOrEqual.md index f96eb6a9..6c824f9e 100644 --- a/docs/validators/GreaterThanOrEqual.md +++ b/docs/validators/GreaterThanOrEqual.md @@ -1,6 +1,6 @@ # GreaterThanOrEqual diff --git a/docs/validators/Hetu.md b/docs/validators/Hetu.md index 1679761a..e7596165 100644 --- a/docs/validators/Hetu.md +++ b/docs/validators/Hetu.md @@ -1,6 +1,6 @@ # Hetu diff --git a/docs/validators/HexRgbColor.md b/docs/validators/HexRgbColor.md index f3eb92da..e1a36d4d 100644 --- a/docs/validators/HexRgbColor.md +++ b/docs/validators/HexRgbColor.md @@ -1,6 +1,6 @@ # HexRgbColor diff --git a/docs/validators/Iban.md b/docs/validators/Iban.md index 551f4267..e44ed693 100644 --- a/docs/validators/Iban.md +++ b/docs/validators/Iban.md @@ -1,6 +1,6 @@ # Iban diff --git a/docs/validators/Identical.md b/docs/validators/Identical.md index 0a4e9562..c75e1b1e 100644 --- a/docs/validators/Identical.md +++ b/docs/validators/Identical.md @@ -1,6 +1,6 @@ # Identical diff --git a/docs/validators/Image.md b/docs/validators/Image.md index 44ecb97d..a32adf4e 100644 --- a/docs/validators/Image.md +++ b/docs/validators/Image.md @@ -1,6 +1,6 @@ # Image diff --git a/docs/validators/Imei.md b/docs/validators/Imei.md index 4a992219..dd7b57c8 100644 --- a/docs/validators/Imei.md +++ b/docs/validators/Imei.md @@ -1,6 +1,6 @@ # Imei diff --git a/docs/validators/In.md b/docs/validators/In.md index e3babe31..552eafa9 100644 --- a/docs/validators/In.md +++ b/docs/validators/In.md @@ -1,6 +1,6 @@ # In diff --git a/docs/validators/Infinite.md b/docs/validators/Infinite.md index f467c4de..09b03bce 100644 --- a/docs/validators/Infinite.md +++ b/docs/validators/Infinite.md @@ -1,6 +1,6 @@ # Infinite diff --git a/docs/validators/Instance.md b/docs/validators/Instance.md index f81f4eb6..6e2a56e6 100644 --- a/docs/validators/Instance.md +++ b/docs/validators/Instance.md @@ -1,6 +1,6 @@ # Instance diff --git a/docs/validators/IntType.md b/docs/validators/IntType.md index fac8b8dd..222aef71 100644 --- a/docs/validators/IntType.md +++ b/docs/validators/IntType.md @@ -1,6 +1,6 @@ # IntType diff --git a/docs/validators/IntVal.md b/docs/validators/IntVal.md index dd5e4b02..8a674a38 100644 --- a/docs/validators/IntVal.md +++ b/docs/validators/IntVal.md @@ -1,6 +1,6 @@ # IntVal diff --git a/docs/validators/Ip.md b/docs/validators/Ip.md index c6350a61..1a74610d 100644 --- a/docs/validators/Ip.md +++ b/docs/validators/Ip.md @@ -1,6 +1,6 @@ # Ip diff --git a/docs/validators/Isbn.md b/docs/validators/Isbn.md index a2c024a5..f157c750 100644 --- a/docs/validators/Isbn.md +++ b/docs/validators/Isbn.md @@ -1,6 +1,6 @@ # Isbn diff --git a/docs/validators/IterableType.md b/docs/validators/IterableType.md index 4985e07e..d9897401 100644 --- a/docs/validators/IterableType.md +++ b/docs/validators/IterableType.md @@ -1,6 +1,6 @@ # IterableType diff --git a/docs/validators/IterableVal.md b/docs/validators/IterableVal.md index 60338b8a..cf3d1ba5 100644 --- a/docs/validators/IterableVal.md +++ b/docs/validators/IterableVal.md @@ -1,6 +1,6 @@ # IterableVal diff --git a/docs/validators/Json.md b/docs/validators/Json.md index d465600c..654977a4 100644 --- a/docs/validators/Json.md +++ b/docs/validators/Json.md @@ -1,6 +1,6 @@ # Json diff --git a/docs/validators/Key.md b/docs/validators/Key.md index 30ae9249..8dda068b 100644 --- a/docs/validators/Key.md +++ b/docs/validators/Key.md @@ -1,6 +1,6 @@ # Key diff --git a/docs/validators/KeyExists.md b/docs/validators/KeyExists.md index 8386e042..e2166a12 100644 --- a/docs/validators/KeyExists.md +++ b/docs/validators/KeyExists.md @@ -1,6 +1,6 @@ # KeyExists diff --git a/docs/validators/KeyOptional.md b/docs/validators/KeyOptional.md index df3929e9..66a09f6d 100644 --- a/docs/validators/KeyOptional.md +++ b/docs/validators/KeyOptional.md @@ -1,6 +1,6 @@ # KeyOptional diff --git a/docs/validators/KeySet.md b/docs/validators/KeySet.md index 711d17cf..e73d7f11 100644 --- a/docs/validators/KeySet.md +++ b/docs/validators/KeySet.md @@ -1,6 +1,6 @@ # KeySet diff --git a/docs/validators/LanguageCode.md b/docs/validators/LanguageCode.md index a73d6929..b357d84d 100644 --- a/docs/validators/LanguageCode.md +++ b/docs/validators/LanguageCode.md @@ -1,6 +1,6 @@ # LanguageCode diff --git a/docs/validators/LeapDate.md b/docs/validators/LeapDate.md index 8bdcb5a7..da7c9a72 100644 --- a/docs/validators/LeapDate.md +++ b/docs/validators/LeapDate.md @@ -1,6 +1,6 @@ # LeapDate diff --git a/docs/validators/LeapYear.md b/docs/validators/LeapYear.md index 15343081..ad66d03e 100644 --- a/docs/validators/LeapYear.md +++ b/docs/validators/LeapYear.md @@ -1,6 +1,6 @@ # LeapYear diff --git a/docs/validators/Length.md b/docs/validators/Length.md index bb8940c7..aaa2d4f3 100644 --- a/docs/validators/Length.md +++ b/docs/validators/Length.md @@ -1,6 +1,6 @@ # Length diff --git a/docs/validators/LessThan.md b/docs/validators/LessThan.md index 332397bb..d18ed662 100644 --- a/docs/validators/LessThan.md +++ b/docs/validators/LessThan.md @@ -1,6 +1,6 @@ # LessThan diff --git a/docs/validators/LessThanOrEqual.md b/docs/validators/LessThanOrEqual.md index ea6cbee6..98c397e5 100644 --- a/docs/validators/LessThanOrEqual.md +++ b/docs/validators/LessThanOrEqual.md @@ -1,6 +1,6 @@ # LessThanOrEqual diff --git a/docs/validators/Lowercase.md b/docs/validators/Lowercase.md index 17de83f3..487b403b 100644 --- a/docs/validators/Lowercase.md +++ b/docs/validators/Lowercase.md @@ -1,6 +1,6 @@ # Lowercase diff --git a/docs/validators/Luhn.md b/docs/validators/Luhn.md index 8b59a119..343c98ef 100644 --- a/docs/validators/Luhn.md +++ b/docs/validators/Luhn.md @@ -1,6 +1,6 @@ # Luhn diff --git a/docs/validators/MacAddress.md b/docs/validators/MacAddress.md index 4fd2f5f6..91ce88e5 100644 --- a/docs/validators/MacAddress.md +++ b/docs/validators/MacAddress.md @@ -1,6 +1,6 @@ # MacAddress diff --git a/docs/validators/Masked.md b/docs/validators/Masked.md index 5ee94204..ff18835a 100644 --- a/docs/validators/Masked.md +++ b/docs/validators/Masked.md @@ -1,6 +1,6 @@ # Masked diff --git a/docs/validators/Max.md b/docs/validators/Max.md index 85f67f43..c02a86e6 100644 --- a/docs/validators/Max.md +++ b/docs/validators/Max.md @@ -1,6 +1,6 @@ # Max diff --git a/docs/validators/Mimetype.md b/docs/validators/Mimetype.md index 8d466918..cced595e 100644 --- a/docs/validators/Mimetype.md +++ b/docs/validators/Mimetype.md @@ -1,6 +1,6 @@ # Mimetype diff --git a/docs/validators/Min.md b/docs/validators/Min.md index 53821471..70c8f34d 100644 --- a/docs/validators/Min.md +++ b/docs/validators/Min.md @@ -1,6 +1,6 @@ # Min diff --git a/docs/validators/Multiple.md b/docs/validators/Multiple.md index dec6ffd8..a52150d2 100644 --- a/docs/validators/Multiple.md +++ b/docs/validators/Multiple.md @@ -1,6 +1,6 @@ # Multiple diff --git a/docs/validators/Named.md b/docs/validators/Named.md index 62af56bc..b28c527a 100644 --- a/docs/validators/Named.md +++ b/docs/validators/Named.md @@ -1,6 +1,6 @@ # Named diff --git a/docs/validators/Negative.md b/docs/validators/Negative.md index 0a425552..cc690ee3 100644 --- a/docs/validators/Negative.md +++ b/docs/validators/Negative.md @@ -1,6 +1,6 @@ # Negative diff --git a/docs/validators/NfeAccessKey.md b/docs/validators/NfeAccessKey.md index f6b0b551..aa6ccfb3 100644 --- a/docs/validators/NfeAccessKey.md +++ b/docs/validators/NfeAccessKey.md @@ -1,6 +1,6 @@ # NfeAccessKey diff --git a/docs/validators/Nif.md b/docs/validators/Nif.md index d6924f0d..66651f8a 100644 --- a/docs/validators/Nif.md +++ b/docs/validators/Nif.md @@ -1,6 +1,6 @@ # Nif diff --git a/docs/validators/Nip.md b/docs/validators/Nip.md index 20470808..50e804f4 100644 --- a/docs/validators/Nip.md +++ b/docs/validators/Nip.md @@ -1,6 +1,6 @@ # Nip diff --git a/docs/validators/NoneOf.md b/docs/validators/NoneOf.md index 204a66a2..3320a3be 100644 --- a/docs/validators/NoneOf.md +++ b/docs/validators/NoneOf.md @@ -1,6 +1,6 @@ # NoneOf diff --git a/docs/validators/Not.md b/docs/validators/Not.md index 3b7c2644..943ca9a4 100644 --- a/docs/validators/Not.md +++ b/docs/validators/Not.md @@ -1,6 +1,6 @@ # Not diff --git a/docs/validators/NullOr.md b/docs/validators/NullOr.md index 10182243..46d1c890 100644 --- a/docs/validators/NullOr.md +++ b/docs/validators/NullOr.md @@ -1,6 +1,6 @@ # NullOr diff --git a/docs/validators/NullType.md b/docs/validators/NullType.md index 7eb8d908..f8354f97 100644 --- a/docs/validators/NullType.md +++ b/docs/validators/NullType.md @@ -1,6 +1,6 @@ # NullType diff --git a/docs/validators/Number.md b/docs/validators/Number.md index 6493d854..61ff9a99 100644 --- a/docs/validators/Number.md +++ b/docs/validators/Number.md @@ -1,6 +1,6 @@ # Number diff --git a/docs/validators/NumericVal.md b/docs/validators/NumericVal.md index 89fa8653..ad6e33ef 100644 --- a/docs/validators/NumericVal.md +++ b/docs/validators/NumericVal.md @@ -1,6 +1,6 @@ # NumericVal diff --git a/docs/validators/ObjectType.md b/docs/validators/ObjectType.md index 1ee28327..2694d992 100644 --- a/docs/validators/ObjectType.md +++ b/docs/validators/ObjectType.md @@ -1,6 +1,6 @@ # ObjectType diff --git a/docs/validators/Odd.md b/docs/validators/Odd.md index 09cbe9d8..c526e404 100644 --- a/docs/validators/Odd.md +++ b/docs/validators/Odd.md @@ -1,6 +1,6 @@ # Odd diff --git a/docs/validators/OneOf.md b/docs/validators/OneOf.md index 5e75ac17..5b8b9fc3 100644 --- a/docs/validators/OneOf.md +++ b/docs/validators/OneOf.md @@ -1,6 +1,6 @@ # OneOf diff --git a/docs/validators/Pesel.md b/docs/validators/Pesel.md index be34bc17..3b9f8494 100644 --- a/docs/validators/Pesel.md +++ b/docs/validators/Pesel.md @@ -1,6 +1,6 @@ # Pesel diff --git a/docs/validators/Phone.md b/docs/validators/Phone.md index 04edad0f..7801a20f 100644 --- a/docs/validators/Phone.md +++ b/docs/validators/Phone.md @@ -1,6 +1,6 @@ # Phone diff --git a/docs/validators/Pis.md b/docs/validators/Pis.md index 1891aeeb..525378a2 100644 --- a/docs/validators/Pis.md +++ b/docs/validators/Pis.md @@ -1,6 +1,6 @@ # Pis diff --git a/docs/validators/PolishIdCard.md b/docs/validators/PolishIdCard.md index 88cc9e9b..4e028bcb 100644 --- a/docs/validators/PolishIdCard.md +++ b/docs/validators/PolishIdCard.md @@ -1,6 +1,6 @@ # PolishIdCard diff --git a/docs/validators/PortugueseNif.md b/docs/validators/PortugueseNif.md index 69d6e0dd..ad29d3c4 100644 --- a/docs/validators/PortugueseNif.md +++ b/docs/validators/PortugueseNif.md @@ -1,6 +1,6 @@ # PortugueseNif diff --git a/docs/validators/Positive.md b/docs/validators/Positive.md index 9d2386f6..4e40ec85 100644 --- a/docs/validators/Positive.md +++ b/docs/validators/Positive.md @@ -1,6 +1,6 @@ # Positive diff --git a/docs/validators/PostalCode.md b/docs/validators/PostalCode.md index 51013291..ef0f0063 100644 --- a/docs/validators/PostalCode.md +++ b/docs/validators/PostalCode.md @@ -1,6 +1,6 @@ # PostalCode diff --git a/docs/validators/Printable.md b/docs/validators/Printable.md index 613f307a..6dc354ba 100644 --- a/docs/validators/Printable.md +++ b/docs/validators/Printable.md @@ -1,6 +1,6 @@ # Printable diff --git a/docs/validators/Property.md b/docs/validators/Property.md index b36df8e0..03f67285 100644 --- a/docs/validators/Property.md +++ b/docs/validators/Property.md @@ -1,6 +1,6 @@ # Property diff --git a/docs/validators/PropertyExists.md b/docs/validators/PropertyExists.md index c377f3c9..d08c6bf9 100644 --- a/docs/validators/PropertyExists.md +++ b/docs/validators/PropertyExists.md @@ -1,6 +1,6 @@ # PropertyExists diff --git a/docs/validators/PropertyOptional.md b/docs/validators/PropertyOptional.md index be8ecfe8..d0bb0388 100644 --- a/docs/validators/PropertyOptional.md +++ b/docs/validators/PropertyOptional.md @@ -1,6 +1,6 @@ # PropertyOptional diff --git a/docs/validators/PublicDomainSuffix.md b/docs/validators/PublicDomainSuffix.md index 3257f048..b100273b 100644 --- a/docs/validators/PublicDomainSuffix.md +++ b/docs/validators/PublicDomainSuffix.md @@ -1,6 +1,6 @@ # PublicDomainSuffix diff --git a/docs/validators/Punct.md b/docs/validators/Punct.md index 38c69fda..cf1fa59a 100644 --- a/docs/validators/Punct.md +++ b/docs/validators/Punct.md @@ -1,6 +1,6 @@ # Punct diff --git a/docs/validators/Readable.md b/docs/validators/Readable.md index 5ec61119..04305bb0 100644 --- a/docs/validators/Readable.md +++ b/docs/validators/Readable.md @@ -1,6 +1,6 @@ # Readable diff --git a/docs/validators/Regex.md b/docs/validators/Regex.md index 196736fb..cd2f00c2 100644 --- a/docs/validators/Regex.md +++ b/docs/validators/Regex.md @@ -1,6 +1,6 @@ # Regex diff --git a/docs/validators/ResourceType.md b/docs/validators/ResourceType.md index 37bc7436..e6643a2f 100644 --- a/docs/validators/ResourceType.md +++ b/docs/validators/ResourceType.md @@ -1,6 +1,6 @@ # ResourceType diff --git a/docs/validators/Roman.md b/docs/validators/Roman.md index 21f79616..278006ce 100644 --- a/docs/validators/Roman.md +++ b/docs/validators/Roman.md @@ -1,6 +1,6 @@ # Roman diff --git a/docs/validators/Satisfies.md b/docs/validators/Satisfies.md index 1777ace7..5153cc24 100644 --- a/docs/validators/Satisfies.md +++ b/docs/validators/Satisfies.md @@ -1,6 +1,6 @@ # Satisfies diff --git a/docs/validators/ScalarVal.md b/docs/validators/ScalarVal.md index 2ddd816e..0bdc392a 100644 --- a/docs/validators/ScalarVal.md +++ b/docs/validators/ScalarVal.md @@ -1,6 +1,6 @@ # ScalarVal diff --git a/docs/validators/Size.md b/docs/validators/Size.md index aa71fe0f..27ce9b82 100644 --- a/docs/validators/Size.md +++ b/docs/validators/Size.md @@ -1,6 +1,6 @@ # Size diff --git a/docs/validators/Slug.md b/docs/validators/Slug.md index 8abaa5d6..f8107311 100644 --- a/docs/validators/Slug.md +++ b/docs/validators/Slug.md @@ -1,6 +1,6 @@ # Slug diff --git a/docs/validators/Sorted.md b/docs/validators/Sorted.md index 840fd5a0..6c5a5e34 100644 --- a/docs/validators/Sorted.md +++ b/docs/validators/Sorted.md @@ -1,6 +1,6 @@ # Sorted diff --git a/docs/validators/Space.md b/docs/validators/Space.md index babb0ec0..ff6f5599 100644 --- a/docs/validators/Space.md +++ b/docs/validators/Space.md @@ -1,6 +1,6 @@ # Space diff --git a/docs/validators/Spaced.md b/docs/validators/Spaced.md index 0fde28ca..1aca064a 100644 --- a/docs/validators/Spaced.md +++ b/docs/validators/Spaced.md @@ -1,6 +1,6 @@ # Spaced diff --git a/docs/validators/StartsWith.md b/docs/validators/StartsWith.md index d6b9ea98..7157b96f 100644 --- a/docs/validators/StartsWith.md +++ b/docs/validators/StartsWith.md @@ -1,6 +1,6 @@ # StartsWith diff --git a/docs/validators/StringType.md b/docs/validators/StringType.md index 7b321e11..0e2d9d8a 100644 --- a/docs/validators/StringType.md +++ b/docs/validators/StringType.md @@ -1,6 +1,6 @@ # StringType diff --git a/docs/validators/StringVal.md b/docs/validators/StringVal.md index 4bdec06a..e552eee3 100644 --- a/docs/validators/StringVal.md +++ b/docs/validators/StringVal.md @@ -1,6 +1,6 @@ # StringVal diff --git a/docs/validators/SubdivisionCode.md b/docs/validators/SubdivisionCode.md index 302fa7b9..356cb1ad 100644 --- a/docs/validators/SubdivisionCode.md +++ b/docs/validators/SubdivisionCode.md @@ -1,6 +1,6 @@ # SubdivisionCode diff --git a/docs/validators/Subset.md b/docs/validators/Subset.md index aff64584..72915300 100644 --- a/docs/validators/Subset.md +++ b/docs/validators/Subset.md @@ -1,6 +1,6 @@ # Subset diff --git a/docs/validators/SymbolicLink.md b/docs/validators/SymbolicLink.md index c0c381d2..d3d43c33 100644 --- a/docs/validators/SymbolicLink.md +++ b/docs/validators/SymbolicLink.md @@ -1,6 +1,6 @@ # SymbolicLink diff --git a/docs/validators/Templated.md b/docs/validators/Templated.md index 85e12fea..73f68702 100644 --- a/docs/validators/Templated.md +++ b/docs/validators/Templated.md @@ -1,6 +1,6 @@ # Templated diff --git a/docs/validators/Time.md b/docs/validators/Time.md index fd61ccb0..4f9c7ef4 100644 --- a/docs/validators/Time.md +++ b/docs/validators/Time.md @@ -1,6 +1,6 @@ # Time diff --git a/docs/validators/Tld.md b/docs/validators/Tld.md index d618b646..e2cd059b 100644 --- a/docs/validators/Tld.md +++ b/docs/validators/Tld.md @@ -1,6 +1,6 @@ # Tld diff --git a/docs/validators/TrueVal.md b/docs/validators/TrueVal.md index 667cbe0a..c553f5a5 100644 --- a/docs/validators/TrueVal.md +++ b/docs/validators/TrueVal.md @@ -1,6 +1,6 @@ # TrueVal diff --git a/docs/validators/Undef.md b/docs/validators/Undef.md index 42d799bd..7127dc98 100644 --- a/docs/validators/Undef.md +++ b/docs/validators/Undef.md @@ -1,6 +1,6 @@ # Undef diff --git a/docs/validators/UndefOr.md b/docs/validators/UndefOr.md index 22e53163..28526d0f 100644 --- a/docs/validators/UndefOr.md +++ b/docs/validators/UndefOr.md @@ -1,6 +1,6 @@ # UndefOr diff --git a/docs/validators/Unique.md b/docs/validators/Unique.md index e028a214..b4067ced 100644 --- a/docs/validators/Unique.md +++ b/docs/validators/Unique.md @@ -1,6 +1,6 @@ # Unique diff --git a/docs/validators/Uppercase.md b/docs/validators/Uppercase.md index 4e4ba69e..731eb453 100644 --- a/docs/validators/Uppercase.md +++ b/docs/validators/Uppercase.md @@ -1,6 +1,6 @@ # Uppercase diff --git a/docs/validators/Url.md b/docs/validators/Url.md index c046d8d0..0ad09b70 100644 --- a/docs/validators/Url.md +++ b/docs/validators/Url.md @@ -1,6 +1,6 @@ # Url diff --git a/docs/validators/Uuid.md b/docs/validators/Uuid.md index 1c6c8860..cc63cc9d 100644 --- a/docs/validators/Uuid.md +++ b/docs/validators/Uuid.md @@ -1,6 +1,6 @@ # Uuid diff --git a/docs/validators/Version.md b/docs/validators/Version.md index 4b4945f2..59acd857 100644 --- a/docs/validators/Version.md +++ b/docs/validators/Version.md @@ -1,6 +1,6 @@ # Version diff --git a/docs/validators/Vowel.md b/docs/validators/Vowel.md index 0b9f4ac7..d542f7b1 100644 --- a/docs/validators/Vowel.md +++ b/docs/validators/Vowel.md @@ -1,6 +1,6 @@ # Vowel diff --git a/docs/validators/When.md b/docs/validators/When.md index 90b99f99..e4ee2bf7 100644 --- a/docs/validators/When.md +++ b/docs/validators/When.md @@ -1,6 +1,6 @@ # When diff --git a/docs/validators/Writable.md b/docs/validators/Writable.md index 5f8493a7..baaa507e 100644 --- a/docs/validators/Writable.md +++ b/docs/validators/Writable.md @@ -1,6 +1,6 @@ # Writable diff --git a/docs/validators/Xdigit.md b/docs/validators/Xdigit.md index 1be2e3e7..5dbeec3c 100644 --- a/docs/validators/Xdigit.md +++ b/docs/validators/Xdigit.md @@ -1,6 +1,6 @@ # Xdigit diff --git a/src-dev/Commands/LintSpdxCommand.php b/src-dev/Commands/LintSpdxCommand.php index 45e2b0bc..55c32ef3 100644 --- a/src-dev/Commands/LintSpdxCommand.php +++ b/src-dev/Commands/LintSpdxCommand.php @@ -3,30 +3,41 @@ /* * SPDX-License-Identifier: MIT * SPDX-FileCopyrightText: (c) Respect Project Contributors + * SPDX-FileContributor: Alexandre Gomes Gaigalas + * SPDX-FileContributor: Henrique Moody */ declare(strict_types=1); namespace Respect\Dev\Commands; -use Respect\Validation\Exceptions\ValidationException; -use Respect\Validation\ValidatorBuilder; +use InvalidArgumentException; +use Respect\Dev\Differ\ConsoleDiffer; +use Respect\Dev\Differ\Item; +use Respect\Dev\Spdx\ContributorExtractor\GitBlameContributorExtractor; +use Respect\Dev\Spdx\ContributorExtractor\GitLogContributorExtractor; +use Respect\Dev\Spdx\ContributorExtractor\HeaderContributorExtractor; +use Respect\Dev\Spdx\ContributorExtractor\NormalizingContributorExtractor; +use Respect\Dev\Spdx\HeaderRebuilder\HtmlHeaderRebuilder; +use Respect\Dev\Spdx\HeaderRebuilder\PhpHeaderRebuilder; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Finder\Finder; -use Symfony\Component\Finder\SplFileInfo; -use function array_filter; use function array_keys; use function array_map; +use function basename; +use function count; use function dirname; -use function explode; use function file_get_contents; -use function preg_match; +use function file_put_contents; +use function is_file; +use function realpath; use function sprintf; -use function trim; #[AsCommand( name: 'lint:spdx', @@ -34,10 +45,6 @@ use function trim; )] final class LintSpdxCommand extends Command { - public const array HEADERS = [ - 'License-Identifier: MIT', - 'FileCopyrightText: (c) Respect Project Contributors', - ]; public const array EXTENSIONS = [ 'php' => '/\/\*+(.*?)\*\//s', 'md' => '//s', @@ -50,50 +57,130 @@ final class LintSpdxCommand extends Command '/docs', ]; - public static function extractFileHeader(SplFileInfo $file): string - { - preg_match( - self::EXTENSIONS[$file->getExtension()], - file_get_contents($file->getRealPath()), - $matches, - ); + private readonly PhpHeaderRebuilder $phpHeaderRebuilder; - return $matches[1] ?? ''; + private readonly HtmlHeaderRebuilder $htmlHeaderBuilder; + + private readonly GitLogContributorExtractor $gitLogContributorExtractor; + + private readonly GitBlameContributorExtractor $gitBlameContributorExtractor; + + public function __construct( + private readonly ConsoleDiffer $differ, + ) { + parent::__construct(); + + $this->htmlHeaderBuilder = new HtmlHeaderRebuilder(); + $this->phpHeaderRebuilder = new PhpHeaderRebuilder(); + $this->gitBlameContributorExtractor = new GitBlameContributorExtractor(); + $this->gitLogContributorExtractor = new GitLogContributorExtractor(); + } + + protected function configure(): void + { + $this->addArgument( + 'path', + InputArgument::OPTIONAL, + 'File or directory to lint (defaults to the whole codebase).', + ); + $this->addOption( + 'fix', + null, + InputOption::VALUE_NONE, + 'Automatically fix files with issues.', + ); + $this->addOption( + 'contributions-strategy', + null, + InputOption::VALUE_REQUIRED, + 'Strategy to get contributors: "git-blame" (git blame) or "git-log" (git log --follow).', + ); } protected function execute(InputInterface $input, OutputInterface $output): int { - $pass = true; $root = dirname(__DIR__, 2); - $finder = (new Finder())->in(array_map(static fn($dir) => $root . $dir, self::SEARCH_DIRS))->files(); - $validator = ValidatorBuilder::after( - static fn($input) => array_filter(explode("\n", trim($input))), - ValidatorBuilder::templated( - 'Each header line of {{subject}}', - ValidatorBuilder::each(ValidatorBuilder::stringType()->contains('SPDX')), - ), - ); + $path = $input->getArgument('path'); + $finder = $this->createFinder($root, $path); + $contributionsStrategy = $input->getOption('contributions-strategy'); + $updatableFiles = []; + + foreach ($finder as $file) { + $content = file_get_contents($file->getRealPath()); + + $extractor = new NormalizingContributorExtractor( + match ($contributionsStrategy) { + 'git-blame' => $this->gitBlameContributorExtractor, + 'git-log' => $this->gitLogContributorExtractor, + default => new HeaderContributorExtractor(self::EXTENSIONS[$file->getExtension()]), + }, + ); + + $contributors = $extractor->extract($file->getRealPath()); + + $rebuilder = match ($file->getExtension()) { + 'php' => $this->phpHeaderRebuilder, + default => $this->htmlHeaderBuilder, + }; + + $fixedContent = $rebuilder->rebuild($content, $contributors); + if ($content === $fixedContent) { + continue; + } + + $diff = $this->differ->diff( + new Item($file->getRealPath(), $content), + new Item($file->getRealPath(), $fixedContent), + ); + + if ($diff === null) { + continue; + } + + $output->writeln($diff); + $updatableFiles[$file->getRealPath()] = $fixedContent; + } + + if ($updatableFiles === []) { + $output->writeln('No changes needed.'); + } else { + $output->writeln(sprintf('Changes needed in %d files.', count($updatableFiles))); + } + + if ($updatableFiles !== [] && !$input->getOption('fix')) { + return Command::FAILURE; + } + + foreach ($updatableFiles as $filepath => $content) { + file_put_contents($filepath, $content); + } + + return Command::SUCCESS; + } + + private function createFinder(string $root, string|null $path): Finder + { + $finder = new Finder(); + + if ($path !== null) { + $realPath = realpath($path); + if ($realPath === false) { + throw new InvalidArgumentException(sprintf('Path "%s" does not exist.', $path)); + } + + if (is_file($realPath)) { + return $finder->in(dirname($realPath))->name(basename($realPath))->files(); + } + + return $finder->in($realPath)->name('*.php')->name('*.md')->files(); + } + + $finder = $finder->in(array_map(static fn($dir) => $root . $dir, self::SEARCH_DIRS))->files(); foreach (array_keys(self::EXTENSIONS) as $extension) { $finder = $finder->name('*.' . $extension); } - foreach (self::HEADERS as $headerLine) { - $validator = $validator->contains(sprintf('SPDX-%s', $headerLine)); - } - - foreach ($finder as $file) { - try { - ValidatorBuilder::named( - sprintf('File "%s" SPDX header', $file->getRelativePathname()), - $validator, - )->assert(static::extractFileHeader($file)); - } catch (ValidationException $e) { - $output->writeln($e->getFullMessage()); - $pass = false; - } - } - - return $pass ? Command::SUCCESS : Command::FAILURE; + return $finder; } } diff --git a/src-dev/Spdx/Contributor.php b/src-dev/Spdx/Contributor.php new file mode 100644 index 00000000..5530e32b --- /dev/null +++ b/src-dev/Spdx/Contributor.php @@ -0,0 +1,53 @@ + + */ + +declare(strict_types=1); + +namespace Respect\Dev\Spdx; + +use function str_ends_with; + +final readonly class Contributor +{ + private const array CONTRIBUTOR_ALIASES = [ + 'alexandre@gaigalas.net' => ['Alexandre Gomes Gaigalas', 'alganet@gmail.com'], + 'alganet+github@gmail.com' => ['Alexandre Gomes Gaigalas', 'alganet@gmail.com'], + 'alganet@alganet-laptop.(none)' => ['Alexandre Gomes Gaigalas', 'alganet@gmail.com'], + 'alganet@alganet-workstation.(none)' => ['Alexandre Gomes Gaigalas', 'alganet@gmail.com'], + 'gaigalas@yahoo-inc.com' => ['Alexandre Gomes Gaigalas', 'alganet@gmail.com'], + 'augusto@phpsp.org.br' => ['Augusto Pascutti', 'augusto.hp@gmail.com'], + 'github@jigsoft.co.za' => ['Nick Lombard', 'github@jigsoft.co.za'], + 'nick@jigsoft.co.za' => ['Nick Lombard', 'github@jigsoft.co.za'], + 'emmersonsiqueira@gmail.com' => ['Emmerson Siqueira', 'emmersonsiqueira@gmail.com'], + 'jayson.reis@sabbre.com.br' => ['Jayson Reis', 'santosdosreis@gmail.com'], + 'kolyshkin@.sqlmaze.local' => ['Kir Kolyshkin', 'kolyshkin@gmail.com'], + 'pathumhdes@gmail.com' => ['Pathum Harshana De Silva', 'pathumhdes@gmail.com'], + 'andre@andre.(none)' => ['Carlos André Ferrari', 'caferrari@gmail.com'], + 'mazanax@yandex.ru' => ['Aleksandr Gorshkov', 'mazanax@yandex.ru'], + 'paulkarikari1@gmail.com' => ['Paul Karikari', 'paulkarikari1@gmail.com'], + ]; + + private function __construct( + public string $name, + public string|null $email, + ) { + } + + public static function create(string $name, string|null $email): self + { + if ($email !== null && isset(self::CONTRIBUTOR_ALIASES[$email])) { + [$name, $email] = self::CONTRIBUTOR_ALIASES[$email]; + } + + if ($email !== null && str_ends_with($email, 'users.noreply.github.com')) { + $email = null; + } + + return new self($name, $email); + } +} diff --git a/src-dev/Spdx/ContributorExtractor/ContributorExtractor.php b/src-dev/Spdx/ContributorExtractor/ContributorExtractor.php new file mode 100644 index 00000000..33504526 --- /dev/null +++ b/src-dev/Spdx/ContributorExtractor/ContributorExtractor.php @@ -0,0 +1,19 @@ + + */ + +declare(strict_types=1); + +namespace Respect\Dev\Spdx\ContributorExtractor; + +use Respect\Dev\Spdx\Contributor; + +interface ContributorExtractor +{ + /** @return array */ + public function extract(string $filepath): array; +} diff --git a/src-dev/Spdx/ContributorExtractor/GitBlameContributorExtractor.php b/src-dev/Spdx/ContributorExtractor/GitBlameContributorExtractor.php new file mode 100644 index 00000000..88f1ca83 --- /dev/null +++ b/src-dev/Spdx/ContributorExtractor/GitBlameContributorExtractor.php @@ -0,0 +1,47 @@ + + */ + +declare(strict_types=1); + +namespace Respect\Dev\Spdx\ContributorExtractor; + +use Respect\Dev\Spdx\Contributor; +use Symfony\Component\Process\Process; + +use function preg_match_all; + +final class GitBlameContributorExtractor implements ContributorExtractor +{ + /** @return array */ + public function extract(string $filepath): array + { + $process = new Process(['git', 'blame', '--porcelain', $filepath]); + $process->run(); + + if (!$process->isSuccessful()) { + return []; + } + + $output = $process->getOutput(); + $contributors = []; + + preg_match_all('/^author (.+)$/m', $output, $authorMatches); + preg_match_all('/^author-mail <(.+)>$/m', $output, $emailMatches); + + foreach ($authorMatches[1] as $index => $name) { + $email = $emailMatches[1][$index] ?? ''; + if ($email === '' || $name === 'Not Committed Yet') { + continue; + } + + $contributors[] = Contributor::create($name, $email); + } + + return $contributors; + } +} diff --git a/src-dev/Spdx/ContributorExtractor/GitLogContributorExtractor.php b/src-dev/Spdx/ContributorExtractor/GitLogContributorExtractor.php new file mode 100644 index 00000000..3ce91b09 --- /dev/null +++ b/src-dev/Spdx/ContributorExtractor/GitLogContributorExtractor.php @@ -0,0 +1,52 @@ + + */ + +declare(strict_types=1); + +namespace Respect\Dev\Spdx\ContributorExtractor; + +use Respect\Dev\Spdx\Contributor; +use Symfony\Component\Process\Process; + +use function explode; +use function preg_match; +use function trim; + +final class GitLogContributorExtractor implements ContributorExtractor +{ + /** @return array */ + public function extract(string $filepath): array + { + $process = new Process(['git', 'log', '--follow', '--format=%aN <%aE>', $filepath]); + $process->run(); + + if (!$process->isSuccessful()) { + return []; + } + + $contributors = []; + + foreach (explode("\n", trim($process->getOutput())) as $line) { + if ($line === '') { + continue; + } + + preg_match('/^(.+) <(.+)>$/', $line, $matches); + $name = $matches[1] ?? ''; + $email = $matches[2] ?? ''; + + if ($email === '' || $name === 'Not Committed Yet') { + continue; + } + + $contributors[] = Contributor::create($name, $email); + } + + return $contributors; + } +} diff --git a/src-dev/Spdx/ContributorExtractor/HeaderContributorExtractor.php b/src-dev/Spdx/ContributorExtractor/HeaderContributorExtractor.php new file mode 100644 index 00000000..33e87396 --- /dev/null +++ b/src-dev/Spdx/ContributorExtractor/HeaderContributorExtractor.php @@ -0,0 +1,53 @@ + + */ + +declare(strict_types=1); + +namespace Respect\Dev\Spdx\ContributorExtractor; + +use Respect\Dev\Spdx\Contributor; + +use function file_get_contents; +use function preg_match; +use function preg_match_all; + +final readonly class HeaderContributorExtractor implements ContributorExtractor +{ + public function __construct( + private string $extensionPattern, + ) { + } + + /** @return array */ + public function extract(string $filepath): array + { + $content = file_get_contents($filepath); + preg_match($this->extensionPattern, $content, $matches); + $header = $matches[1] ?? ''; + + preg_match_all('/SPDX-FileContributor:\s*(.+)$/m', $header, $matches); + + $contributors = []; + if (isset($matches[1]) === false) { + return $contributors; + } + + foreach ($matches[1] as $contributor) { + preg_match('/^(.+)( <(.+)>)?$/', $contributor, $parts); + $name = $parts[1] ?? ''; + $email = $parts[3] ?? null; + if ($name === '') { + continue; + } + + $contributors[] = Contributor::create($name, $email); + } + + return $contributors; + } +} diff --git a/src-dev/Spdx/ContributorExtractor/NormalizingContributorExtractor.php b/src-dev/Spdx/ContributorExtractor/NormalizingContributorExtractor.php new file mode 100644 index 00000000..8dd90b31 --- /dev/null +++ b/src-dev/Spdx/ContributorExtractor/NormalizingContributorExtractor.php @@ -0,0 +1,69 @@ + + */ + +declare(strict_types=1); + +namespace Respect\Dev\Spdx\ContributorExtractor; + +use Respect\Dev\Spdx\Contributor; + +use function array_values; +use function preg_match; +use function uasort; + +final readonly class NormalizingContributorExtractor implements ContributorExtractor +{ + private const array EXCLUDED_PATTERNS = [ + '/dependabot\[bot\]/', + '/github-actions\[bot\]/', + '/therespectpanda/', + ]; + + public function __construct( + private ContributorExtractor $extractor, + ) { + } + + /** @return array */ + public function extract(string $filepath): array + { + $contributors = $this->extractor->extract($filepath); + $normalized = []; + + foreach ($contributors as $contributor) { + if ($contributor->name === 'Not Committed Yet') { + continue; + } + + if ($contributor->email !== null && $this->isExcluded($contributor->email)) { + continue; + } + + if ($this->isExcluded($contributor->name)) { + continue; + } + + $normalized[$contributor->name] = $contributor; + } + + uasort($normalized, static fn($a, $b) => $a <=> $b); + + return array_values($normalized); + } + + private function isExcluded(string $value): bool + { + foreach (self::EXCLUDED_PATTERNS as $pattern) { + if (preg_match($pattern, $value) === 1) { + return true; + } + } + + return false; + } +} diff --git a/src-dev/Spdx/HeaderRebuilder/HeaderRebuilder.php b/src-dev/Spdx/HeaderRebuilder/HeaderRebuilder.php new file mode 100644 index 00000000..977fbab4 --- /dev/null +++ b/src-dev/Spdx/HeaderRebuilder/HeaderRebuilder.php @@ -0,0 +1,19 @@ + + */ + +declare(strict_types=1); + +namespace Respect\Dev\Spdx\HeaderRebuilder; + +use Respect\Dev\Spdx\Contributor; + +interface HeaderRebuilder +{ + /** @param array $contributors */ + public function rebuild(string $content, array $contributors): string; +} diff --git a/src-dev/Spdx/HeaderRebuilder/HtmlHeaderRebuilder.php b/src-dev/Spdx/HeaderRebuilder/HtmlHeaderRebuilder.php new file mode 100644 index 00000000..38c32a7f --- /dev/null +++ b/src-dev/Spdx/HeaderRebuilder/HtmlHeaderRebuilder.php @@ -0,0 +1,62 @@ + + */ + +declare(strict_types=1); + +namespace Respect\Dev\Spdx\HeaderRebuilder; + +use Respect\Dev\Spdx\Contributor; + +use function implode; +use function preg_match; +use function preg_replace; +use function sprintf; + +use const PHP_EOL; + +final class HtmlHeaderRebuilder implements HeaderRebuilder +{ + private const string SPDX_HEADER_PATTERN = '/()/'; + + /** @param array $contributors */ + public function rebuild(string $content, array $contributors): string + { + // REUSE-IgnoreStart + $spdxLines = [ + 'SPDX-License-Identifier: MIT', + 'SPDX-FileCopyrightText: (c) Respect Project Contributors', + ]; + + foreach ($contributors as $contributor) { + if ($contributor->email === null) { + $spdxLines[] = sprintf('SPDX-FileContributor: %s', $contributor->name); + continue; + } + + $spdxLines[] = sprintf('SPDX-FileContributor: %s <%s>', $contributor->name, $contributor->email); + } + + // REUSE-IgnoreEnd + + $newSpdxBlock = implode(PHP_EOL, $spdxLines); + + // If header exists, replace it + if (preg_match(self::SPDX_HEADER_PATTERN, $content) === 1) { + return preg_replace( + self::SPDX_HEADER_PATTERN, + '$1' . $newSpdxBlock . PHP_EOL . '$3', + $content, + ); + } + + // Otherwise, add header at the beginning + $header = '' . PHP_EOL . PHP_EOL; + + return $header . $content; + } +} diff --git a/src-dev/Spdx/HeaderRebuilder/PhpHeaderRebuilder.php b/src-dev/Spdx/HeaderRebuilder/PhpHeaderRebuilder.php new file mode 100644 index 00000000..41ee07fa --- /dev/null +++ b/src-dev/Spdx/HeaderRebuilder/PhpHeaderRebuilder.php @@ -0,0 +1,66 @@ + + */ + +declare(strict_types=1); + +namespace Respect\Dev\Spdx\HeaderRebuilder; + +use Respect\Dev\Spdx\Contributor; + +use function implode; +use function preg_match; +use function preg_replace; +use function sprintf; + +use const PHP_EOL; + +final class PhpHeaderRebuilder implements HeaderRebuilder +{ + private const string SPDX_HEADER_PATTERN = '/(\/\*\n)( \* SPDX-[^\n]+\n)+( \*\/)/'; + + /** @param array $contributors */ + public function rebuild(string $content, array $contributors): string + { + // REUSE-IgnoreStart + $spdxLines = [ + ' * SPDX-License-Identifier: MIT', + ' * SPDX-FileCopyrightText: (c) Respect Project Contributors', + ]; + + foreach ($contributors as $contributor) { + if ($contributor->email === null) { + $spdxLines[] = sprintf(' * SPDX-FileContributor: %s', $contributor->name); + continue; + } + + $spdxLines[] = sprintf(' * SPDX-FileContributor: %s <%s>', $contributor->name, $contributor->email); + } + + // REUSE-IgnoreEnd + + $newSpdxBlock = implode(PHP_EOL, $spdxLines); + + // If header exists, replace it + if (preg_match(self::SPDX_HEADER_PATTERN, $content) === 1) { + return preg_replace( + self::SPDX_HEADER_PATTERN, + '$1' . $newSpdxBlock . PHP_EOL . '$3', + $content, + ); + } + + // Otherwise, add header after * SPDX-FileContributor: Alexandre Gomes Gaigalas + * SPDX-FileContributor: Henrique Moody */ declare(strict_types=1); diff --git a/src/Validators/After.php b/src/Validators/After.php index c370dd57..f46217f5 100644 --- a/src/Validators/After.php +++ b/src/Validators/After.php @@ -7,9 +7,9 @@ * SPDX-FileContributor: Emmerson Siqueira * SPDX-FileContributor: Graham Campbell * SPDX-FileContributor: Henrique Moody + * SPDX-FileContributor: Kir Kolyshkin * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: Pathum Harshana De Silva - * SPDX-FileContributor: Kir Kolyshkin */ declare(strict_types=1); diff --git a/src/Validators/CreditCard.php b/src/Validators/CreditCard.php index ff023ac2..fdbf4306 100644 --- a/src/Validators/CreditCard.php +++ b/src/Validators/CreditCard.php @@ -3,13 +3,13 @@ /* * SPDX-License-Identifier: MIT * SPDX-FileCopyrightText: (c) Respect Project Contributors + * SPDX-FileContributor: Aleksandr Gorshkov * SPDX-FileContributor: Alexandre Gomes Gaigalas * SPDX-FileContributor: Andy Snell * SPDX-FileContributor: Fabio Ribeiro * SPDX-FileContributor: Graham Campbell * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Jean Pimentel - * SPDX-FileContributor: Aleksandr Gorshkov * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: Rakshit * SPDX-FileContributor: William Espindola diff --git a/src/Validators/Email.php b/src/Validators/Email.php index fb1cc395..6e9540b9 100644 --- a/src/Validators/Email.php +++ b/src/Validators/Email.php @@ -7,11 +7,11 @@ * SPDX-FileContributor: Eduardo Gulias Davis * SPDX-FileContributor: Graham Campbell * SPDX-FileContributor: Henrique Moody + * SPDX-FileContributor: Kir Kolyshkin * SPDX-FileContributor: Konstantin * SPDX-FileContributor: Mikko Pesari * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: paul karikari - * SPDX-FileContributor: Kir Kolyshkin */ declare(strict_types=1); diff --git a/src/Validators/Even.php b/src/Validators/Even.php index 4d8c174b..dcea878c 100644 --- a/src/Validators/Even.php +++ b/src/Validators/Even.php @@ -9,8 +9,8 @@ * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Jean Pimentel * SPDX-FileContributor: Nick Lombard - * SPDX-FileContributor: paul karikari * SPDX-FileContributor: Torben Brodt + * SPDX-FileContributor: paul karikari */ declare(strict_types=1); diff --git a/src/Validators/HexRgbColor.php b/src/Validators/HexRgbColor.php index c79e9ee8..5203ee07 100644 --- a/src/Validators/HexRgbColor.php +++ b/src/Validators/HexRgbColor.php @@ -4,8 +4,8 @@ * SPDX-License-Identifier: MIT * SPDX-FileCopyrightText: (c) Respect Project Contributors * SPDX-FileContributor: Alexandre Gomes Gaigalas - * SPDX-FileContributor: davidepastore * SPDX-FileContributor: Henrique Moody + * SPDX-FileContributor: davidepastore */ declare(strict_types=1); diff --git a/src/Validators/Imei.php b/src/Validators/Imei.php index 24897ea3..425bf858 100644 --- a/src/Validators/Imei.php +++ b/src/Validators/Imei.php @@ -3,11 +3,11 @@ /* * SPDX-License-Identifier: MIT * SPDX-FileCopyrightText: (c) Respect Project Contributors + * SPDX-FileContributor: Aleksandr Gorshkov * SPDX-FileContributor: Alexandre Gomes Gaigalas * SPDX-FileContributor: Danilo Benevides * SPDX-FileContributor: Diego Oliveira * SPDX-FileContributor: Henrique Moody - * SPDX-FileContributor: Aleksandr Gorshkov */ declare(strict_types=1); diff --git a/src/Validators/IntVal.php b/src/Validators/IntVal.php index a428e848..5a8778d5 100644 --- a/src/Validators/IntVal.php +++ b/src/Validators/IntVal.php @@ -7,12 +7,12 @@ * SPDX-FileContributor: Alexander Wühr * SPDX-FileContributor: Alexandre Gomes Gaigalas * SPDX-FileContributor: Andrei Drulchenko - * SPDX-FileContributor: bmorg * SPDX-FileContributor: Danilo Benevides * SPDX-FileContributor: Fabian Wiget * SPDX-FileContributor: Graham Campbell * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Nick Lombard + * SPDX-FileContributor: bmorg */ declare(strict_types=1); diff --git a/src/Validators/Json.php b/src/Validators/Json.php index b9347345..49c5265c 100644 --- a/src/Validators/Json.php +++ b/src/Validators/Json.php @@ -11,8 +11,8 @@ * SPDX-FileContributor: Graham Campbell * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Jair Henrique - * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: Kir Kolyshkin + * SPDX-FileContributor: Nick Lombard */ declare(strict_types=1); diff --git a/src/Validators/LanguageCode.php b/src/Validators/LanguageCode.php index fdaf753f..a5477f17 100644 --- a/src/Validators/LanguageCode.php +++ b/src/Validators/LanguageCode.php @@ -7,7 +7,6 @@ * SPDX-FileContributor: Danilo Benevides * SPDX-FileContributor: Emmerson * SPDX-FileContributor: Henrique Moody - * SPDX-FileContributor: The Respect Panda */ declare(strict_types=1); diff --git a/src/Validators/Luhn.php b/src/Validators/Luhn.php index 3060894a..89810e75 100644 --- a/src/Validators/Luhn.php +++ b/src/Validators/Luhn.php @@ -3,11 +3,11 @@ /* * SPDX-License-Identifier: MIT * SPDX-FileCopyrightText: (c) Respect Project Contributors + * SPDX-FileContributor: Aleksandr Gorshkov * SPDX-FileContributor: Alexandre Gomes Gaigalas * SPDX-FileContributor: Danilo Correa * SPDX-FileContributor: Fabio Ribeiro * SPDX-FileContributor: Henrique Moody - * SPDX-FileContributor: Aleksandr Gorshkov */ declare(strict_types=1); diff --git a/src/Validators/Multiple.php b/src/Validators/Multiple.php index a372d52d..193d1b79 100644 --- a/src/Validators/Multiple.php +++ b/src/Validators/Multiple.php @@ -8,8 +8,8 @@ * SPDX-FileContributor: Graham Campbell * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Jean Pimentel - * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: Kir Kolyshkin + * SPDX-FileContributor: Nick Lombard */ declare(strict_types=1); diff --git a/src/Validators/Phone.php b/src/Validators/Phone.php index c5bd905f..65c1b2f3 100644 --- a/src/Validators/Phone.php +++ b/src/Validators/Phone.php @@ -9,9 +9,9 @@ * SPDX-FileContributor: Graham Campbell * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Henrique Oliveira - * SPDX-FileContributor: mf * SPDX-FileContributor: Michael Firsikov * SPDX-FileContributor: RCooLeR + * SPDX-FileContributor: mf */ declare(strict_types=1); diff --git a/src/Validators/PostalCode.php b/src/Validators/PostalCode.php index 1217d272..c0a5a99f 100644 --- a/src/Validators/PostalCode.php +++ b/src/Validators/PostalCode.php @@ -15,9 +15,9 @@ * SPDX-FileContributor: Markus.Lauer * SPDX-FileContributor: Mateusz Burzyński * SPDX-FileContributor: Michał Prochowski - * SPDX-FileContributor: ong-ar * SPDX-FileContributor: Sebastian * SPDX-FileContributor: Tomasz Regdos + * SPDX-FileContributor: ong-ar */ declare(strict_types=1); diff --git a/src/Validators/Regex.php b/src/Validators/Regex.php index a582440a..c2ef286c 100644 --- a/src/Validators/Regex.php +++ b/src/Validators/Regex.php @@ -7,8 +7,8 @@ * SPDX-FileContributor: Danilo Correa * SPDX-FileContributor: Graham Campbell * SPDX-FileContributor: Henrique Moody - * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: Kir Kolyshkin + * SPDX-FileContributor: Nick Lombard */ declare(strict_types=1); diff --git a/src/Validators/Slug.php b/src/Validators/Slug.php index 92ef94ae..6aeb0ef6 100644 --- a/src/Validators/Slug.php +++ b/src/Validators/Slug.php @@ -10,8 +10,8 @@ * SPDX-FileContributor: Graham Campbell * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Jair Henrique - * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: Kir Kolyshkin + * SPDX-FileContributor: Nick Lombard */ declare(strict_types=1); diff --git a/src/Validators/Subset.php b/src/Validators/Subset.php index 6ac5d3ac..faf79cfd 100644 --- a/src/Validators/Subset.php +++ b/src/Validators/Subset.php @@ -8,8 +8,8 @@ * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Krzysztof Śmiałek * SPDX-FileContributor: Nick Lombard - * SPDX-FileContributor: paul karikari * SPDX-FileContributor: Singwai Chan + * SPDX-FileContributor: paul karikari */ declare(strict_types=1); diff --git a/tests/unit/Helpers/CanValidateDateTimeTest.php b/tests/unit/Helpers/CanValidateDateTimeTest.php index ae2cb509..38ce4d68 100644 --- a/tests/unit/Helpers/CanValidateDateTimeTest.php +++ b/tests/unit/Helpers/CanValidateDateTimeTest.php @@ -3,10 +3,10 @@ /* * SPDX-License-Identifier: MIT * SPDX-FileCopyrightText: (c) Respect Project Contributors - * SPDX-FileContributor: agchan12 * SPDX-FileContributor: Alexandre Gomes Gaigalas * SPDX-FileContributor: Davide Spagnoli * SPDX-FileContributor: Henrique Moody + * SPDX-FileContributor: agchan12 */ declare(strict_types=1); diff --git a/tests/unit/ValidatorBuilderTest.php b/tests/unit/ValidatorBuilderTest.php index a205a3ab..a6ccdc2c 100644 --- a/tests/unit/ValidatorBuilderTest.php +++ b/tests/unit/ValidatorBuilderTest.php @@ -7,8 +7,8 @@ * SPDX-FileContributor: Andy Wendt * SPDX-FileContributor: Gabriel Caruso * SPDX-FileContributor: Henrique Moody - * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: Kir Kolyshkin + * SPDX-FileContributor: Nick Lombard */ declare(strict_types=1); diff --git a/tests/unit/Validators/CnpjTest.php b/tests/unit/Validators/CnpjTest.php index e6c2146a..96b52bf2 100644 --- a/tests/unit/Validators/CnpjTest.php +++ b/tests/unit/Validators/CnpjTest.php @@ -9,9 +9,9 @@ * SPDX-FileContributor: Gabriel Caruso * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Jayson Reis + * SPDX-FileContributor: Leonn Leite * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: Renato Moura - * SPDX-FileContributor: Leonn Leite * SPDX-FileContributor: William Espindola */ diff --git a/tests/unit/Validators/EmailTest.php b/tests/unit/Validators/EmailTest.php index 0f91e76a..621d8701 100644 --- a/tests/unit/Validators/EmailTest.php +++ b/tests/unit/Validators/EmailTest.php @@ -7,10 +7,10 @@ * SPDX-FileContributor: Eduardo Gulias Davis * SPDX-FileContributor: Gabriel Caruso * SPDX-FileContributor: Henrique Moody + * SPDX-FileContributor: Kir Kolyshkin * SPDX-FileContributor: Konstantin * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: paul karikari - * SPDX-FileContributor: Kir Kolyshkin */ declare(strict_types=1); diff --git a/tests/unit/Validators/HexRgbColorTest.php b/tests/unit/Validators/HexRgbColorTest.php index 18f982c8..be4ad5ce 100644 --- a/tests/unit/Validators/HexRgbColorTest.php +++ b/tests/unit/Validators/HexRgbColorTest.php @@ -4,9 +4,9 @@ * SPDX-License-Identifier: MIT * SPDX-FileCopyrightText: (c) Respect Project Contributors * SPDX-FileContributor: Alexandre Gomes Gaigalas - * SPDX-FileContributor: davidepastore * SPDX-FileContributor: Gabriel Caruso * SPDX-FileContributor: Henrique Moody + * SPDX-FileContributor: davidepastore */ declare(strict_types=1); diff --git a/tests/unit/Validators/IntValTest.php b/tests/unit/Validators/IntValTest.php index 7923d431..abf4d203 100644 --- a/tests/unit/Validators/IntValTest.php +++ b/tests/unit/Validators/IntValTest.php @@ -7,11 +7,11 @@ * SPDX-FileContributor: Alexander Wühr * SPDX-FileContributor: Alexandre Gomes Gaigalas * SPDX-FileContributor: Andrei Drulchenko - * SPDX-FileContributor: bmorg * SPDX-FileContributor: Danilo Benevides * SPDX-FileContributor: Gabriel Caruso * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Nick Lombard + * SPDX-FileContributor: bmorg */ declare(strict_types=1); diff --git a/tests/unit/Validators/LuhnTest.php b/tests/unit/Validators/LuhnTest.php index f2441ce2..c65c7d69 100644 --- a/tests/unit/Validators/LuhnTest.php +++ b/tests/unit/Validators/LuhnTest.php @@ -3,12 +3,12 @@ /* * SPDX-License-Identifier: MIT * SPDX-FileCopyrightText: (c) Respect Project Contributors + * SPDX-FileContributor: Aleksandr Gorshkov * SPDX-FileContributor: Alexandre Gomes Gaigalas * SPDX-FileContributor: Danilo Correa * SPDX-FileContributor: Guilherme Siani * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: João Torquato - * SPDX-FileContributor: Aleksandr Gorshkov */ declare(strict_types=1); diff --git a/tests/unit/Validators/PhoneTest.php b/tests/unit/Validators/PhoneTest.php index 91de9efc..9cf698a1 100644 --- a/tests/unit/Validators/PhoneTest.php +++ b/tests/unit/Validators/PhoneTest.php @@ -9,8 +9,8 @@ * SPDX-FileContributor: Gabriel Caruso * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Henrique Oliveira - * SPDX-FileContributor: mf * SPDX-FileContributor: RCooLeR + * SPDX-FileContributor: mf */ declare(strict_types=1); diff --git a/tests/unit/Validators/PostalCodeTest.php b/tests/unit/Validators/PostalCodeTest.php index ca7a004e..c523421b 100644 --- a/tests/unit/Validators/PostalCodeTest.php +++ b/tests/unit/Validators/PostalCodeTest.php @@ -14,9 +14,9 @@ * SPDX-FileContributor: Henrique Moody * SPDX-FileContributor: Markus.Lauer * SPDX-FileContributor: Mateusz Burzyński - * SPDX-FileContributor: ong-ar * SPDX-FileContributor: Sebastian * SPDX-FileContributor: William Espindola + * SPDX-FileContributor: ong-ar */ declare(strict_types=1); diff --git a/tests/unit/Validators/RegexTest.php b/tests/unit/Validators/RegexTest.php index 79853279..7618bcf4 100644 --- a/tests/unit/Validators/RegexTest.php +++ b/tests/unit/Validators/RegexTest.php @@ -6,8 +6,8 @@ * SPDX-FileContributor: Alexandre Gomes Gaigalas * SPDX-FileContributor: Danilo Correa * SPDX-FileContributor: Henrique Moody - * SPDX-FileContributor: Nick Lombard * SPDX-FileContributor: Kir Kolyshkin + * SPDX-FileContributor: Nick Lombard */ declare(strict_types=1); diff --git a/tests/unit/Validators/TldTest.php b/tests/unit/Validators/TldTest.php index e2aa578f..8d4391de 100644 --- a/tests/unit/Validators/TldTest.php +++ b/tests/unit/Validators/TldTest.php @@ -7,8 +7,8 @@ * SPDX-FileContributor: Bogus * SPDX-FileContributor: Gabriel Caruso * SPDX-FileContributor: Henrique Moody - * SPDX-FileContributor: paul karikari * SPDX-FileContributor: Paulo Eduardo + * SPDX-FileContributor: paul karikari */ declare(strict_types=1);