From 5fe3fb0ddf496d7b9f68db90d734fd29ac7e3dab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 19 Jan 2020 12:20:20 +0100 Subject: [PATCH] Enhancement: Add Header --- .php_cs | 19 +++-- CHANGELOG.md | 2 + .../header.txt | 0 src/Header.php | 57 +++++++++++++ test/Unit/HeaderTest.php | 81 +++++++++++++++++++ 5 files changed, 149 insertions(+), 10 deletions(-) rename .license/header-template.txt => resource/header.txt (100%) create mode 100644 src/Header.php create mode 100644 test/Unit/HeaderTest.php diff --git a/.php_cs b/.php_cs index a1f0b45e..ee40557f 100644 --- a/.php_cs +++ b/.php_cs @@ -14,14 +14,12 @@ declare(strict_types=1); use Ergebnis\License; use Ergebnis\PhpCsFixer\Config; -$holder = License\Holder::fromString('Andreas Möller'); $range = License\Range::since( License\Year::fromString('2020'), new \DateTimeZone('UTC') ); -$url = License\Url::fromString('https://github.com/ergebnis/license'); -$headerTemplate = License\Template::fromFile(__DIR__ . '/.license/header-template.txt'); +$holder = License\Holder::fromString('Andreas Möller'); $file = License\File::create( __DIR__ . '/LICENSE', @@ -32,14 +30,15 @@ $file = License\File::create( $file->save(); -$header = $headerTemplate->toString([ - '' => \basename($file->name()), - '' => $holder->toString(), - '' => $range->toString(), - '' => $url->toString(), -]); +$header = License\Header::create( + License\Template::fromFile(__DIR__ . '/resource/header.txt'), + $range, + $holder, + $file, + License\Url::fromString('https://github.com/ergebnis/license') +); -$config = Config\Factory::fromRuleSet(new Config\RuleSet\Php71($header)); +$config = Config\Factory::fromRuleSet(new Config\RuleSet\Php71($header->toString())); $config->getFinder() ->ignoreDotFiles(false) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2c8650a..80cb780a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ For a full diff see [`675601b...master`][675601b...master]. * Added `Url` ([#19]), by [@localheinz] * Added `Template` ([#20]), by [@localheinz] * Added `File` ([#33]), by [@localheinz] +* Added `Header` ([#34]), by [@localheinz] [675601b...master]: https://github.com/ergebnis/license/compare/675601b...master @@ -25,5 +26,6 @@ For a full diff see [`675601b...master`][675601b...master]. [#19]: https://github.com/ergebnis/license/pull/19 [#20]: https://github.com/ergebnis/license/pull/20 [#33]: https://github.com/ergebnis/license/pull/33 +[#34]: https://github.com/ergebnis/license/pull/34 [@localheinz]: https://github.com/localheinz diff --git a/.license/header-template.txt b/resource/header.txt similarity index 100% rename from .license/header-template.txt rename to resource/header.txt diff --git a/src/Header.php b/src/Header.php new file mode 100644 index 00000000..971a1ac8 --- /dev/null +++ b/src/Header.php @@ -0,0 +1,57 @@ +template = $template; + $this->period = $period; + $this->holder = $holder; + $this->file = $file; + $this->url = $url; + } + + public static function create(Template $template, Period $period, Holder $holder, File $file, Url $url): self + { + return new self( + $template, + $period, + $holder, + $file, + $url + ); + } + + public function toString(): string + { + return $this->template->toString([ + '' => \basename($this->file->name()), + '' => $this->holder->toString(), + '' => $this->period->toString(), + '' => $this->url->toString(), + ]); + } +} diff --git a/test/Unit/HeaderTest.php b/test/Unit/HeaderTest.php new file mode 100644 index 00000000..f9b99a9f --- /dev/null +++ b/test/Unit/HeaderTest.php @@ -0,0 +1,81 @@ +year), + new \DateTimeZone($faker->timezone) + ); + $holder = Holder::fromString($faker->name); + $file = File::create( + \sprintf( + '%s/%s.txt', + __DIR__, + $faker->slug + ), + Template::fromFile(__DIR__ . '/../../resource/license/MIT.txt'), + $range, + $holder + ); + $url = Url::fromString($faker->url); + + $header = Header::create( + $template, + $range, + $holder, + $file, + $url + ); + + $expected = $template->toString([ + '' => \basename($file->name()), + '' => $holder->toString(), + '' => $range->toString(), + '' => $url->toString(), + ]); + + self::assertSame($expected, $header->toString()); + } +}