Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions .github/workflows/build-phar.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Build Flow-PHP PHAR

on:
push:
branches: [ 1.x ]

jobs:
build-phar:
name: "Build Flow-PHP PHAR"

runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
dependencies:
- "locked"
php-version:
- "8.1"

steps:
- name: "Checkout"
uses: "actions/checkout@v3"

- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: none
tools: composer:v2
php-version: "${{ matrix.php-version }}"
ini-values: memory_limit=-1

- name: "Get Composer Cache Directory"
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: "Cache Composer dependencies"
uses: "actions/cache@v3"
with:
path: "${{ steps.composer-cache.outputs.dir }}"
key: "php-${{ matrix.php-version }}-locked-composer-${{ hashFiles('**/composer.lock') }}"
restore-keys: |
php-${{ matrix.php-version }}-locked-composer-

- name: "Install locked dependencies"
run: "composer install --no-interaction --no-progress"

- name: "Build PHAR file"
run: "composer build:phar"

- name: "Validate Flow PHAR"
run: |
./build/flow-php.phar --version

- name: "Prepare artifact name"
if: ${{ github.event_name == 'push' }}
shell: bash
run: |
BUILD_TAG=${GITHUB_SHA:0:7}
echo "BUILD_TAG=$BUILD_TAG" >> $GITHUB_ENV

- uses: actions/upload-artifact@v3
with:
name: flow-php-${{ env.BUILD_TAG }}.phar
path: build/flow-php.phar
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
vendor
var
docker-compose.yml
docker-compose.yml
build/flow-php.phar
17 changes: 12 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Please check below packages and select only those that you are going to use:

For example if you want to work with json/csv files here are dependencies you will need to install:

```
```shell
composer require flow-php/etl:^0.1 flow-php/etl-adapter-csv:^0.1 flow-php/etl-adapter-json:^0.1
```

Expand All @@ -53,21 +53,21 @@ For the code coverage, please install [pcov](https://pecl.php.net/package/pcov).

### Prepare Project:

```
```shell
cp docker-compose.yml.dist docker-compose.yml
composer install
docker compose up -d
```

### Run Test Suite

```
```shell
composer test
```

### Run Static Analyze

```
```shell
composer static:analyze
```

Expand All @@ -76,10 +76,17 @@ composer static:analyze
This command will execute exactly the same tests as we run at Github Actions before PR can get merged.
If it passes locally, you are good to open pull request.

```
```shell
composer build
```

## Building PHAR

```shell
composer build:phar
./flow-php.phar --version
```

## Usage

In order to understand how Flow works, please read [documentation](src/core/etl/README.md)
Expand Down
24 changes: 24 additions & 0 deletions box.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"alias": "flow-php.phar",
"banner": false,
"blacklist": [
".github",
"examples",
"docs",
"tests",
"tools",
"var",
"vendor/fig",
"vendor/php-http/mock-client"
],
"compression": "GZ",
"directories": [
"build",
"src",
"vendor"
],
"git-commit-short": "git_commit_short",
"main": "build/runtime.php",
"metadata": "FlowVersion::getVersion",
"output": "build/flow-php.phar"
}
33 changes: 33 additions & 0 deletions build/runtime.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

declare(strict_types=1);

require 'phar://flow-php.phar/vendor/autoload.php';

use Flow\ETL\PipelineFactory;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\SingleCommandApplication;
use Symfony\Component\Console\Style\SymfonyStyle;

(new SingleCommandApplication())
->setName('Flow-PHP - Extract Transform Load - Data processing framework')
->setVersion(FlowVersion::getVersion())
->addArgument('input-file', InputArgument::REQUIRED, '')
->setCode(function (InputInterface $input, OutputInterface $output): int {
try {
/** @phpstan-ignore-next-line */
$loader = new PipelineFactory((string) $input->getArgument('input-file'));
$loader->run();
} catch (\Exception $exception) {
$style = new SymfonyStyle($input, $output);
$style->error($exception->getMessage());

return Command::FAILURE;
}

return Command::SUCCESS;
})
->run();
11 changes: 11 additions & 0 deletions build/version.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

declare(strict_types=1);

final class FlowVersion
{
public static function getVersion(): string
{
return '1.0.x-@git_commit_short@';
}
}
8 changes: 7 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
"psr/simple-cache": "^1.0 || ^2.0 || ^3.0",
"react/child-process": "^0.6.4",
"react/promise": "^2.9.0",
"react/socket": "^1.11"
"react/socket": "^1.11",
"symfony/console": "^6.3"
},
"require-dev": {
"aeon-php/calendar": "^1.0",
Expand All @@ -54,6 +55,7 @@
},
"autoload": {
"files": [
"build/version.php",
"src/core/etl/src/Flow/ETL/DSL/functions.php",
"src/lib/array-dot/src/Flow/ArrayDot/array_dot.php"
],
Expand Down Expand Up @@ -165,6 +167,9 @@
"cs:php:fix": [
"tools/cs-fixer/vendor/bin/php-cs-fixer fix"
],
"build:phar": [
"tools/box/vendor/bin/box compile"
],
"pre-autoload-dump": "Google\\Task\\Composer::cleanup",
"post-install-cmd": [
"@tools:install"
Expand All @@ -173,6 +178,7 @@
"@tools:install"
],
"tools:install": [
"composer install --working-dir=./tools/box",
"composer install --working-dir=./tools/cs-fixer",
"composer install --working-dir=./tools/infection",
"composer install --working-dir=./tools/monorepo",
Expand Down
Loading