Skip to content

Commit

Permalink
small updates, move contributing info out of readme
Browse files Browse the repository at this point in the history
  • Loading branch information
ericsizemore committed Apr 10, 2024
1 parent 680a434 commit 1384c22
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 46 deletions.
38 changes: 38 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Contributing

Clock accepts contributions of code and documentation from the community.
These contributions can be made in the form of Issues or [Pull Requests](http://help.github.com/send-pull-requests/) on the [Clock repository](https://github.com/ericsizemore/clock).

Clock is licensed under the MIT license. When submitting new features or patches to Clock, you are giving permission to license those features or patches under the MIT license.

Clock tries to adhere to PHPStan level 9 with strict rules and bleeding edge. Please ensure any contributions do as well.


## Guidelines

Before we look into how, here are the guidelines. If your Pull Requests fail to pass these guidelines it will be declined, and you will need to re-submit when you’ve made the changes. This might sound a bit tough, but it is required for me to maintain quality of the code-base.


## PHP Style

Please ensure all new contributions match the [PSR-12](https://www.php-fig.org/psr/psr-12/) coding style guide. The project is not fully PSR-12 compatible, yet; however, to ensure the easiest transition to the coding guidelines, I would like to go ahead and request that any contributions follow them.


## Documentation

If you change anything that requires a change to documentation then you will need to add it. New methods, parameters, changing default values, adding constants, etc. are all things that will require a change to documentation. The change-log must also be updated for every change. Also, PHPDoc blocks must be maintained.


### Documenting functions/variables (PHPDoc)

Please ensure all new contributions adhere to:

* [PSR-5 PHPDoc](https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md)
* [PSR-19 PHPDoc Tags](https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc-tags.md)

when documenting new functions, or changing existing documentation.


### Branching

One thing at a time: A pull request should only contain one change. That does not mean only one commit, but one change - however many commits it took. The reason for this is that if you change X and Y but send a pull request for both at the same time, we might really want X but disagree with Y, meaning we cannot merge the request. Using the Git-Flow branching model you can create new branches for both of these features and send two requests.
37 changes: 1 addition & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,42 +52,7 @@ Issues are the quickest way to report a bug. If you find a bug or documentation

### Contributing

Clock accepts contributions of code and documentation from the community.
These contributions can be made in the form of Issues or [Pull Requests](http://help.github.com/send-pull-requests/) on the [Clock repository](https://github.com/ericsizemore/clock).

Clock is licensed under the MIT license. When submitting new features or patches to Clock, you are giving permission to license those features or patches under the MIT license.

Clock tries to adhere to PHPStan level 9 with strict rules and bleeding edge. Please ensure any contributions do as well.


#### Guidelines

Before we look into how, here are the guidelines. If your Pull Requests fail to pass these guidelines it will be declined, and you will need to re-submit when you’ve made the changes. This might sound a bit tough, but it is required for me to maintain quality of the code-base.


#### PHP Style

Please ensure all new contributions match the [PSR-12](https://www.php-fig.org/psr/psr-12/) coding style guide. The project is not fully PSR-12 compatible, yet; however, to ensure the easiest transition to the coding guidelines, I would like to go ahead and request that any contributions follow them.


#### Documentation

If you change anything that requires a change to documentation then you will need to add it. New methods, parameters, changing default values, adding constants, etc. are all things that will require a change to documentation. The change-log must also be updated for every change. Also, PHPDoc blocks must be maintained.


##### Documenting functions/variables (PHPDoc)

Please ensure all new contributions adhere to:

* [PSR-5 PHPDoc](https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md)
* [PSR-19 PHPDoc Tags](https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc-tags.md)

when documenting new functions, or changing existing documentation.


#### Branching

One thing at a time: A pull request should only contain one change. That does not mean only one commit, but one change - however many commits it took. The reason for this is that if you change X and Y but send a pull request for both at the same time, we might really want X but disagree with Y, meaning we cannot merge the request. Using the Git-Flow branching model you can create new branches for both of these features and send two requests.
* See [CONTRIBUTING.MD](CONTRIBUTING.MD)


### Backward Compatibility Promise
Expand Down
2 changes: 2 additions & 0 deletions src/ClockInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ public function now(): DateTimeImmutable;

/**
* Returns a new *Clock at current system time in UTC.
*
* @throws \DateInvalidTimeZoneException
*/
public static function fromUtc(): ClockInterface;
}
6 changes: 3 additions & 3 deletions src/FrozenClock.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public function now(): DateTimeImmutable
}

/**
* @inheritDoc
* Sets the FrozenClock to a specific time.
*/
public function setTo(DateTimeImmutable $now): void
{
Expand All @@ -58,9 +58,9 @@ public function setTo(DateTimeImmutable $now): void
/**
* @inheritDoc
*/
public static function fromUtc(): static
public static function fromUtc(): FrozenClock
{
return new static(
return new FrozenClock(
new DateTimeImmutable('now', new DateTimeZone('UTC'))
);
}
Expand Down
17 changes: 10 additions & 7 deletions src/SystemClock.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
*
* @immutable
*/
final class SystemClock implements ClockInterface
final readonly class SystemClock implements ClockInterface
{
private readonly DateTimeZone $timezone;
private DateTimeZone $timezone;

/**
* @throws DateInvalidTimeZoneException If $timezone is passed as string and is invalid.
Expand All @@ -42,7 +42,8 @@ public function __construct(DateTimeZone | string | null $timezone = null)

try {
$this->timezone = new DateTimeZone($timezone === '' ? 'UTC' : $timezone);
} catch (Throwable $throwable) { // \Exception < PHP 8.3, \DateInvalidTimeZoneException >= PHP 8.3
// \Exception < PHP 8.3, \DateInvalidTimeZoneException >= PHP 8.3
} catch (Throwable $throwable) {
throw new DateInvalidTimeZoneException($throwable->getMessage(), \intval($throwable->getCode()), $throwable);
}

Expand Down Expand Up @@ -83,17 +84,19 @@ public function now(): DateTimeImmutable

/**
* Returns a new SystemClock at current system time using the system's timezone.
*
* @throws DateInvalidTimeZoneException
*/
public static function fromSystemTimezone(): static
public static function fromSystemTimezone(): SystemClock
{
return new static(new DateTimeZone(date_default_timezone_get()));
return new SystemClock(new DateTimeZone(date_default_timezone_get()));
}

/**
* @inheritDoc
*/
public static function fromUtc(): static
public static function fromUtc(): SystemClock
{
return new static(new DateTimeZone('UTC'));
return new SystemClock(new DateTimeZone('UTC'));
}
}

0 comments on commit 1384c22

Please sign in to comment.