2017 © Pedro Peláez
 

library phulp

The task manager for PHP

image

reisraff/phulp

The task manager for PHP

  • Tuesday, July 3, 2018
  • by reisraff
  • Repository
  • 23 Watchers
  • 283 Stars
  • 3,174 Installations
  • PHP
  • 9 Dependents
  • 0 Suggesters
  • 18 Forks
  • 0 Open issues
  • 25 Versions
  • 16 % Grown

The README.md

phulp, (*1)

The task manager for php, (*2)

Latest Stable Version Total Downloads Latest Unstable Version License Build Status, (*3)

Why

Sometimes I need a tool like Gulp for my PHP projects, but I don't want to install npm only to install Gulp. I thought "I need something like Gulp, but in PHP". After a little research I found Phing, but it's not focused in minification and management for CSS/JS and related frontend stuff., (*4)

Well, I decided to write Phulp, the PHP port of Gulp! And a little curiosity: it's faster than Gulp., (*5)

PS: I made benchs using PHP 7, (*6)

Documentation

Plugins

Like Gulp we also have plugins, and you also can create your own., (*7)

Available plugins you can find in the plugin section over the Phulp Page., (*8)

To make your plugin available in the Phulp plugin page, add the keyword "phulpplugin" in your composer.json file of your project, and don't forget to let a cool composer.json description., (*9)

And tag your github project with the tags "phulpplugin", and "phulp", to be searchable on github., (*10)

Usage

Install:
$ composer require --dev reisraff/phulp
Create your Phulpfile (the configuration file, that describes all your tasks):
<?php

use Phulp\Output as out;

// Define the default task
$phulp->task('default', function ($phulp) {
    out::outln(out::colorize('Arguments:', 'green'));
    out::outln(print_r($phulp->getArguments(), true));

    $phulp->start(['clean', 'iterate_src_folder', 'sync_command', 'async_command']);
    if ($phulp->getArgument('repeat-clean', false)) {
        out::outln(out::colorize('Repeating "clean"', 'green'));
        $phulp->start(['clean']);
    }
});

// Define the clean task
$phulp->task('clean', function ($phulp) {
    if (! file_exists('dist')) {
        mkdir('dist');
    }
    $phulp->src(['dist/*'])
        ->pipe($phulp->clean());
});

// Define the iterate_src_folder task
$phulp->task('iterate_src_folder', function ($phulp) {
    // Define the source folder
    $phulp->src(['src/*php'])
        ->pipe($phulp->iterate(function ($file) {
            out::outln(sprintf(
                '%s %s',
                out::colorize('Iterated ->', 'green'),
                out::colorize($file->getFullPath() . DIRECTORY_SEPARATOR . $file->getName(), 'blue')
            ));
        }))
        ->pipe($phulp->dest('dist/'));
});

// Define the sync_command task
$phulp->task('sync_command', function ($phulp) {
    $command = $phulp->exec(
        'sleep 1 && echo $MSG',
        [
            'env' => [
                'MSG' => 'Sync-command'
            ],
            'cwd' => '/tmp',
            'sync' => true, // defines sync,
            'quiet' => true,
            'onStdOut' => function ($line) { out::outln($line); },
            'onStdErr' => function ($line) { },
            'onFinish' => function ($exitCode, $stdOut, $stdErr) { },
        ]
    );

    $exitCode = $command->getExitCode();
    $stdout = $command->getStdout();
    $stderr = $command->getStderr();

    out::outln('done');
});

// Define the async_command task
$phulp->task('async_command', function ($phulp) {
    $command = $phulp->exec(
        'sleep 1 && echo $MSG',
        [
            'env' => [
                'MSG' => 'Async-command'
            ],
            'cwd' => '/tmp',
            'sync' => false, // defines async,
            'quiet' => false,
            'onStdOut' => function ($line) { },
            'onStdErr' => function ($line) { },
            'onFinish' => function ($exitCode, $stdOut, $stdErr) { },
        ]
    );

    out::outln('done');
});

// Define the watch task
$phulp->task('watch', function ($phulp) {
    // Phulp will watch 'src' folder
    $phulp->watch(
        $phulp->src(['src/*php']),
        function ($phulp, $distFile) {
            out::outln(sprintf(
                '%s %s',
                out::colorize('File Changed ->', 'green'),
                out::colorize($distFile->getFullPath() . DIRECTORY_SEPARATOR . $distFile->getName(), 'blue')
            ));
            $phulp->start(['default']);
        }
    );
});
Run:

Run the phulp over the Phulpfile directory, (*11)

If you have not configured the bin-dir:, (*12)

$ vendor/bin/phulp --help
$ vendor/bin/phulp # Will run the `default` task
$ vendor/bin/phulp --arg=repeat-clean:true # Will run the `default` task with the argument repeat-clean with value `true`
$ vendor/bin/phulp --autoload=/my/autoload/path/autoload.php # Will run the `default` task adding a alternative autoload php file
$ vendor/bin/phulp watch # Will run the `watch` task
The full documentation:

Docs, (*13)

Example:

https://github.com/reisraff/phulp/blob/master/example/phulpfile.php, (*14)

Run the example file:, (*15)

$ composer install
$ cd example
$ ../bin/phulp
$ ../bin/phulp watch

Contributors Guide

Clone

$ git clone git@github.com:reisraff/phulp.git
$ cd phulp
$ composer install

Tests

First install the dependencies, and after you can run:, (*16)

$ bin/phulp test

TODO

The "Issues" page from this repository is being used for TO-DO management., (*17)

Credits

@reisraff, (*18)

The Versions

03/07 2018

dev-master

9999999-dev https://reisraff.github.io/phulp/#!/home

The task manager for PHP

  Sources   Download

MIT

The Requires

 

The Development Requires

php task task-manager watcher builder gulp task-runner phulp assets-management

03/07 2018

1.12.2

1.12.2.0 https://reisraff.github.io/phulp/#!/home

The task manager for PHP

  Sources   Download

MIT

The Requires

 

The Development Requires

php task task-manager watcher builder gulp task-runner phulp assets-management

02/07 2018

1.12.1

1.12.1.0 https://reisraff.github.io/phulp/#!/home

The task manager for PHP

  Sources   Download

MIT

The Requires

 

The Development Requires

php task task-manager watcher builder gulp task-runner phulp assets-management

29/06 2018

1.12.0

1.12.0.0 https://reisraff.github.io/phulp/#!/home

The task manager for PHP

  Sources   Download

MIT

The Requires

 

The Development Requires

php task task-manager watcher builder gulp task-runner phulp assets-management

19/03 2018

1.11.0

1.11.0.0 https://reisraff.github.io/phulp/#!/home

The task manager for PHP

  Sources   Download

MIT

The Requires

 

The Development Requires

php task task-manager watcher builder gulp task-runner phulp assets-management

04/06 2016
26/05 2016
24/05 2016
23/05 2016