-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* #1 - added simple setup of package with tests, codestyle and environment stuff * #1 - wip: moved shell commands to php methods * #1 - rollback to option with bash script, added readme * #1 - wip: added helper class, updated tests and readme * #1 - ci fix * #1 - ci fix * #1 - ci fix * #1 - composer php update * #1 - ci update * #1 - ci update * Apply suggestions from code review Co-authored-by: Ewelina Skrzypacz <[email protected]> * #1 - cr fixes * #1 - cr fixes * #1 - cr fix --------- Co-authored-by: Ewelina Skrzypacz <[email protected]>
- Loading branch information
1 parent
0240ef7
commit 3a5eaa3
Showing
16 changed files
with
495 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
name: Check PR Title | ||
on: | ||
pull_request: | ||
branches: [ "main" ] | ||
types: [opened, edited, synchronize, ready_for_review, reopened] | ||
|
||
jobs: | ||
check-pr-title: | ||
name: Check PR title | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- uses: blumilksoftware/[email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
name: Test & lint PHP codebase | ||
|
||
on: | ||
pull_request: | ||
branches: [ "main" ] | ||
types: [opened, synchronize, reopened, ready_for_review] | ||
paths: | ||
- '**.php' | ||
- 'composer.json' | ||
- 'composer.lock' | ||
- 'phpunit.xml' | ||
|
||
jobs: | ||
test-and-lint-php: | ||
name: Test & lint PHP codebase | ||
timeout-minutes: 10 | ||
if: github.event.pull_request.draft == false | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/[email protected] | ||
|
||
- name: Validate composer.json and composer.lock | ||
run: composer validate | ||
|
||
- name: Cache dependencies | ||
uses: actions/[email protected] | ||
with: | ||
path: vendor | ||
key: ${{ runner.os }}-composer-dependencies-${{ hashFiles('composer.lock') }} | ||
restore-keys: ${{ runner.os }}-composer-dependencies | ||
|
||
- name: Setup PHP | ||
uses: shivammathur/[email protected] | ||
with: | ||
php-version: 8.3 | ||
extensions: dom, curl, libxml, mbstring, zip, pcntl, intl | ||
coverage: none | ||
|
||
- name: Install dependencies | ||
run: composer install --prefer-dist --no-progress | ||
|
||
- name: Run code style checker | ||
run: composer cs | ||
|
||
- name: Run tests | ||
run: composer test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
version: 2 | ||
|
||
updates: | ||
- package-ecosystem: composer | ||
directory: "/" | ||
schedule: | ||
interval: monthly | ||
time: "06:30" | ||
timezone: "Europe/Warsaw" | ||
commit-message: | ||
prefix: "- (php) " | ||
target-branch: main | ||
open-pull-requests-limit: 1 | ||
|
||
- package-ecosystem: github-actions | ||
directory: "/" | ||
schedule: | ||
interval: monthly | ||
time: "06:30" | ||
timezone: "Europe/Warsaw" | ||
commit-message: | ||
prefix: "- (github actions) " | ||
target-branch: main | ||
open-pull-requests-limit: 1 | ||
|
||
- package-ecosystem: docker | ||
directory: "/" | ||
schedule: | ||
interval: monthly | ||
time: "06:30" | ||
timezone: "Europe/Warsaw" | ||
commit-message: | ||
prefix: "- (docker dev) " | ||
target-branch: main | ||
open-pull-requests-limit: 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
/.composer | ||
/.idea | ||
/vendor | ||
|
||
composer.lock | ||
.env |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
.PHONY: shell | ||
shell: | ||
docker compose exec php bash | ||
|
||
.PHONY: test | ||
test: | ||
docker compose exec php composer test | ||
|
||
.PHONY: csf | ||
csf: | ||
docker compose exec php composer csf | ||
|
||
.PHONY: run | ||
run: | ||
docker compose up -d | ||
|
||
.PHONY: build | ||
build: | ||
docker compose build | ||
|
||
.PHONY: stop | ||
stop: | ||
docker compose stop | ||
|
||
.PHONY: restart | ||
restart: stop run |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
use Blumilk\Codestyle\Config; | ||
use Blumilk\Codestyle\Configuration\Defaults\Paths; | ||
|
||
$paths = new Paths("src", "tests"); | ||
|
||
$config = new Config( | ||
paths: $paths, | ||
); | ||
|
||
return $config->config(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
{ | ||
"name": "blumilksoftware/version", | ||
"description": "Blumilk versioning package", | ||
"license": "MIT", | ||
"type": "library", | ||
"require": { | ||
"php": "^8.3", | ||
"symfony/process": "v7.0.7" | ||
}, | ||
"require-dev": { | ||
"blumilksoftware/codestyle": "^v3.0.0", | ||
"phpunit/phpunit": "^11.0.9" | ||
}, | ||
"authors": [ | ||
{ | ||
"name": "Kamil Piech", | ||
"email": "[email protected]" | ||
} | ||
], | ||
"config": { | ||
"optimize-autoloader": true, | ||
"sort-packages": true | ||
}, | ||
"autoload": { | ||
"psr-4": { | ||
"Blumilk\\Version\\": "src/" | ||
} | ||
}, | ||
"scripts": { | ||
"cs": "./vendor/bin/php-cs-fixer fix --dry-run --diff --config codestyle.php", | ||
"csf": "./vendor/bin/php-cs-fixer fix --diff --config codestyle.php", | ||
"test": "./vendor/bin/phpunit tests --colors=always" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
services: | ||
php: | ||
container_name: blumilk-version | ||
build: | ||
context: environment/php | ||
tty: true | ||
working_dir: /application | ||
user: ${CURRENT_UID:-1000} | ||
volumes: | ||
- .:/application |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
ARG PHP_VERSION=8.3.6-cli-bookworm | ||
ARG COMPOSER_TAG_VERSION=2.7.4-bin | ||
|
||
FROM composer/composer:${COMPOSER_TAG_VERSION} AS composer_binary | ||
|
||
FROM php:${PHP_VERSION} | ||
|
||
COPY --from=composer_binary /composer /usr/bin/composer | ||
|
||
RUN apt-get update && apt-get install -y git zip \ | ||
&& apt-get install -y libzip-dev \ | ||
&& docker-php-ext-install zip |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,82 @@ | ||
[![Packagist PHP Version Support](https://img.shields.io/packagist/php-v/blumilksoftware/version?style=for-the-badge)](https://packagist.org/packages/blumilksoftware/version) | ||
[![Packagist Version](https://img.shields.io/packagist/v/blumilksoftware/version?style=for-the-badge)](https://packagist.org/packages/blumilksoftware/version) | ||
[![Packagist Downloads](https://img.shields.io/packagist/dt/blumilksoftware/version?style=for-the-badge)](https://packagist.org/packages/blumilksoftware/version/stats) | ||
|
||
## blumilksoftware/version | ||
A versioning based on git for all Blumilk projects. If Git is not available, it falls back to the timestamp. | ||
|
||
### Usage | ||
Add package to the project: | ||
```shell | ||
composer require blumilksoftware/version | ||
``` | ||
|
||
Then use the `Version` class to generate version strings based on Git or timestamp: | ||
```php | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
use Blumilk\Version\Version; | ||
|
||
$version = (new Version())->generate(); | ||
``` | ||
|
||
#### Configuration | ||
You can configure the `Version` class to generate long version strings: | ||
```php | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
use Blumilk\Version\Version; | ||
|
||
$version = (new Version(true))->generate(); | ||
``` | ||
#### Helper class | ||
You can use also the `VersionHelper` class to generate version strings: | ||
```php | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
use Blumilk\Version\VersionHelper; | ||
|
||
$shortVersion = VersionHelper::generateShortVersion(); | ||
$longVersion = VersionHelper::generateLongVersion(); | ||
``` | ||
### Contributing | ||
In a cloned or forked repository, run: | ||
```shell | ||
composer install | ||
``` | ||
|
||
There are scripts available for package codestyle checking and testing: | ||
|
||
| Command | Description | | ||
|-----------------|--------------------------------------------------------------| | ||
| `composer cs` | Runs codestyle against the package itself | | ||
| `composer csf` | Runs codestyle with fixer enabled against the package itself | | ||
| `composer test` | Runs all test cases | | ||
|
||
There is also the Docker Compose configuration available: | ||
```shell | ||
docker compose up -d | ||
docker compose exec php php -v | ||
docker compose exec php composer -v | ||
``` | ||
|
||
There are also Makefile commands available: | ||
```shell | ||
make run | ||
make shell | ||
make test | ||
make csf | ||
make stop | ||
``` | ||
|
||
Please maintain our project guidelines: | ||
* keep issues well described, labeled and in English, | ||
* add the issue number to all your commits, | ||
* add the issue number to your branch name, | ||
* squash your commits into one commit with a standardized name. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Blumilk\Version; | ||
|
||
use Symfony\Component\Process\Process; | ||
|
||
class Version | ||
{ | ||
public const string SCRIPTS_DIRECTORY = "src/scripts/"; | ||
|
||
public function __construct( | ||
public bool $long = false, | ||
) {} | ||
|
||
public function setLong(bool $long): void | ||
{ | ||
$this->long = $long; | ||
} | ||
|
||
public function generate(): string | ||
{ | ||
return (new Process(["./check.sh"], self::SCRIPTS_DIRECTORY))->run() | ||
? $this->getVersionBasedOnGit() | ||
: $this->getVersionBasedOnTimestamp(); | ||
} | ||
|
||
private function getVersionBasedOnGit(): string | ||
{ | ||
$process = new Process(["./version.sh"], self::SCRIPTS_DIRECTORY); | ||
|
||
if ($this->long) { | ||
$process = new Process(["./version.sh", "--long"], self::SCRIPTS_DIRECTORY); | ||
} | ||
|
||
$process->mustRun(); | ||
|
||
return $process->isSuccessful() | ||
? $process->getOutput() | ||
: $this->getVersionBasedOnTimestamp(); | ||
} | ||
|
||
private function getVersionBasedOnTimestamp(): string | ||
{ | ||
return (string)time(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Blumilk\Version; | ||
|
||
class VersionHelper | ||
{ | ||
public static function generateShortVersion(): string | ||
{ | ||
return (new Version())->generate(); | ||
} | ||
|
||
public static function generateLongVersion(): string | ||
{ | ||
return (new Version(long: true))->generate(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/env sh | ||
|
||
isGitRepo() { | ||
git rev-parse --is-inside-work-tree >/dev/null 2>&1 | ||
} | ||
|
||
isGitRepo | ||
if [ $? -gt 0 ]; then | ||
echo "Not a git repository." | ||
return 0 | ||
fi | ||
|
||
echo "Git repository detected." | ||
return 1 |
Oops, something went wrong.