Skip to content

Commit

Permalink
Merge pull request #4 from waveygroup/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
0x51D authored Mar 12, 2022
2 parents 370e597 + 8f487fa commit 74def33
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 42 deletions.
2 changes: 1 addition & 1 deletion config/gravatar.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,5 @@
| jpg, jpeg, gif, png
|
*/
'default_format' => env('GRAVATAR_DEFAULT_FORMAT', 'jpg')
'default_format' => env('GRAVATAR_DEFAULT_FORMAT', 'jpg'),
];
71 changes: 41 additions & 30 deletions configure.php
Original file line number Diff line number Diff line change
@@ -1,35 +1,40 @@
#!/usr/bin/env php
<?php

function ask(string $question, string $default = ''): string {
$answer = readline($question . ($default ? " ({$default})" : null) . ': ');
function ask(string $question, string $default = ''): string
{
$answer = readline($question.($default ? " ({$default})" : null).': ');

if (! $answer) {
if (!$answer) {
return $default;
}

return $answer;
}

function confirm(string $question, bool $default = false): bool {
$answer = ask($question . ' (' . ($default ? 'Y/n' : 'y/N') . ')');
function confirm(string $question, bool $default = false): bool
{
$answer = ask($question.' ('.($default ? 'Y/n' : 'y/N').')');

if (! $answer) {
if (!$answer) {
return $default;
}

return strtolower($answer) === 'y';
}

function writeln(string $line): void {
echo $line . PHP_EOL;
function writeln(string $line): void
{
echo $line.PHP_EOL;
}

function run(string $command): string {
function run(string $command): string
{
return trim(shell_exec($command));
}

function str_after(string $subject, string $search): string {
function str_after(string $subject, string $search): string
{
$pos = strrpos($subject, $search);

if ($pos === false) {
Expand All @@ -39,15 +44,18 @@ function str_after(string $subject, string $search): string {
return substr($subject, $pos + strlen($search));
}

function slugify(string $subject): string {
function slugify(string $subject): string
{
return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $subject), '-'));
}

function title_case(string $subject): string {
function title_case(string $subject): string
{
return str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $subject)));
}

function replace_in_file(string $file, array $replacements): void {
function replace_in_file(string $file, array $replacements): void
{
$contents = file_get_contents($file);

file_put_contents(
Expand All @@ -60,7 +68,8 @@ function replace_in_file(string $file, array $replacements): void {
);
}

function removeReadmeParagraphs(string $file): void {
function removeReadmeParagraphs(string $file): void
{
$contents = file_get_contents($file);

file_put_contents(
Expand All @@ -69,16 +78,19 @@ function removeReadmeParagraphs(string $file): void {
);
}

function determineSeparator(string $path): string {
function determineSeparator(string $path): string
{
return str_replace('/', DIRECTORY_SEPARATOR, $path);
}

function replaceForWindows(): array {
function replaceForWindows(): array
{
return preg_split('/\\r\\n|\\r|\\n/', run('dir /S /B * | findstr /v /i .git\ | findstr /v /i vendor | findstr /v /i '.basename(__FILE__).' | findstr /r /i /M /F:/ ":author :vendor :package VendorName skeleton vendor_name vendor_slug author@domain.com"'));
}

function replaceForAllOtherOSes(): array {
return explode(PHP_EOL, run('grep -E -r -l -i ":author|:vendor|:package|VendorName|skeleton|vendor_name|vendor_slug|author@domain.com" --exclude-dir=vendor ./* ./.github/* | grep -v ' . basename(__FILE__)));
function replaceForAllOtherOSes(): array
{
return explode(PHP_EOL, run('grep -E -r -l -i ":author|:vendor|:package|VendorName|skeleton|vendor_name|vendor_slug|author@domain.com" --exclude-dir=vendor ./* ./.github/* | grep -v '.basename(__FILE__)));
}

$gitName = run('git config user.name');
Expand Down Expand Up @@ -117,32 +129,31 @@ function replaceForAllOtherOSes(): array {

writeln('This script will replace the above values in all relevant files in the project directory.');

if (! confirm('Modify files?', true)) {
if (!confirm('Modify files?', true)) {
exit(1);
}

$files = (str_starts_with(strtoupper(PHP_OS), 'WIN') ? replaceForWindows() : replaceForAllOtherOSes());

foreach ($files as $file) {
replace_in_file($file, [
':author_name' => $authorName,
':author_username' => $authorUsername,
'author@domain.com' => $authorEmail,
':vendor_name' => $vendorName,
':vendor_slug' => $vendorSlug,
'VendorName' => $vendorNamespace,
':package_name' => $packageName,
':package_slug' => $packageSlug,
'Skeleton' => $className,
':author_name' => $authorName,
':author_username' => $authorUsername,
'author@domain.com' => $authorEmail,
':vendor_name' => $vendorName,
':vendor_slug' => $vendorSlug,
'VendorName' => $vendorNamespace,
':package_name' => $packageName,
':package_slug' => $packageSlug,
'Skeleton' => $className,
':package_description' => $description,
]);

match (true) {
str_contains($file, determineSeparator('src/Gravatar.php')) => rename($file, determineSeparator('./src/' . $className . 'Class.php')),
str_contains($file, determineSeparator('src/Gravatar.php')) => rename($file, determineSeparator('./src/'.$className.'Class.php')),
str_contains($file, 'README.md') => removeReadmeParagraphs($file),
default => [],
};

}

confirm('Execute `composer install` and run tests?') && run('composer install && composer test');
Expand Down
5 changes: 4 additions & 1 deletion src/Facades/Gravatar.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,8 @@ class Gravatar extends Facade
*
* @return string
*/
public static function getFacadeAccessor() { return 'gravatar'; }
public static function getFacadeAccessor()
{
return 'gravatar';
}
}
23 changes: 15 additions & 8 deletions src/Gravatar.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,36 +11,41 @@ class Gravatar
* Generate the Gravatar URL.
*
* @param string $email
* @return string
*
* @throws EmailException
*
* @return string
*/
public function generate(string $email): string
{
$this->validate($email);
$hash = $this->generateEmailHash($email);

return $this->generateUrl($hash);
}

/**
* Put together the Gravatar URL.
*
* @param $hash
*
* @return string
*/
private function generateUrl($hash): string
{
return config('gravatar.base_url')
. $hash
. '.' . config('gravatar.default_format')
. '?s=' . config('gravatar.default_size')
. '&d=' . config('gravatar.default_image')
. '&r=' . config('gravatar.default_rating');
.$hash
.'.'.config('gravatar.default_format')
.'?s='.config('gravatar.default_size')
.'&d='.config('gravatar.default_image')
.'&r='.config('gravatar.default_rating');
}

/**
* Generate the email hash.
*
* @param string $email
*
* @return string
*/
private function generateEmailHash(string $email): string
Expand All @@ -52,13 +57,15 @@ private function generateEmailHash(string $email): string
* Validate the given email address.
*
* @param string $email
* @return void
*
* @throws EmailException
*
* @return void
*/
private function validate(string $email): void
{
$validator = Validator::make(['email' => $email], [
'email' => 'required|email'
'email' => 'required|email',
]);

if ($validator->fails()) {
Expand Down
3 changes: 1 addition & 2 deletions src/GravatarServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
namespace Wavey\LaravelGravatar;

use Illuminate\Support\ServiceProvider;
use Wavey\LaravelGravatar\Gravatar;

class GravatarServiceProvider extends ServiceProvider
{
Expand All @@ -16,7 +15,7 @@ public function register()
{
$this->mergeConfigFrom(__DIR__.'/../config/gravatar.php', 'gravatar');
$this->app->singleton('gravatar', function () {
return new Gravatar;
return new Gravatar();
});
}

Expand Down

0 comments on commit 74def33

Please sign in to comment.