PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.

Overview

Phing LogoP H I N G

Phing CI Scrutinizer Code Quality codecov

Thank you for using PHING!

PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant. You can do anything with it that you could do with a traditional build system like GNU make, and its use of simple XML build files and extensible PHP "task" classes make it an easy-to-use and highly flexible build framework.

Features include running PHPUnit unit tests (including test result and coverage reports), file transformations (e.g. token replacement, XSLT transformation, template transformations), file system operations, interactive build support, SQL execution, SCM operations (Git, Subversion and Mercurial), documentation generation (PhpDocumentor, ApiGen) and much, much more.

If you find yourself writing custom scripts to handle the packaging, deploying, or testing of your applications, then we suggest looking at Phing. Pre-packaged with numerous out-of-the-box operation modules (tasks), and an easy-to-use OO model to extend or add your own custom tasks.

For more information and documentation, you can visit our official website at https://www.phing.info/.

Phing 3

Phing 3 is a significant update with some breaking changes compared to Phing 2. For details, please refer to the UPGRADING.md file.

Supported PHP versions

Phing 3.x is compatible with PHP 7.3 and higher.

Installation

  1. Composer

The preferred method to install Phing is through Composer. Add phing/phing to the require-dev or require section of your project's composer.json configuration file, and run 'composer install':

     {
         "require-dev": {
             "phing/phing": "3.0.x-dev"
         }
     }
  1. Phar

Download the Phar archive. The archive can then be executed by running:

     $ php phing-latest.phar
  1. Docker (experimental)

The official Phing Docker image can be found on Docker Hub.

To execute Phing inside a container and execute build.xml located in /home/user, run the following:

     $ docker run --rm -v /home/user:/opt phing/phing:3.0 -f /opt/build.xml
  1. Phing GitHub Action

The official GitHub action phingofficial/phing-github-action is available on GitHub Marketplace.

To Run a Phing Build as an action, you need to setup a .github/workflow/phing.yml workflow file and paste the following snipped:

 name: CI
 on: [ push ]
 jobs:
   build-test:
     runs-on: ubuntu-latest

     steps:
       - uses: actions/checkout@v2
       - name: Phing Build
         uses: phingofficial/[email protected]
         with:
           version: 3.0.0-alpha4
           user-properties: prop=FooBar
           targets: foo
           verbose: true

README for more info and documentation.

Documentation

Phing's documentation can be found at https://www.phing.info/#docs.

For the source of the documentation, go to https://github.com/phingofficial/guide.

Contact

Donations

Developing and maintaining Phing has cost many hours over the years. If you want to show your appreciation, you can use one of the following methods to donate something to the project maintainer, Michiel Rook:

Thank you!

Contributing

We love contributions!

Help us spot & fix bugs

We greatly appreciate it when users report issues or come up with feature requests. However, there are a few guidelines you should observe before submitting a new issue:

  • Make sure the issue has not already been submitted, by searching through the list of (closed) issues.
  • Support and installation questions should be asked on Twitter, Slack or IRC, not filed as issues.
  • Give a good description of the problem, this also includes the necessary steps to reproduce the problem!
  • If you have a solution - please tell us! This doesn't have to be code. We appreciate any snippets, thoughts, ideas, etc that can help us resolve the issue.

Issues can be reported on GitHub.

Pull requests

The best way to submit code to Phing is to make a Pull Request on GitHub. Please help us merge your contribution quickly and keep your pull requests clean and concise: squash commits and don't introduce unnecessary (whitespace) changes.

Phing's source code is formatted according to the PSR-2 standard.

Running the (unit) tests

If you'd like to contribute code to Phing, please make sure you run the tests before submitting your pull request. To successfully run all Phing tests, the following conditions have to be met:

  • PEAR installed, channel "pear.phing.info" discovered
  • Packages "python-docutils" and "subversion" installed
  • php.ini setting "phar.readonly" set to "Off"

Then, perform the following steps (on a clone/fork of Phing):

     $ composer install
     $ cd tests
     $ ../bin/phing

Licensing

This software is licensed under the terms you may find in the file named "LICENSE" in this directory.

Proud to use:

PhpStorm Logo

Comments
  • MkdirTask behaves the same as

    MkdirTask behaves the same as "mkdir" Linux command and respects POSIX ACL

    This PR makes MkdirTask create directories with the same permissions as Linux mkdir command. Also, it sets correct permissions when using POSIX Access Control Lists.

    It is possibly a BC break, but I think that it is worth it as the new behaviour is more intuitive.

    Test-cases explaining the old and the new behaviour for ACL:

    1. a) Linux shell (ACL enabled):

    $ setfacl --default --modify user::rwX .
    $ getfacl .
    # file: .
    # owner: me
    # group: me
    user::rwx
    group::rwx
    other::r-x
    default:user::rwx
    default:user:me:rwx
    default:group::rwx
    default:mask::rwx
    default:other::r-x
    
    $ umask 0077
    $ mkdir dir1
    $ mkdir --mode 0777 dir2
    
    $ ls -l
    drwxrwxr-x+ 2 me me 4096 Oct 10 23:41 dir1
    drwxrwxrwx+ 2 me me 4096 Oct 10 23:41 dir2
    
    $ getfacl dir1
    # file: dir1
    # owner: me
    # group: me
    user::rwx
    user:me:rwx
    group::rwx
    mask::rwx
    other::r-x
    default:user::rwx
    default:user:me:rwx
    default:group::rwx
    default:mask::rwx
    default:other::r-x
    

    Notice that umask is completely ignored when ACL is enabled. Directory dir1 has rwxrwxr-x permissions because that is the default setting of the parent directory.

    1. b) MkdirTask before this PR (ACL enabled):

    build.xml:

    ...
      <mkdir dir="dir1" />
      <mkdir dir="dir2" mode="0777" />
    ...
    

    shell:

    $ umask 0077
    $ php phing
    
    $ ls -l
    drwx------+ 2 me me 4096 Oct 10 23.57 dir1
    drwxrwxr-x+ 2 me me 4096 Oct 10 23.57 dir2
    
    $ getfacl dir1
    # file: dir1
    # owner: me
    # group: me
    user::rwx
    user:me:rwx         #effective:---
    group::rwx          #effective:---
    mask::---
    other::---
    default:user::rwx
    default:user:me:rwx
    default:group::rwx
    default:mask::rwx
    default:other::r-x
    

    Notice that dir1 has wrong permissions. Old MkdirTask calls mkdir('dir1', 0700) because it masks 0777 with the original umask (see the original MkdirTask::__construct()). Also, you can see that in this case old MkdirTask incorrectly sets ACL mask to --- because ACL mask equals to group permissions when ACL is enabled.

    1. c) MkdirTask after this PR (ACL enabled):

    build.xml:

    ...
      <mkdir dir="dir1" />
      <mkdir dir="dir2" mode="0777" />
    ...
    

    shell:

    $ umask 0077
    $ php phing
    
    $ ls -l
    drwxrwxr-x+ 2 me me 4096 Oct 11 00.01 dir1
    drwxrwxrwx+ 2 me me 4096 Oct 11 00.01 dir2
    
    $ getfacl dir1
    # file: dir1
    # owner: me
    # group: me
    user::rwx
    user:me:rwx
    group::rwx
    mask::rwx
    other::r-x
    default:user::rwx
    default:user:me:rwx
    default:group::rwx
    default:mask::rwx
    default:other::r-x
    

    You can see that the new MkdirTask creates all permissions the same as Linux mkdir command.

    Test-cases explaining the old and the new behaviour when creating parent directories:

    2. a) Linux shell (no ACL):

    $ umask 0077
    $ mkdir dir1
    $ mkdir --mode 0777 dir2
    $ mkdir --parents --mode 0777 dir3/dir4
    
    $ ls -l
    drwx------.   2 me me  4096 Oct 10 22:50 dir1
    drwxrwxrwx.   2 me me  4096 Oct 10 22:51 dir2
    drwx------.   2 me me  4096 Oct 10 22:51 dir3
    
    $ ls -l dir3
    drwxrwxrwx.   2 me me  4096 Oct 10 22:51 dir4
    

    Notice that dir2 is created with 0777 permissions even though umask is set to 0077. That is because umask is ignored when --mode option is used. Also notice that dir3 has default permissions and not 0777 as specified in --mode option.

    2. b) MkdirTask before this PR (no ACL):

    build.xml:

    ...
      <mkdir dir="dir1" />
      <mkdir dir="dir2" mode="0777" />
      <mkdir dir="dir3/dir4" mode="0777" />
    ...
    

    shell:

    $ umask 0077
    $ php phing
    
    $ ls -l
    drwx------. 2 me me 4096 Oct 10 23:32 dir1
    drwxrwxrwx. 2 me me 4096 Oct 10 23:32 dir2
    drwxrwxrwx. 3 me me 4096 Oct 10 23:32 dir3
    
    $ ls -l dir3
    drwxrwxrwx. 2 me me 4096 Ocr 10 23.32 dir4
    

    Notice that dir3 is not created with default permissions but with those specified in mode attribute which is not the same behaviour as in case of Linux mkdir command.

    2. c) MkdirTask after this PR (no ACL):

    build.xml:

    ...
      <mkdir dir="dir1" />
      <mkdir dir="dir2" mode="0777" />
      <mkdir dir="dir3/dir4" mode="0777" />
    ...
    

    shell:

    $ umask 0077
    $ php phing
    
    $ ls -l
    drwx------. 2 me me 4096 Oct 10 23:36 dir1
    drwxrwxrwx. 2 me me 4096 Oct 10 23:36 dir2
    drwx------. 3 me me 4096 Oct 10 23:36 dir3
    
    $ ls -l dir3
    drwxrwxrwx. 2 me me 4096 Oct 10 23:36 dir4
    

    MkdirTask now behaves the same as Linux mkdir command (ie. only last child directory has the permissions specified in mode attribute).

    enhancement 
    opened by sustmi 33
  • Added PropertyFileParser for YAML formatted file

    Added PropertyFileParser for YAML formatted file

    I added a YamlFileParser to be able to parser yaml files.

    By that I extracted the Inifile parsing logic from Properties.php and introduced the FileParserInterface to be able to have several file parsers.

    In PropertyTask.php I added a FileParserFactory to create based on the PhingFile::getExtension() of a file the file parser which is able to parse the file.

    The default is still the ini file parse. So it does not break the former functionality.

    The YamlFileParser flattens the array created from Symfony::YAML to be compatible to the existing properties mechanism and beeing able to access the property by a . separated string.

    The existing functionality to convert commata separated lists into an array is supported with yaml files, too.

    Everything is covered by unittests.

    Example:

    //yaml -file testarea: testvalue testarea1: testkey1: 1 testkey2: 2 testarea2: [testvalue1, testvalue2, testvalue3] testarea3: false testarea4: true testarea5: testkey1: [testvalue1, testvalue2] testarea6: testkey1: testkey1: testvalue1 testkey2: testvalue2 testkey2: testkey1: testvalue1

    will be flattened to: $this->assertEquals('testvalue', $properties['testarea']); $this->assertEquals(1, $properties['testarea1.testkey1']); $this->assertEquals(2, $properties['testarea1.testkey2']); $this->assertArrayHasKey(0, $properties['testarea2']); $this->assertArrayHasKey(2, $properties['testarea2']); $this->assertEquals('testvalue1', $properties['testarea2'][0]); $this->assertEquals('testvalue3', $properties['testarea2'][2]); $this->assertEquals(false, $properties['testarea3']); $this->assertEquals(true, $properties['testarea4']); $this->assertEquals('testvalue1', $properties['testarea6.testkey1.testkey1']); $this->assertEquals('testvalue2', $properties['testarea6.testkey1.testkey2']); $this->assertEquals('testvalue1', $properties['testarea6.testkey2.testkey1']);

    opened by mikelohmann 26
  • Adds ImportMultiTask.

    Adds ImportMultiTask.

    Use case

    I pull down alot of different build.xml files with composer. I don't want to have to add multiple import references, especially if I am adding a new library.

    Giving Phing and almost "autoload" kind of functionality.

    Solution

    Create a ImportMultiTask object for this case.

    <import-multi files="vendor/previousnext/*/build*.xml" optional="true" />
    

    Help

    Can I please get some guidance on:

    • If this could be committed to Phing.
    • How I can get it over the line so I can be committed.
    opened by nickschuch 25
  • Size helper

    Size helper

    Closes #1480

    • [x] Create SizeHelper
    • [x] Refactor HasFreeSpaceCondition
    • [x] Refactor FileSizeTask
    • [x] Refactor SizeSelector
    • [x] Refactor TrucateTask
    • [x] Delete Phing::convertShorthand()
    needs documentation enhancement core cleanup 
    opened by jawira 21
  • Can't install dev-master version using Composer

    Can't install dev-master version using Composer

    I have the following composer.json:

    {
      "require-dev": {
        "phing/phing" : "dev-master"
      }
    }
    

    Running composer install I get: Your requirements could not be resolved to an installable set of packages.

      Problem 1
        - Installation request for phing/phing dev-master -> satisfiable by phing/phing[dev-master].
        - phing/phing dev-master requires phpdocumentor/parallel master@dev -> no matching package found.
    

    I believe the reason is the following commit: 97532911e70c0a87ddc452648a40dced861b2b3b

    defect 
    opened by MaXal 17
  • "Late property expansion" and property arrays on 2.x?

    Hi all,

    a long time ago, I have contributed two features I called "late property expansion" and "property arrays" on what was the "master" branch then; this later became (IIRC) the 3.0 branch and then unstable-3.0; maybe it is called "future-4.0" right now.

    I then made another attempt (around early 2015?) and ported the changes to one of the newer "future" branches, the one that introduced namespaces as well.

    Unfortunately, none of these branches has yet seen an official release, which is the reason why we're working with unstable/snapshot builds of Phing for years.

    Both features are important for the way we're using Phing at my company, and I would make another attempt to get them merged because I'd be happy to work with a stable, mainstream Phing release.

    So, what I would like to discuss here is under which conditions these changes would be accepted in the 2.x branch.

    "Late property expansion" basically defers the expansion of ${property} expressions to the latest possible moment. For example, you could load a properties file like

    webdir.name = web
    paths.webdir = ${project.basedir}/${webdir.name}
    paths.assets = ${paths.webdir}/assets
    

    and then start Phing with -Dwebdir.name=www. This will end up with all properties using www as you might expect.

    Of course, this brings a little risk of BC breaks for folks that happen to re-define Phing properties during buildfile execution but expect previous assignments to remain unchanged.

    The other feature adds a little syntax to have "array" properties like so:

    some.path[] = foo
    some.path[] = bar
    

    When inlining this property as ${some.path}, it will be glued together with ,. This makes it easier in some places to come up with generic tasks/buildfiles that can be configured by properties only – you cannot easily write the above with some.path.1 and some.path.2 properties, because there is (to my knowledge) no easy way of finding and iterating these properties.

    What do you think? Is there a strict "no possibly breaking changes on 2.0" policy? I assume you would accept it if it could be turned on via command line switch?

    opened by mpdude 15
  • Copy task does overwrite even though overwrite=

    Copy task does overwrite even though overwrite="false" (Trac #605)

    If the source file is touched (i.e. mtime changed) then phing copyTask will overwrite destination no matter thay overwrite="false" is set. This is very unexpected.

    Migrated from https://www.phing.info/trac/ticket/605

    {
        "status": "new", 
        "changetime": "2015-04-19T07:48:44", 
        "description": "If the source file is touched (i.e. mtime changed) then phing copyTask will overwrite destination no matter thay overwrite=\"false\" is set. This is very unexpected.", 
        "reporter": "Denis Chmel", 
        "cc": "", 
        "resolution": "", 
        "_ts": "1429429724464363", 
        "component": "phing-core", 
        "summary": "Copy task does overwrite even though overwrite=\"false\"", 
        "priority": "minor", 
        "keywords": "", 
        "version": "2.4.1", 
        "time": "2010-12-08T13:14:07", 
        "milestone": "Backlog", 
        "owner": "mrook", 
        "type": "defect"
    }
    
    migrated from Trac core defect 
    opened by phing-issues-importer 15
  • Deprecate the PEAR channel

    Deprecate the PEAR channel

    I'm thinking of deprecating the pear.phing.info channel and not release 3.x as a PEAR package.

    Right now we're already depending on a few composer packages (symfony/yaml, for example), this poses an issue when generating a PEAR package.

    Thoughts?

    opened by mrook 14
  • Properties not being set on subsequent sets. (Trac #511)

    Properties not being set on subsequent sets. (Trac #511)

    Observe the behaviour of the attached files. The returned value from the PhpExecTask in test3 (rand), is not overwritting the previous value each time.

    Migrated from https://www.phing.info/trac/ticket/511

    {
        "status": "reopened", 
        "changetime": "2016-10-07T08:28:55", 
        "description": "Observe the behaviour of the attached files.\nThe returned value from the PhpExecTask in test3 (rand), is not overwritting the previous value each time.", 
        "reporter": "[email protected]", 
        "cc": "[email protected]", 
        "resolution": "", 
        "_ts": "1475828935569836", 
        "component": "phing-core", 
        "summary": "Properties not being set on subsequent sets.", 
        "priority": "major", 
        "keywords": "", 
        "version": "", 
        "time": "2010-06-28T12:18:50", 
        "milestone": "4.0", 
        "owner": "mrook", 
        "type": "defect"
    }
    
    migrated from Trac core defect 
    opened by phing-issues-importer 14
  • IfTask boolean issues with predefined properties (Trac #383)

    IfTask boolean issues with predefined properties (Trac #383)

    Hi all,

    I discovered an anomaly in the IfTask in combination with the failureproperty of the PhpUnittestTask.

    The environment is Phing 2.3.3 with PHPUnit 3.3.17 on Ubuntu 9.10 using bash.

    If you initialize the property used as failureproperty in the PhpUnittestTask through a PropertyTask first, the IfTask does no longer work as expected. I attached three example build scripts to clarify this, but in a nutshell it is like this:

    Assuming <phpunit failureproperty="unittestFailed"> and

      <if>
        <equals arg1="${unittestFailed}" arg2="1" />
        <then>
    

    we have the following behaviour:

    • without initializing the unittestFailed property the if condition works as expected
    • with the if condition will always enter the else-branch, regardless of the state of the unittests.
    • with the if condition will always enter the then-branch, regardless of the state of the unittests.

    This is not really a bug in my opinion, more a unclean behaviour. If might lead to incorrect behaviour however, if one and the same property (in this case unittestFailed) is used as common status flag for multiple tests which all have to go through.

    Regards, Dominique

    http://www.st/webdevelopment.de

    Migrated from https://www.phing.info/trac/ticket/383

    {
        "status": "reopened", 
        "changetime": "2016-10-07T08:28:55", 
        "description": "Hi all,\n\nI discovered an anomaly in the IfTask in combination with the failureproperty of the PhpUnittestTask.\n\nThe environment is Phing 2.3.3 with PHPUnit 3.3.17 on Ubuntu 9.10 using bash.\n\nIf you initialize the property used as failureproperty in the PhpUnittestTask through a PropertyTask first, the IfTask does no longer work as expected.\nI attached three example build scripts to clarify this, but in a nutshell it is like this:\n\nAssuming \n  <phpunit failureproperty=\"unittestFailed\">\nand \n  <if>\n    <equals arg1=\"${unittestFailed}\" arg2=\"1\" />\n    <then>\nwe have the following behaviour:\n\n- without initializing the unittestFailed property the if condition works as expected\n- with <property name=\"unittestFailed\" value=\"false\" /> the if condition will always enter the else-branch, regardless of the state of the unittests.\n- with <property name=\"unittestFailed\" value=\"true\" /> the if condition will always enter the then-branch, regardless of the state of the unittests.\n\nThis is not really a bug in my opinion, more a unclean behaviour. If might lead to incorrect behaviour however, if one and the same property (in this case unittestFailed) is used as common status flag for multiple tests which all have to go through.\n\nRegards,\nDominique\n\n--\nhttp://www.st/webdevelopment.de\n", 
        "reporter": "[email protected]", 
        "cc": "[email protected]", 
        "resolution": "", 
        "_ts": "1475828935569836", 
        "component": "phing-core", 
        "summary": "IfTask boolean issues with predefined properties", 
        "priority": "major", 
        "keywords": "properties, PhpUnitTask, boolean, ifTask", 
        "version": "2.3.3", 
        "time": "2009-11-17T04:47:16", 
        "milestone": "4.0", 
        "owner": "mp", 
        "type": "defect"
    }
    
    migrated from Trac core defect wontfix 
    opened by phing-issues-importer 14
  • improve phing composer and relationship

    improve phing composer and relationship

    Allow to load composer autoload.php file when phing is executed in a global scope Allow to place composer autoload.php file in a different folder setted by config->vendor-dir Allow to ignore errors when taskdef require a class and autoload.php do not exist, in example when a phing task is executed by composer pre-install-cmd.

    my environment can not pass all the tests, there are a lot of dependencies and I don't know all. Can you test https://github.com/corretgecom/phing.git before to merge the pull?

    thanks

    needs rebase 
    opened by corretge 12
  • XML\RNG Validation Wierdness

    XML\RNG Validation Wierdness

    Describe the bug When validating the build.xml file with the relaxng schema it insists that "selector" is missing in the <project> root tag and all <target> tags.

    Steps To Reproduce Add the rng file as a schema definition to the top of the file.

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-model href="https://raw.githubusercontent.com/phingofficial/phing/3.0.0-RC3/etc/phing-grammar.rng"
                type="application/xml"
                schematypens="http://relaxng.org/ns/structure/1.0" ?>
    

    Expected behavior Smooth error correction and autocomplete bliss.

    Screenshots / terminal output "selector" element demands: image element "target" incomplete; missing required element "selector"

    Additionally complains about passthrough attribute. Surely this should be a boolean OR a string, yes? image value of attribute "passthru" is invalid; must be a boolean

    Additional context I think this is caused by these lines in the phing-grammar.rng file.

        <define name="project">
            <element name="project">
                <interleave>
                    <attribute name="name"/>
                    <optional>
                        <attribute name="basedir"/>
                    </optional>
                    <attribute name="default"/>
                    <optional>
                        <attribute name="description"/>
                    </optional>
                    <optional>
                        <attribute name="phingVersion"/>
                    </optional>
                    <optional>
                        <attribute name="strict"/>
                    </optional>
                </interleave>
    
                <interleave>
                    <zeroOrMore>
                        <ref name="target"/>
                    </zeroOrMore>
                    <zeroOrMore>
                        <ref name="extension-point"/>
                    </zeroOrMore>
                    <ref name="coretasks"/>
                    <ref name="optionaltasks"/>
                    <ref name="coretypes"/>
    #L72        <ref name="selector"/> 
                </interleave>
    
            </element>
        </define>
    
        <!--
            ===========================================================================================================
            Target element.
            ===========================================================================================================
        -->
        <define name="target">
            <element name="target">
    
                <!-- Attributes for target element -->
                <interleave>
                    <attribute name="name"/>
                    <optional>
                        <attribute name="depends"/>
                    </optional>
                    <optional>
                        <attribute name="hidden"/>
                    </optional>
                    <optional>
                        <attribute name="if"/>
                    </optional>
                    <optional>
                        <attribute name="unless"/>
                    </optional>
                    <optional>
                        <attribute name="description"/>
                    </optional>
                    <optional>
                        <attribute name="logskipped"/>
                    </optional>
                </interleave>
                <interleave>
                    <ref name="coretasks"/>
                    <ref name="coretypes"/>
                    <ref name="optionaltasks"/>
    #L321           <ref name="selector"/>
                </interleave>
            </element>
        </define>
    

    Maybe those selectors are supposed to be wrapped in the optional tags?

    opened by feamsr00 2
  • TstampTask with ICU syntax

    TstampTask with ICU syntax

    Hi, I modified TstampTask to handle ICU syntax, rationale is explained in https://github.com/phingofficial/phing/issues/1682

    • pattern attribute must be specified using ICU syntax
    • TstampCustomFormat only stores attributes, the logic has been moved to TstampTask
    • A warning is displayed if pattern contains % character (always used in old syntax)
    • I updated phing-grammar.rng with timezone attribute, can you please double check this since I'm not RelaxNG expert
    • Updated tests: TstampTest.xml and TouchTaskTest.xml
    • In tests locale is always en_US and timezone is always UTC

    As always I'm open to any comment or change request :)

    opened by jawira 1
  • TstampTask impacted by deprecation

    TstampTask impacted by deprecation

    strftime() function was deprecated in PHP 8.1 and is going to be removed in PHP 9. The problem is that TstampTask relies a lot on this function.

    As php.watch explains, \IntlDateFormatter can be used to replace strftime().

    However, be aware that using \IntlDateFormatter will provoke a breaking change because the syntax used to declare a custom pattern is completely different.

    <tstamp>
      <format property="DATE" pattern="%Y%m%d"/>
    </tstamp>
    

    Things like %Y%m%d are not going to work anymore because \IntlDateFormatter uses ICU syntax.

    <tstamp>
      <format property="DATE" pattern="yyyyMMdd"/>
    </tstamp>
    

    Anyway, I'm more than willing to work in this issue, so let me know what do you think and if you need help with this :)

    opened by jawira 3
  • Cannot add line to file

    Cannot add line to file

    I'm trying to add a final new line at the end of a file. I tried to do so with AppendTask.

    <append destFile="my-file.txt" text="${line.separator}"/>
    

    The problem is this doesn't work because text is "sanitized" after:

    https://github.com/phingofficial/phing/blob/0824c1412420df3dd1101effc50886718bd43d78/src/Phing/Task/System/AppendTask.php#L350-L355

    I don't understand the rationale behind sanitizeText. But IMHO this method can be deleted, or maybe there's another way to simply append a new line ?

    Thanks

    defect 
    opened by jawira 3
  • Mask passwords in VERBOSE logs when running Phing in debug mode?

    Mask passwords in VERBOSE logs when running Phing in debug mode?

    Is your feature request related to a problem? Please describe. Right now all properties are logged with VERBOSE level on. This is critical in some situations, especially if passwords are involved (MySql for instance)

    Describe the solution you'd like It wolud be nice to add an attribute (hideoutput=true/false or disguiseoutput=true/false) to solve this problem.

    opened by amigian74 7
Releases(2.17.4)
  • 2.17.1(Jan 17, 2022)

  • 3.0.0-RC3(Sep 9, 2021)

    The following issues and pull requests were closed in this release:

    • [stopwatch] Added test and cleanup. #1635
    • [pdosqlexec] Using traits #1634
    • [pdosqlexec] Added failOnConnectionError / Removed obsolete caching attribute #1632
    • [pdosqlexec] Added more attributes. #1631
    • [delete] Removed duplicated log entry #1630
    • [mkdir] Fixed PHP 8 compat #1629
    • [pdosqlexec] Fixed PHP 8 compat, Code Cleanup and tests #1628
    • Error with MkdirTask #1619
    • Remove the default value before the required parameter. #1618
    • Add OpenTask #1617
    • Add support for formatter nested tag to the phpcs task #1614
    • bump version phing/task-svn in composer.lock #1613
    Source code(tar.gz)
    Source code(zip)
    phing-3.0.0-RC3.phar(19.65 MB)
    phing-3.0.0-RC3.phar.asc(458 bytes)
    phing-3.0.0-RC3.phar.sha1(63 bytes)
    phing-3.0.0-RC3.phar.sha256(87 bytes)
    phing-3.0.0-RC3.phar.sha384(119 bytes)
    phing-3.0.0-RC3.phar.sha512(151 bytes)
  • 3.0.0-RC2(Jun 28, 2021)

    The following issues and pull requests were closed in this release:

    • Add support for setting standard, outfile and format to phpcs task #1612
    • Update SizeSelector schema #1611
    • [core] Updated dependencies #1593
    • [core] Added additional tests #1592
    • [XmlLogger] cleanup #1591
    • [core] Added openssl and phar.readonly to pipeline #1590
    • [PharPackageTask] Added attributes to test build #1589
    • [core] Fixed ExtendedFileStream register wrapper #1588
    • [core] Cleanup some tests. #1587
    • [Location] Added test #1586
    • Refactoring how Phing handles boolean strings #1584
    • Use constant for buildfile name #1583
    • Scrutinizer issue fixes #1581
    • Scrutinizer issue fixes #1580
    • Scrutinizer issue fixes #1579
    • Scrutinizer issue fixes #1578
    • Scrutinizer issue fixes #1577
    • [core] Scrutinizer issue fixes #1576
    • [XmlLintTask] Added error logs. #1575
    • [core] Fixed slack url and added security advisor dependency #1574
    • [core] Updated Deps - added funding to composer #1573
    • [core] Updated deps #1572
    • [core] Code cleanup on test files #1570
    • php-cs-fixer fixed covers #1568
    • [core] php-cs-fixer run #1566
    • [core] Moved test classes to own namespace Phing\Test\ #1565
    • [FileUtils] split up long method #1564
    • [core] PHP compat issues #1563
    • Add comment in test to prevent php8.1 compat issue #1562
    • Update documentation links #1561
    • [condition] Added phpversion condition #1560
    • [core] Removed unused exception classes #1559
    • [core]Moved Timer function to DefaultClock #1558
    • [Logger] Fixed StatisticsReport #1557
    • [core] Removed deprecated NullPointerException.php #1556
    • Updated PEAR\Exception -> composer update #1555
    • Add days and hours to DefaultLogger::formatTime method #1554
    • Update report bugs to use issues link #1551
    • Remove currentTimeMillis #1545
    • Fix "depends on" in target list #1544
    • [ReflexiveTask] Call to a member function isDirectory() on null #1540
    Source code(tar.gz)
    Source code(zip)
    phing-3.0.0-RC2.phar(19.37 MB)
    phing-3.0.0-RC2.phar.asc(458 bytes)
    phing-3.0.0-RC2.phar.sha1(63 bytes)
    phing-3.0.0-RC2.phar.sha256(87 bytes)
    phing-3.0.0-RC2.phar.sha384(119 bytes)
    phing-3.0.0-RC2.phar.sha512(151 bytes)
  • 3.0.0-RC1(Feb 17, 2021)

    This is the first release candidate for Phing 3.

    The following issues and pull requests were closed in this release:

    • [ReflexiveTask] Added exception for missing filterchain #1538
    • [ReflexiveTask] Fixed behavior, if file attribute points to a directory. #1537
    • [PropertySelector] Fixed group selection #1536
    • [core] Fixed deprecation warnings - PHP ^8.1 #1535
    • [TryCatchTask] Rectify the logic of the "finally" clause #1534
    • [PhingTask] Fixed dot notation #1533
    • Fix PhpEvalTask bugs with functions taking scalar and multidimensional array params #1531
    • Moved aws related tasks to own repo #1530
    • Moved SassTask to own repo #1529
    • Moved PhpUnitTask to own repo #1528
    • Moved SonarTask to own repo #1527
    • Moved analyzer tasks to own repo #1526
    • Moved http tasks to own repo. #1523
    • Move pdo tasks and path-as-package task to system scope #1521
    • Moved svn tasks to own repo #1520
    • [core] Moved XmlPropertyTask and PharMetadata to system tasks. #1519
    • [core] Move archive tasks #1518
    • Moved DbdeployTask to own repo #1516
    • Rename "master" branch to "main" #1514
    • Moved VisualizerTask to own repo #1513
    • Moved inifile task to own repo #1512
    • [SassTask] [core] - Fixed Filesystem::listContents for numeric filenames. #1511
    • Removed unused imports #1510
    • Use Phing\Type\Element.*Aware traits #1508
    • Finalize namespace-ification #1506
    • Moved git tasks to own repo #1505
    • Moved HG tasks to own repo #1504
    • Fixed windows line ending issue #1500
    • Fixed line ending issue on windows #1499
    • excludesfile example #1498
    • Updated composer dependencies #1496
    • Added ModifiedSelector. #1487
    • [PHPUnitTask] Removed PHPUnitTestRunner7 #1486
    • [Pear*] Removed unused test xml file. #1485
    • [phploc] Fixed test case. #1484
    • [phploc] Json formatter not tested #1483
    • Size helper #1482
    • [PatternSet] Simplified __toString method. #1481
    • Standardize file size units #1480
    • [core] Fixed codecoverage in action with latest ubuntu #1478
    • Show suggestion on unknown target #1477
    • [BindTargets] Added BindTargets Task #1476
    • Changed build trigger handling #1474
    • [DateSelector] Add tests and correct behavior #1473
    • [core] Fixed delta in TimerTest.php #1471
    • [core] Move internal build steps from travis to github #1470
    • Updated Dependencies #1469
    • Changed arg passed to phploc #1457
    • Add tests and correct TouchTask behavior #1456
    • [PHPUnitTask] Added haltondefect argument #1455
    • [TouchTask] Test doesn't check that files were created with the correct timestamp #1454
    • [TouchTask] millis attribute leads to invalid dates #1453
    • [TouchTask] allows invalid datetime values to be specified #1452
    • [PHPUnitTask] Fixed processIsolation setting #1451
    • [PHPUnitTask] renamed formatter #1448
    • [core] Removed unused excludes in test build. #1447
    • [core] Work on PHP 8 #1445
    • [DeleteTask] Fixed that only variables can be passed by reference. #1444
    • [PHPUnitTask] Removed includes #1443
    • [core] Fixed tests #1442
    • [core] Added PHP 8.0 and 8.1 snapshot to travis #1441
    • Fix deprecated ReflectionParameter::getClass() #1440
    • [PlainPHPUnitResultFormatter] Added risky counter #1439
    • [PHPUnitResultFormatter] Added risky test counter to summary #1438
    • [CoverageMergerTask] Fixed code coverage handling #1437
    • Add new optional clover-html formatter. #1436
    • [PHPUnitResultFormatter] Added warning and risky counter #1435
    • [PHPUnitTask] Added failure handling for risky and warning tests #1434
    • [PHPUnitTask] Added missing halton* methods. #1433
    • Added coverage-* related test setup #1432
    • Make use of PHPUnit 9 code coverage and reporting #1431
    • Make better use of PHPUnit 9 code coverage and reporting #1430
    • [PHPUnitReportTask] Fixed windows detection #1429
    • Delete unused. #1428
    • ComposerTask tests don't need Composer on the path #1427
    • ComposerTask test failing if Composer isn't on the path #1426
    • SonarConfigurationFileParser tests fail on cygwin (Windows) #1425
    • Fix ini parser must ignore ini sections #1421
    • Fixed env handling for windows #1419
    • Environment argument for ExecTask is broken for windows #1417
    • Move composer vaidation to action #1415
    • Added GITHub action workflow. #1414
    • Fixed Windows codepage setting for utf8 beta. #1413
    • Updated dependencies #1412
    • Windows & UTF-8 #1399
    • Fix Support for Nested Exec Env Tag - Fixes #1395 #1396
    • ENV SubTask Not Working as Expected #1395
    • Added new version of FtpDeloyTask #1394
    • Variable properties which could not expanded should be null. #1393
    • Error resolving proxy #1391
    • Fix visualizer bug #1390
    • [HttpRequest] Fixed verbose mode. #1389
    • [phploc] Fixed broken task for PHP >= 7.3 #1387
    • Downgraded guzzle to 6.5 #1386
    • httpget broken by guzzle update #1385
    • Could not create task/type: 'scp'. Make sure that this class has been declared using taskdef / typedef. (3.0.0-alpha4) #1372
    • VisualizerTask bug #1388
    • Reliance on PEAR packages despite being removed from PEAR itself #1370
    • [SubPhing] Fail on error should also be passed to the phing task. #1361
    • Cleanup test build script #1332
    • Added missing Target::dependsOn implementation #1303
    • Declaration of case-insensitive constants is deprecated - replace Net_FTP #1224
    Source code(tar.gz)
    Source code(zip)
    phing-3.0.0-RC1.phar(19.34 MB)
    phing-3.0.0-RC1.phar.asc(458 bytes)
    phing-3.0.0-RC1.phar.sha1(62 bytes)
    phing-3.0.0-RC1.phar.sha256(86 bytes)
    phing-3.0.0-RC1.phar.sha384(118 bytes)
    phing-3.0.0-RC1.phar.sha512(150 bytes)
  • 2.16.4(Jan 29, 2021)

  • 3.0.0-alpha4(Jul 4, 2020)

    The following issues and pull requests were closed in this release:

    • [PatternSet] Added missing test. #1350
    • Phpcstask fileset support #1349
    • Removed PhpCodeSnifferTask #1346
    • [test/build.xml] Removed adhoc tasks and use bootstrap #1336
    • Fixed condition #1334
    • Added extension points #1324
    • Added augment reference task. #1323
    • Added ClassConstants filter #1322
    • Removed ansible support in favor of docker #1321
    • Moved Zend Server Development Tools Tasks to own repo #1320
    • [PathConvert] Fixed validation on attributes. #1319
    • [FileUtils] Fixed file separator/pathSeparator as not always set. #1318
    • Fixed phpunit warnings #1317
    • [subphing] Added bulk project execution task. #1316
    • [build.xml] Fixed deprecated warning. #1315
    • [TruncateTask] Simplified new file creation. #1314
    • [AdhocTaskdefTask] Fixed is subclass of task test. #1313
    • [Target] Added location support. #1312
    • [Phing] Used finally to simplify exc handling #1311
    • [Phing] Removed not needed method #1310
    • [Phing] Removed deprecated setting of track_errors #1309
    • [Phing] Simplified os family condition #1308
    • [Phing] Removed php compat condition #1307
    • Moved JsHintTask to own repo #1306
    • [PhingTask] Fixed exception handling and condition #1305
    • Moved JsMinTask to own repo. #1304
    • [PhingTask] Fixed multi same property #1296
    • [PhingTask] Added native basedir support. #1295
    • [WIP] [PhingTask] Fixed possible infinity loop #1294
    • [ForeachTask] Cleanup code #1293
    • [PhingTask] Cleanup code. #1292
    • [PhingTask] Added output argument. #1291
    • [MonologListener] Fixed logging for warning #1290
    • [PropertyTask] reduce complexity by extract method #1287
    • Moved phpdoc task to own repository. #1286
    • [MoveTask] Added granularity support #1278
    • [TouchTask] fixed log output setting datetime #1277
    • [CopyTask] Added granularity support on LMT of src #1276
    • [FileUtils] Added granularity support #1275
    • [MoveTask] Added preservepermissions support. #1274
    • [PhingTask] Added some more general tests #1273
    • [PhingTask] Added override tests #1272
    • [PhingTask] Added ref no inheritance and path test #1271
    • [PhingTask] Added reference inheritance test #1270
    • [TruncateTask] fixed unit suffix on length/adjust #1269
    • [MoveTask] Fixed default overwrite behavior. #1268
    • Moved ssh tasks to own repo #1267
    • Moved zendcodeanalyser task to own repo #1266
    • Moved SmartyTask to own repository. #1265
    • [PhingTask] added inherit basedir tests #1264
    • [PhingTask] Added some more tests #1263
    • [PhingTask] Added test implementations #1262
    • [PhingTask] add xml test files #1261
    • [core] Removed not used assignment #1260
    • [Task] bind task to another task #1259
    • [PropertyHelper] Reduced complexity #1258
    • [Project] Added inherited properties getter. #1257
    • [TouchTask] Added mapping support. #1256
    • [ZipTask] fixed basedir #1255
    • [ExecTask] Fixed resolving env vars #1254
    • Using ExecTask with environment variables #1253
    • Moved ioncube tasks to own repo #1249
    • Moved PhkPackageTask to own repo. #1248
    • Simplify visualizer tests #1247
    • Moved FtpDeployTask to own repo #1246
    • VisualizerTask breaks test execution #1245
    • Provide --config-option switch for svn tasks #1244
    • [PhingCallTask] set target on callee #1243
    • ZipTask cannot create zip using basedir #1242
    • [PhingTask] Added full subproject handling. #1241
    • Fixed error, if error_get_last equals to null #1240
    • Added regression tests #1239
    • Added echoxml task #1238
    • Added support for creating custom attributes in the parsing phase. #1237
    • [DiagnosticsTask] Fixed composer warning. #1236
    • Moved coverage tasks to new repo #1230
    • Removed ExportPropertiesTask in favor of EchoProperties task #1229
    • Moved Liquibase Tasks to an ext repo. #1228
    • [PropertyTask] Added "required" attribute #1226
    • Added custom task/type support #1225
    • Fixed IsTrueCondition #1221
    • [PropertyTask] Added type hints #1218
    • [EchoTask] Fixed type handling. #1217
    • Removed memory limit from travis ini and some refactor #1216
    • Added posix permission selector #1209
    • Added multi line description support, … #1208
    • SassTask mangles the CLI command depending on attribute order #1206
    • Monolog listener #1204
    • Value "0" is impossible #1201
    • Incorrect type cast string-boolean #1200
    • Updated dependencies #1195
    • [WIP] Symfony 5 compat #1194
    • replace ignore-checks in tests #1193
    • replace @expectedException* anotation #1191
    • [FileList] Fixed iterator #1190
    • Removed unused lines of code. #1189
    • fix coding style for test files #1188
    • Allow symfony/* ^5.0 #1185
    • Fixed indention #1183
    • Move from PhingFile to SplFileObject - part 1 #1178
    • Fixed not called Phing::shutdown() #1177
    • Parameter unittests #1176
    • Update ComposerTask code & documentation #1175
    • fix coding style issues #1174
    • Added PrefixLines test #1168
    • Added SilentLoggerTest #1167
    • Create TimestampedLoggerTest #1166
    • Added test for StatisticsListener #1165
    • [DefaultLogger] added unit test for buildFinished #1164
    • CompserTask documentation #1163
    • PSR12 and Object Calisthenics #1161
    • get_magic_quotes_runtime() deprecated in 7.4 - replace HTTP_Request2 #1160
    • Added SleepTaskTest #1153
    • Fixed PSR12 related errors by phpcbf #1152
    • Add unit test for Description addText method #1151
    • Added bootstrap to scrutinizer config #1150
    • [PhingTest] Added test case for printUsage #1149
    • Fixed notice in JsonLogger. #1148
    • [DataTypeTest] Added missing license and property #1147
    • Datatype unit-tests #1146
    • [StatisticsListener] Fixed PHP Error #1145
    • The variable '$php_errormsg' is deprecated since PHP 7.2; Using error_get_last() instead #1144
    • Rename __import method #1143
    • StringReader should be an InputStreamReader #1141
    • PDOSQLExecTask constructor error #1138
    • update coding style #1137
    • add Build-Matrix #1136
    • FileHashTask should always generate a file. #1135
    • Added loglevel attribute to the phpcs task. #1134
    • Removed duplicated code. #1133
    • update dependencies #1132
    • Added ext-intl to appveyor.yml #1131
    • add editorconfig, update gitattributes #1130
    • [WIP] DirectoryScanner and AbstractFileSet improvements. #1034
    • Auto-discover custom tasks when installed through Composer #654
    • MkdirTask behaves the same as "mkdir" Linux command and respects POSIX ACL #591
    Source code(tar.gz)
    Source code(zip)
    phing-3.0.0-alpha4.phar(15.12 MB)
    phing-3.0.0-alpha4.phar.asc(325 bytes)
    phing-3.0.0-alpha4.phar.sha1(65 bytes)
    phing-3.0.0-alpha4.phar.sha256(89 bytes)
    phing-3.0.0-alpha4.phar.sha384(121 bytes)
    phing-3.0.0-alpha4.phar.sha512(153 bytes)
  • 2.16.3(Feb 3, 2020)

  • 2.16.2(Jan 3, 2020)

  • 3.0.0-alpha3(Sep 13, 2019)

    The following issues and pull requests were closed in this release:

    • Fix some PHP 7.4 specific deprecations. #1127
    • Bump scssphp/scssphp from 1.0.2 to 1.0.3 #1126
    • Bump aws/aws-sdk-php from 3.108.2 to 3.110.7 #1125
    • Bump phpunit/phpunit from 7.5.14 to 7.5.15 #1124
    • Code cleanup #1122
    • database condition #1121
    • Added verbose log to mkdir if dir exists already. #1120
    • Get rid of useless code in PhingFile #1119
    • Reduced copy paste #1118
    • Removed redundant else branch. #1117
    • Fixed some inspections #1116
    • Fixed low deps issue #1115
    • Added circular reference check. #1114
    • Test suite fails for travis on php 7.1 with low deps #1113
    • Fixed some more inspections #1111
    • Fixed some more ci issues. #1110
    • Fixed scrutinizer issue #1109
    • IntrospectionHelper should not convert to bool, if a typehinted string was found. #1108
    • Updated scrutinizer config #1107
    • Only send coverage report if not phpcs build #1106
    • Added iterator support for FileList #1105
    • Added reference check for FileSet::getIterator() #1104
    • foreach with filelist causes fatal error #1103
    • PSR-12 #1097
    • [phpcs] phpcs 3 compatible task #1096
    • Update obsolete phpstan --errorFormat flag with correct one #1095
    • istrue treats undefined property as "true" #1093
    • PHPStanTask with Fileset support #1091
    • Reduced code #1090
    • [HttpCondition] Removed deprecated constant php 7.3 compat #1089
    • Update docker instructions #1087
    • Feature/visualizer theming #1084
    • Error while using AutoloaderTask #1080
    • [StopWatch] Fixed visibility of action methods. #1079
    • Used getDataTypeName instead of legacy code #1073
    • Added missing license headers. #1072
    • Removed deprecated scpsend alias #1071
    • Removed not used test file. #1070
    • [ApplyTask] Fixed wrong condition #1069
    • PHPUnit removed hack #1061
    • Removed PHPUnit\Util\Log\JUnit::setWriteDocument() #1060
    • Made some more args optional #1059
    • Made some args optional. #1058
    • Removed unused method #1056
    • fieldsets not supported by phpstan task #1055
    • Dependencies missing in PHAR #1053
    • Reduced code #1050
    • Removed duplicate and unused method #1049
    • Added StatisticsListener to the travis builds #1048
    • Reduced duplicate code #1047
    • Added missing precondition checks for references #1045
    • Fixed DirectoryScanner - wrong method call #1044
    • Fixed line ending issue in SuffixLines #1043
    • Fixed relaxng validation errors #1042
    • SuffixLines filter does not preserve line endings #1041
    • Added event debug logs. #1040
    • Added support for object::__toString inside EventObject::__toString #1039
    • Added version upperbound to pear/http_request2 #1038
    • LineContains uses readLine #1033
    • Replaced while...each loops with foreach. #1032
    • Bug when using filter on large files #1030
    • Improved debug log - ref to string if possible #1029
    • Added test cases. #1028
    • Fixed single test execution of phpunit tests. #1027
    • Fixed phing test execution under PHPUnit 8 #1024
    • PatchTask extensions #1023
    • Feature/visualizer task #1019
    Source code(tar.gz)
    Source code(zip)
    phing-3.0.0-alpha3.phar(25.48 MB)
    phing-3.0.0-alpha3.phar.asc(325 bytes)
    phing-3.0.0-alpha3.phar.sha1(64 bytes)
    phing-3.0.0-alpha3.phar.sha256(88 bytes)
    phing-3.0.0-alpha3.phar.sha384(120 bytes)
    phing-3.0.0-alpha3.phar.sha512(152 bytes)
  • 3.0.0-alpha2(Jan 4, 2019)

    The following issues and pull requests were closed in this release:

    • No need for verbose log on ref change for UE #1007
    • Removed include_once #1006
    • Opened IoncubeEncoderTask to all php versions #1005
    • Added DisableInputHandler #1004
    • Feature request: Disable Input #1003
    • Third $parentDir param should be optional #1002
    • Extended tstamp task. #995
    • Added test for basename task. #994
    • Removed obsolete windows test file #993
    • Skipped git task tests on windows #992
    • StopwatchTask should use DispatchTask #991
    • Use dedicated PHPUnit assertions for better error messages #990
    • Refactor foreach loop into in_array call #989
    • Appveyor should not update composer deps #987
    • Added exception message to verbose output. #986
    • Fix PropertyCopy documentation #985
    • Fix coding standards issues and docblocks. #982
    • Make PHPStan task generate error messages and allow skipping see #980 #981
    • PHPStan Task does not fail during errors #980
    • The introduction seemed a bit dated, so updated it a bit. Also added some minor punctuation fixes. #979
    • Added Svn Revert Task #977
    • Fixed file comments for better API generation #976
    • Removed outdated todo #975
    • Updated appveyor config #974
    • Added URLEncodeTask. #973
    • Avoid calling get_class on null in UnknownElement. #972
    • Added preserve duplicates to PathConvert #969
    • Fixed null pointer exception #968
    • Add verbosity to VersionTask #967
    • Added index to foreach task #963
    • Added PHPUnit 7 support. #962
    • Added silent flag to symfony console task #961
    • SymfonyConsole - ProgressBar output incorrect #960
    • VersionTask can manage 'v' prefix #955
    • Compatability with phpunit7? #952
    • #946: Trim outputProperty value of GitLogTask. #947
    • Fix for archive task #945
    • Missing ${file.separator} ? #943
    • Cleanup of #735 - part 4 #940
    • Cleanup of #735 - part 3 #939
    • Cleanup of #735 - part 2 #938
    • Fixed DefaultExcludes by removing an old hhvm fix #937
    • Expanding a Property Reference with ${toString:} #936
    • Fixed test execution. #935
    • Added AnsiColorLogger and SilentLogger to the docs #932
    • Added missing requirements for #826 #931
    • Added file attribute of fileset to doc and grammar #927
    • Added nested params to PhpEvalTask #926
    • Mapper support for PathConvert task. #925
    • Added blockfor task to grammar #924
    • Added project instance and location to targets #923
    • Small additions to the os condition #922
    • Fixed verbose logging of exception traces. #921
    • 'notify-send' is not recognized as an internal or external command #915
    • Consistent usage of to string #913
    • Made ProjectConfigurator::__construct private #912
    • Added missing strict attrib to grammar #911
    • Added missing logskipped attrib for targets in grammar #910
    • PHPStan task #908
    • Added html attribute to XsltTask #907
    • Be less restrictive on TaskContainer::addTask(Task) #906
    • Take care of PHP return types in IntrospectionHelper #905
    • Fixes #560 #904
    • Made XML based property files loadable. #903
    • Fixed #887 #902
    • Removed obsolete php version check #901
    • Fixed condition of child nodes at prefix building in XmlPropertyTask #900
    • Fixed nested condition test in FailTask #899
    • Fixed PhingFile::createNewFile if parent is null #898
    • Fixed isBoolean check. #897
    • Update Phing.php #896
    • Fixed undefined constant. #895
    • Refactors SassTask #892
    • Generated .phar is a bit big #891
    • Fix PHP CodeSniffer cache write to directory #890
    • Adds some SassTask tests #889
    • Failing test ForeachTaskTest::testLogMessageWithFileset #887
    • Removed fallback part of the PropertyTask documentation #885
    • Cleanup of #735 - part 1 #878
    • Enable HttpRequestTask to validate response codes #824
    • SVN Revert task #805
    • [WIP] Small improvement on comparing files. #785
    • [WIP] Fixed whitespace issue on argument escaping. #735
    • Unwanted spaces in attribute with forced escape in ExecTask #637
    • MkdirTask behaves the same as "mkdir" Linux command and respects POSIX ACL #591
    • Include (most used) dependencies in phar (Trac #1113) #566
    Source code(tar.gz)
    Source code(zip)
    phing-3.0.0-alpha2.phar(24.55 MB)
    phing-3.0.0-alpha2.phar.asc(325 bytes)
    phing-3.0.0-alpha2.phar.sha1(64 bytes)
    phing-3.0.0-alpha2.phar.sha256(88 bytes)
    phing-3.0.0-alpha2.phar.sha384(120 bytes)
    phing-3.0.0-alpha2.phar.sha512(152 bytes)
  • 3.0.0-alpha1(Mar 23, 2018)

    The following issues were closed in this release:

    • fixed typos in error messages #888
    • Refactor SassTask tests #882
    • The is_executable check in the Which method when run on Windows is unnecessary. #880
    • Fixed #712 #879
    • Added missing method DataType::getDataTypeName() #864
    • Removed unused methods in StringHelper #863
    • Fixed ConsoleInputHandler for symfony 4 #862
    • Fixed regression test 309 for win #860
    • Fixed FileUtils::contentEquals #859
    • ConsoleInputHandler isn't Symfony 4 compatible #858
    • Added multiple property file inclusion. #856
    • Fixed wrong init value #855
    • Fixed FatalError in ZendGuardFileSet #854
    • Optimized api build file #852
    • Fixed grammar for phpdoc2 task. #851
    • Removed more include statements #850
    • Removed includes/requires from test sources. #849
    • Removed unused ident #846
    • Added SvnProp* tasks #845
    • Updated supported php version #844
    • Added ClasspathAware trait. #843
    • Get rid of FunctionParam class. #842
    • Added selectors to the grammar file. #841
    • Removed hhvm build from travis - added php nightly #839
    • Removed unused methods. #838
    • Fixed method call on duplicated targets. #837
    • Removed includes for phing own classes #836
    • Removed IterableFileSet #835
    • Removed settings of deprecated ini options #834
    • Simplified Character::isLetter() #833
    • Made DateSelector::setMillis() public #832
    • Improved error/exception reporting in Task::perform() #831
    • Added public setter/getter to reference object. #830
    • Target attrib of PhingTask must not be empty. #827
    • Included Listener/Logger chapter in master.xml #822
    • Updated documentation - FileSyncTask #820
    • Fixed call to a private member var. #819
    • Fixed exclude/include groups for phpunit 6. #818
    • Git branch #817
    • GitBranchTask failes with git >= 2.15.0 #816
    • Fixed composer install issue #815
    • Bump minimum PHP version to 7.0+ #813
    • PharPackageTask wrong format of path in webstub and/or clistub when building on Windows #809
    • Cannot make work PHPUnit 6 #802
    • Can't install dev-master version using Composer #799
    • Fixed generation of html reportfiles. #798
    • Init feature #796
    • Added type aware traits. #783
    • Added regex attrib to the filename selector. #782
    • Added casesensitive and handledirsep attribs to the regexp mapper. #781
    • Added casesensitive and handledirsep attribs to the glob mapper. #780
    • Added multline attribute to containsregexp selector. #779
    • Added negate, regexp, casesensitive attribs to linecontainsregexp filter #778
    • Added negate attribute to the linecontains filter. #777
    • Fixed log method - HttpGetTask. #771
    • Added stopwatch name to log output. #767
    • feature request: stopwatch should show name as well #765
    • stopwatch includes autoloader #764
    • Fix: php.ini variable evaluation and "Notice: A non well formed numeric value encountered" #761
    • Added ability logging exceptions. #760
    • Added location setting to all task defined. #759
    • Added DependSet task. #757
    • Added FileList support to the TouchTask #756
    • Added osfamily attribute to ExecTask #755
    • Fixed usage of filelist if PathConvert uses a reference. #754
    • Superseded #302 Remove S3 PEAR dependency #748
    • Added relentless task. #746
    • StatisticsListener #744
    • Default exclude task #740
    • Fixed PropertyConditions behavior. #739
    • Fixed deprecated function calls. #737
    • SCA with Php Inspections (EA Extended) #731
    • Added PHPLoc ^4 support. #729
    • PHPLoc Task: Wrong class name in CSV Formatter #725
    • PHPLoc task Wrong class name for XML Logger class #724
    • HttpRequestTask doesn't support POST application/json #715
    • SassTask: Consider removing/embeding the dependency on Pear::System #710
    • Parallel Task: Call to a member function push() on null in ... Manager.php:237 #706
    • Dynamic path for composer task #701
    • patchTask not shell escaping file paths #693
    • Relative Symlinks #684
    • NullPointerException when phploc is used without a formatter #683
    • Always interpret basedir as relative to project's root #668
    • phpunit task is not compatible with PHPUnit 6.0 #659
    • symfony/yaml dependency improvemnt #658
    • Deprecate the PEAR channel #657
    • Making phing compatible with phive (https://phar.io) #633
    • Phing Strict Build Mode #626
    • Adding 0 and 1 strings as true and false values in StringHelper. #590
    • PHPUnitReportTask fails with XSLTProcessor::importStylesheet() unable to read phar:/usr/local/bin/phing/etc/str.replace.function.xsl (Trac #1240) #584
    • Unit test for various Git and SVN related tasks fails if locale is not 'en' or 'C' (Trac #1213) #577
    • Phingcall should have the options returnProperty (Trac #1209) #576
    • add task for git archive or git checkout-index (Trac #1182) #573
    • Error overwriting symlinks on copy or move (Trac #1096) #562
    • Support in chmod, chown, delete, echo, copy, foreach and move tasks (Trac #1026) #559
    • ComposerTask when composer is installed in the system (Trac #1008) #558
    • phing should get a strict mode (Trac #918) #554
    • Add 'hide input' attribute to InputTask (Trac #885) #553
    • Find build.xml file in parent directory tree (Trac #864) #551
    • includePath using project.basedir is failing under certain conditions (Trac #586) #537
    • Properties not being set on subsequent sets. (Trac #511) #535
    • Build Progress Bar (Trac #305) #532
    • Document that in a FileSet include/exclude "foo/" means "foo/**" #367
    • Make basedir property (including its default value) a path relative to the buildfile #358
    • Remove S3 PEAR dependency #302
    • Consider the strings "1" and "0" to be true and false, respectively. #261
    • Phing Strict Build Mode #159

    The following pull requests were merged in this release:

    • fixed typos in error messages #888
    • Refactor SassTask tests #882
    • The is_executable check in the Which method when run on Windows is unnecessary. #880
    • Fixed #712 #879
    • Added missing method DataType::getDataTypeName() #864
    • Removed unused methods in StringHelper #863
    • Fixed ConsoleInputHandler for symfony 4 #862
    • Fixed regression test 309 for win #860
    • Fixed FileUtils::contentEquals #859
    • Added multiple property file inclusion. #856
    • Fixed wrong init value #855
    • Fixed FatalError in ZendGuardFileSet #854
    • Optimized api build file #852
    • Fixed grammar for phpdoc2 task. #851
    • Removed more include statements #850
    • Removed includes/requires from test sources. #849
    • Removed unused ident #846
    • Added SvnProp* tasks #845
    • Updated supported php version #844
    • Added ClasspathAware trait. #843
    • Get rid of FunctionParam class. #842
    • Added selectors to the grammar file. #841
    • Removed hhvm build from travis - added php nightly #839
    • Removed unused methods. #838
    • Fixed method call on duplicated targets. #837
    • Removed includes for phing own classes #836
    • Removed IterableFileSet #835
    • Removed settings of deprecated ini options #834
    • Simplified Character::isLetter() #833
    • Made DateSelector::setMillis() public #832
    • Improved error/exception reporting in Task::perform() #831
    • Added public setter/getter to reference object. #830
    • Target attrib of PhingTask must not be empty. #827
    • Included Listener/Logger chapter in master.xml #822
    • Updated documentation - FileSyncTask #820
    • Fixed call to a private member var. #819
    • Fixed exclude/include groups for phpunit 6. #818
    • Git branch #817
    • Fixed composer install issue #815
    • Fixed generation of html reportfiles. #798
    • Added type aware traits. #783
    • Added regex attrib to the filename selector. #782
    • Added casesensitive and handledirsep attribs to the regexp mapper. #781
    • Added casesensitive and handledirsep attribs to the glob mapper. #780
    • Added multline attribute to containsregexp selector. #779
    • Added negate, regexp, casesensitive attribs to linecontainsregexp filter #778
    • Added negate attribute to the linecontains filter. #777
    • Fixed log method - HttpGetTask. #771
    • Added stopwatch name to log output. #767
    • Fix: php.ini variable evaluation and "Notice: A non well formed numeric value encountered" #761
    • Added ability logging exceptions. #760
    • Added DependSet task. #757
    • Added FileList support to the TouchTask #756
    • Added osfamily attribute to ExecTask #755
    • Fixed usage of filelist if PathConvert uses a reference. #754
    • Superseded #302 Remove S3 PEAR dependency #748
    • Added relentless task. #746
    • StatisticsListener #744
    • Default exclude task #740
    • Fixed PropertyConditions behavior. #739
    • Fixed deprecated function calls. #737
    • SCA with Php Inspections (EA Extended) #731
    • Added PHPLoc ^4 support. #729
    • Dynamic path for composer task #701
    • Phing Strict Build Mode #626
    • Adding 0 and 1 strings as true and false values in StringHelper. #590
    • Document that in a FileSet include/exclude "foo/" means "foo/**" #367
    • Make basedir property (including its default value) a path relative to the buildfile #358
    Source code(tar.gz)
    Source code(zip)
    phing-3.0.0-alpha1.phar(80.81 MB)
    phing-3.0.0-alpha1.phar.asc(325 bytes)
    phing-3.0.0-alpha1.phar.sha1(64 bytes)
    phing-3.0.0-alpha1.phar.sha256(88 bytes)
    phing-3.0.0-alpha1.phar.sha384(120 bytes)
    phing-3.0.0-alpha1.phar.sha512(152 bytes)
  • 2.16.1(Jan 25, 2018)

  • 2.16.0(Dec 22, 2016)

    This release contains the following new or improved functionality:

    • Append, Property, Sleep, Sonar and Truncate tasks
    • Improved PHP 7.1 compatibility
    • Various typo and bug fixes, documentation updates

    This release will most likely be the last minor update in the 2.x series. Phing 3.x will drop support for PHP < 5.6.

    The following issues were closed in this release:

    • phing should get a strict mode (Trac #918) #554
    • Can not delete git folders on windows (Trac #956) #556
    • Relative symlinks (Trac #1124) #567
    • Tests fail under windows (Trac #1215) #578
    • stripphpcomments matches links in html (Trac #1219) #579
    • OS detection fails on OSX (Trac #1227) #581
    • JsHintTask fails when reporter attribute is not set (Trac #1230) #582
    • An issue with 'file' attribute of 'append' task (v2.15.1) #595
    • An issue with 'append' task when adding a list of files in a directory (v2.15.1) #597
    • Git auto modified file with phing vendor #613
    • phar file not working - \Symfony\Component\Yaml\Parser' not found #614
    • JSHint — Support of specific config file path #615
    • PHP notice on 7.1: A non well formed numeric value encountered #622
    • Sass task fails when PEAR is not installed #624
    • sha-512 hash for phing-latest.phar #629
    Source code(tar.gz)
    Source code(zip)
    phing-2.16.0.phar(3.31 MB)
    phing-2.16.0.phar.asc(325 bytes)
  • 2.15.2(Oct 13, 2016)

  • 2.15.1(Oct 11, 2016)

    This release fixes a missing include and two bugs:

    • [https://www.phing.info/trac/ticket/1264] delete fileset /foo.php deletes /baz.foo.php
    • [https://www.phing.info/trac/ticket/1038] PhingFile getPathWithoutBase does not work for files outside basedir
    Source code(tar.gz)
    Source code(zip)
  • 2.15.0(Sep 14, 2016)

    This release contains the following new or improved functionality:

    • PHP 7.0 compatibility was improved
    • Phing grammar was updated
    • Tasks to work with Mercurial were added
    • Various typo and bug fixes, documentation updates

    The following tickets were closed in this release:

    • [1263] Error in SassTask on PHP 7
    • [1262] Fatal error in SassTask when Sass gem is not installed
    • [1259] PHP_CLASSPATH Enviroment Variable
    • [1258] ApigenTask issue
    • [1257] The phpunit-code-coverage version 4.x breaks the phing-tasks-phpunit component
    • [1254] ftpdeploy : [PHP Error] require_once(PEAR.php): failed to open stream: No such file or directory [line 251 of site\vendor\phing\phing\src\Task\Ext\FtpDeploy.php]
    • [1253] Phing gitlog task not return last commit when committer's system time is set forward
    • [1249] First tstamp task is generating wrong timestamp
    • [1247] IsProperty(True/False)Condition doesn't support the 'name' attribute
    • [1246] FailTask with nested condition always fails
    • [1243] Command line argument with "|" character must be quoted
    • [1238] Add documentation for Smarty and ReplaceRegexp tasks
    • [566] Add Mercurial support
    Source code(tar.gz)
    Source code(zip)
    phing-2.15.0.phar(2.97 MB)
    phing-2.15.0.phar.sha512(146 bytes)
    phing-2.15.0.tgz(3.95 MB)
    phing-2.15.0.tgz.sha512(145 bytes)
    phing-2.15.0.zip(4.90 MB)
    phing-2.15.0.zip.sha512(145 bytes)
  • 2.14.0(Mar 10, 2016)

    This release contains the following new or improved functionality:

    • Phing can now emit a specific status code on exit after failing
    • Added IsPropertyTrue/IsPropertyFalse conditions
    • Added IsWritable / IsReadable selectors
    • Added GitDescribe task
    • Added CutDirs mapper
    • Line breaks in property files on Windows machines fixed
    • FileSync task now supports excluding multiple files/directories
    • Various typo and bug fixes, documentation updates

    The following tickets were closed in this release:

    • [1245] ExecTask documentation has incorrect escape attribute default value
    • [1244] phpunit task -- problem when listener depends on bootstrap
    • [1242] symfonyConsoleTask does not quote path to console
    • [1241] SymfonyConsoleTask's checkreturn / propertyname are not documented
    • [1239] ResolvePath just concatenates if "dir" attribute is present
    • [1237] HttpGetTask should catch HTTP_Request2_Exception, throw BuildException
    • [1236] version-compare condition typo in documentation
    • [1235] misworded sentence in documentation
    • [1234] IsFailure condition always evaluates to TRUE
    • [1231] JsHintTask fails when filename contains double quotes
    • [1198] PropertyTask resolving UTF-8 special chars in file attribute
    • [1194] Update relax-ng schema
    • [1132] Provide SHA512 sum of all generated archives for a release
    • [1131] Verification of changelog file fails when your file is in a directory added in your classpathref
    • [1046] ReplaceTokensWithFile doesn't support begintoken/endtokens with / in them
    Source code(tar.gz)
    Source code(zip)
  • 2.13.0(Dec 4, 2015)

    This release contains the following new or improved functionality:

    • '-listener' command line argument
    • SSL connections in FtpDeploy task
    • IsFailure condition
    • Crap4J PHPUnit formatter
    • FirstMatch mapper
    • PhpArrayMapLines filter
    • NotifySend, Attrib tasks
    • Json and Xml command line loggers
    • Property parser now supports YAML files
    • PHPUnit 5.x supported
    • PHP 7 fixes
    • Updated Apigen support
    • PhpCodeSniffer task can now populate a property with used sniffs
    • PHPMD and PhpCodeSniffer task can now cache results to speed up subsequent runs
    • Various typo and bug fixes, documentation updates

    The following tickets were closed in this release:

    • [1224] JSHint and space in the path of the workspace (Windows 7)
    • [1221] Case insensitive switch doesn't work
    • [1217] Add ability to ignore symlinks in zip task
    • [1212] Add support for formatters for PhpLoc task
    • [1187] Disable compression of phing.phar to make it work on hhvm
    Source code(tar.gz)
    Source code(zip)
  • 2.12.0(Aug 24, 2015)

    This release contains the following new or improved functionality:

    • Retry, Tempfile, Inifile tasks
    • 'keepgoing' command line mode
    • Fileset support in the Import task
    • EscapeUnicode, Concat filters
    • Profile logger
    • Composite mapper
    • Various typo and bug fixes

    The following tickets were closed in this release:

    • [1208] When UntarTask fails to extract an archive it should tell why
    • [1207] PackageAsPath Task exists in 2.11, but not in documentation
    • [1206] WaitFor task has maxwaitunit attribute, not WaitUnit
    • [1205] Triple "B.37.1 Supported Nested Tags" header
    • [1204] Wrong type of record task loglevel attribute
    • [1203] Duplicated doc for Apply task, spawn attribute
    • [1199] PHPUnitReport task: package name detection no longer works
    • [1196] Target 'phing.listener.AnsiColorLogger' does not exist in this project.
    • [1193] There is no native method for manipulating .ini files.
    • [1191] phing parallel task should handle workers dying unexpectedly
    • [1190] RegexTask processes backslashes incorrectly
    • [1189] Coverage Report broken for Jenkins PHP Clover
    • [1178] Parameter getValue is null when parameter is equal to 0
    • [1148] phpdoc2 via phar
    Source code(tar.gz)
    Source code(zip)
  • 2.11.0(May 20, 2015)

    This release contains the following new or improved functionality:

    • PharData and EchoProperties tasks
    • 'silent' and 'emacs' command line modes
    • Improvements to FileHash and FtpDeploy tasks
    • SuffixLines and Sort filters

    The following tickets were closed in this release:

    • [1186] Implement pharLocation attribute for PHP_Depend task
    • [1185] Implement pharLocation attribute for PHPMD task
    • [1183] Fatal error in PHPMDTask
    • [1176] Showwarnings doesn't work
    • [1170] Allow more than one code standard review for PHP_CodeSniffer.
    • [1169] Allow for fuzzy parameter for phpcpdPHPCPD
    • [1162] add depth param to GitCloneTask
    • [1161] Update phpcpd & phploc tasks to work with phar versions
    • [1134] Phar version did not provide colorized output
    • [462] Incremental uploads in ftp deploy task
    Source code(tar.gz)
    Source code(zip)
  • 2.10.1(Feb 19, 2015)

    This release fixes the following tickets:

    • [1174] Phing can't work PHPUnit(PHAR)
    • [1173] [PHP Error] include_once(PHP/PPMD/Renderer/XMLRenderer.php): failed to open stream: No such file or directory
    • [1171] Socket condition does not work
    Source code(tar.gz)
    Source code(zip)
  • 2.10.0(Feb 9, 2015)

    This release contains the following new or improved functionality:

    • 'user.home' property on Windows fixed
    • Various documentation updates
    • Added support for listeners configured via phpunit.xml config
    • Basename task
    • Dirname task
    • Diagnostics task
    • FilesMatch condition
    • HasFreeSpace condition
    • PathToFileSet task
    • PhingVersion task/condition
    • PropertyRegex task
    • Recorder task
    • Socket condition
    • Xor condition

    The following tickets were closed in this release:

    • [1168] PhpCodeSnifferTask incompatible with PHP_CS 2.2.0
    • [1167] include task can't really have mode
    • [1163] Phing and PHPMD via composer both
    • [1160] Documentation lists covereage-report styledir as required.
    • [1159] phpunit task ignores excludeGroups, groups attributes
    • [1152] Add socket condition
    • [1127] Removing .phar from the phar file makes it crash
    • [1120] Phing 2.8.1 does not support PDepend 2.0
    • [856] ZPK Packaging for zend server
    • [250] recorder task
    Source code(tar.gz)
    Source code(zip)
  • 2.9.1(Dec 3, 2014)

    This releases fixes a Windows regression and adds the following new functionality:

    • Http condition
    • Switch task
    • Throw task

    The following tickets were closed in this release:

    • [1158] Phing fails to call itself with Exec task
    • [1157] ZIP task ignores ${phing.dir}
    • [1156] phing+windows copy file path
    • [1155] Add http condition
    • [1154] Can't read version information file
    • [1147] Resetting Phing::$msgOutputLevel
    Source code(tar.gz)
    Source code(zip)
  • 2.9.0(Nov 25, 2014)

    This release contains the following new or improved functionality:

    • Phing now supports HHVM
    • Stopwatch task added
    • Unit test coverage increased
    • Source code formatted to PSR-2
    • Various bugs and documentation errors fixed

    Additionally, the following Trac tickets (see www.phing.info) were fixed in this release:

    • [1151] PHPMD Task does not support the format tag
    • [1149] Exclude extra files from composer package
    • [1144] Reduce PhingCall/Foreach log messages
    • [1140] DefaultLogger is not default logger
    • [1138] ParallelTask - error in subtask should fail build
    • [1135] obfuscation-key option for IoncubeEncoderTask does not work
    • [1133] copytask haltonerror = "false" function failure when source dir not exists
    • [1130] Add documentation for Manifest task
    • [1129] ManifestTask md5 hash vs FileHashTask md5 hash not the same
    • [1128] Imported target won't run until there is one with the same name in main build.xml
    • [1123] ApplyTask outputProperty doesn't append
    • [1122] Untar task does not preserve file permissions
    • [1121] Please fix the syntax error in PHP Lint
    • [1104] ArchiveComment Parameter for ZipTask
    • [1095] ReferenceExistsCondition returns true for all UnknownElements
    • [1089] phing -l is listing imported targets twice
    • [1086] Support for running on HHVM
    • [1084] pdepend task does not find dependencies when installed by composer
    • [1069] PHPUnitTask formatter does not create directory if specified "todir" does not exist
    • [1068] Phingcall and Import issues
    • [1040] Composer task has no documentation
    • [1012] SymlinkTaks overwrite fails if target doesn't exist
    • [965] includePathTask: Allow appending and replacing
    • [945] several phpunit task problems
    • [930] Attribute logoutput to property task
    • [796] Can't delete all subdirectories without directory itself
    • [441] Reformat Phing source code to PSR-2
    Source code(tar.gz)
    Source code(zip)
  • 2.8.2(Nov 19, 2014)

  • 2.8.1(Nov 19, 2014)

    This patch release fixes a regression preventing Phing from being used on machines where PEAR is not installed, as well as another (unrelated) issue.

    • [1114] PHP Fatal Error using Phing on machines without PEAR
    • [1111] setting PhpLintTask interpreter
    Source code(tar.gz)
    Source code(zip)
Owner
The Phing Project
The Phing Project
The PHP Deployment Tool

Magallanes What's Magallanes? Magallanes is a deployment tool for made with PHP for PHP applications; it's quite simple to use and manage. For more in

Andrés Montañez 685 Dec 25, 2022
Deployer based deployment for WordPress with media and database synchronisation.

deployer-extended-wordpress What does it do? Should I use "deployer-extended-wordpress" or "deployer-extended-wordpress-composer"? Dependencies Instal

SourceBroker 24 Dec 11, 2022
Deploy your PHP with PHP. Inspired by Capistrano and Vlad.

Pomander A light-weight flexible deployment tool for deploying web applications. This project was inspired by Capistrano and Vlad the Deployer, as wel

Mike Kruk 202 Oct 18, 2022
PHP transpiler - Write and deploy modern PHP 8 code, today.

Phabel Write and deploy modern PHP 8 code, today. This is a transpiler that allows native usage of PHP 8+ features and especially syntax in projects a

Phabel 219 Dec 31, 2022
Elegant SSH tasks for PHP.

Laravel Envoy Introduction Laravel Envoy provides a clean, minimal syntax for defining common tasks you run on your remote servers. Using Blade style

The Laravel Framework 1.5k Dec 20, 2022
A deployer library for PHP 5.3

Plum An object oriented deployer library Installation and configuration Plum does not provide and autoloader but follow the PSR-0 convention. $plum =

Julien Brochet 87 Feb 5, 2022
PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.

P H I N G Thank you for using PHING! PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant. You can do anything wit

The Phing Project 1.1k Jan 7, 2023
Mira - A lightweight WebUI alternative to top/htop for GNU/Linux.

Mira Mira lets you monitor your server's resource usage through a responsive WebUI. ======== Introduction Screenshots Installation Limitations Known I

Jams246 9 Mar 27, 2022
An effort to make testing PHP code as easy and fun as its JavaScript equivalent

An effort to make testing PHP code as easy and fun as its JavaScript equivalent when using the excellent Jasmine, from which syntax and general usage is shamelessly borrowed.

Johan Stenqvist 24 Apr 22, 2022
A CLI tool to check whether a specific composer package uses imported symbols that aren't part of its direct composer dependencies

A CLI tool to analyze composer dependencies and verify that no unknown symbols are used in the sources of a package. This will prevent you from using "soft" dependencies that are not defined within your composer.json require section.

Matthias Glaub 722 Dec 30, 2022
Easily parse your project's Composer configuration, and those of its dependencies, at runtime

Composed This library provides a set of utility functions designed to help you parse your project's Composer configuration, and those of its dependenc

Josh Di Fabio 50 Nov 27, 2022
This project has reached its end-of-life (EOL).

EOL Notice This project has reached its end-of-life (EOL). README Requirements The supported Magento version is 1.9.x Features ajax navigation using h

Catalin Ciobanu 136 Apr 2, 2022
Easily add all the 58 Algerian Wilayas and its Dairas to your cool Laravel project (Migrations, Seeders and Models).

Laravel-Algereography Laravel-Algereography allows you to add Migrations, Seeders and Models of Algerian Wilayas and Dairas to your existing or new co

Hocine Saad 48 Nov 25, 2022
Brew PHP switcher is a simple shell script to switch your apache and CLI quickly between major versions of PHP

Brew PHP switcher is a simple shell script to switch your apache and CLI quickly between major versions of PHP. If you support multiple products/projects that are built using either brand new or old legacy PHP functionality. For users of Homebrew (or brew for short) currently only.

Phil Cook 872 Dec 22, 2022
Database lookup tool in php, skidlookup has not been claimed so if u want to use this src all right's go to u, idea came from fedsearch

skidlookup Database lookup tool in php, skidlookup has not been claimed so if u want to use this src, all right's go to u, idea came from fedsearch in

Nano 12 Dec 1, 2021
Database lookup tool in php, skidlookup has not been claimed so if u want to use this src all right's go to u, idea came from fedsearch

skidlookup Database lookup tool in php, skidlookup has not been claimed so if u want to use this src, all right's go to u, idea came from fedsearch in

Nano 12 Dec 1, 2021
PHP implementation for reading and writing Apache Parquet files/streams

php-parquet This is the first parquet file format reader/writer implementation in PHP, based on the Thrift sources provided by the Apache Foundation.

null 17 Oct 25, 2022
Docker with Apache, MySql, PhpMyAdmin and Php

docker-lamp Docker example with Apache, MySql 8.0, PhpMyAdmin and Php You can use MariaDB 10.1 if you checkout to the tag mariadb-10.1 - contribution

Joel Cavat 360 Dec 3, 2022
A simple tool that I share with you. This tool serves to make conversions from text to audio Google Translate.

A simple tool that I share with you. This tool serves to make conversions from text to audio Google Translate. You can download this conversion 100% for free. Good luck.

Afid Arifin 1 Oct 25, 2021