Coder Social home page Coder Social logo

pickle's Introduction

pickle - PHP Extension installer SensioLabsInsight

Pickle installs PHP extensions easily on all platforms.

Code Climate Scrutinizer Code Quality Code Coverage Build Status

Installation

Grab the latest phar at https://github.com/FriendsOfPHP/pickle/releases/latest

wget https://github.com/FriendsOfPHP/pickle/releases/latest/download/pickle.phar

and run using

$ php pickle.phar

or add the execute flag

$ chmod +x pickle.phar

then run as:

$ pickle.phar info apcu

You can also rename the phar to "pickle"

$ mv pickle.phar pickle

so it can be called using pickle only.

And finally you can add it to your path or copy it in /usr/local/bin or your favorite binary directory.

On windows, use

$ php pickle.phar

or create a .bat containing:

@echo OFF
setlocal DISABLEDELAYEDEXPANSION
c:\path\to\php.exe "c:\path\to\pickle.phar" %*

If someone would be kind enough to write an installer script, we would be eternally thankful :)

Introduction

Pickle is a new PHP extension installer. It is based on Composer and the plan is to get Composer to fully support it. See composer/composer#2898 (comment) for the Composer part of the discussions.

Pickle fully supports existing extensions in http://pecl.php.net, running the following will install the latest available version of the memcache extension:

$ pickle install memcache

Windows is fully supported, to install binaries or from the sources (work in progress and given that you have a working build environment in place).

The concept behind Pickle is to ease the life of both developers and end users.

For end users, nothing changes much except that Pickle is based on modern concepts and works with multiple protocols (git or http(s) URLs).

For developers, it drastically reduces the release work. Extension meta information is not duplicated anymore. Configuration options, files to package etc. are automatically fetched from the sources and the respective files are updated during the release process. There is no risk anymore of forgetting to update the version here or there, or to neglect to include a file.

Installation From Sources

While the phar usage is recommended, one is indeed able to use it from git.

Clone this repository and install the dependencies with Composer:

$ composer install

If you like to create your own phar from the pickle sources, you will need to install Box (http://box-project.github.io/box2/). Then clone the repository and run the following commands:

$ cd pickle
$ composer install --no-dev --optimize-autoloader
$ php -d phar.readonly=0 box.phar build

Usage

Usage is pretty straightforward. For example, to install the memcache extension run the following command:

$ bin/pickle install memcache

If you need to install a specific version of an extension, you may do so:

$ bin/pickle install [email protected]

You can also use pickle from your extension directory, the following command:

$ cd myext
$ bin/pickle install

A list of the commands is available using:

$ bin/pickle list

To get extended help for a given command, use:

$ bin/pickle help install

To convert a package (based on package.xml current PECL installer), use:

$ bin/pickle convert /home/pierre/myext/

Or run it from the extension source directory.

Contributing

Fork the project, create a feature branch and send us a pull request.

To ensure a consistent code base, you should make sure the code follows the PSR-1 and PSR-2 coding standards.

To check CS issues, you can use the cs-check composer command:

$ composer run cs-check

To automatically fix CS issues, you can use the cs-fix composer command:

$ composer run cs-fix

Support

Support is available via the issue tracker in the Github project page or via IRC, EFNet, channel #pickle.

Running tests

You should run the tests by setting the PICKLE_PECL_TESTSERVER environment variable to yes (or true or 1). This implies that test are executed using a well-defined environment instead of using a live web server.

# On Unix-like systems
export PICKLE_PECL_TESTSERVER=yes
# On Windows systems
set PICKLE_PECL_TESTSERVER=yes

Unit tests are written using atoum. You will get atoum, among other dependencies, when running composer install. To run tests, you will need to run the following command:

$ vendor/bin/atoum

# To run tests in a loop, ideal to do TDD
$ vendor/bin/atoum --loop

There are also some Behat tests. You will get Behat, among other dependencies, when running composer install. To run tests, you will need to run the following command:

$ vendor/bin/behat

# To choose the test suite you want to run
$ vendor/bin/behat -s pickle

Behat tests also test the phar, generate it prior to run the full test as described here (composer install --no-dev mode).

Pickle is covered using 4 Behat tests suites:

  • pickle runs tests against pickle's sources
  • pickle_phar runs tests against pickle's Phar which you have to manually build
  • pecl tests PECL extensions conversion with pickle's sources
  • phar_pecl tests PECL extensions conversion with pickle's Phar

pickle's People

Contributors

adhocore avatar cmb69 avatar desrosj avatar duncan3dc avatar fabpot avatar firehed avatar grahamcampbell avatar harikt avatar hrs-o avatar hustlahusky avatar hywan avatar ivan1986 avatar jubianchi avatar keradus avatar mbrodala avatar mcfedr avatar mlocati avatar pborreli avatar pierrejoye avatar romainneutron avatar ruudk avatar seldaek avatar shin1x1 avatar staabm avatar stevelacey avatar teohhanhui avatar tomasvotruba avatar vstokarev avatar weltling avatar zluiten avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pickle's Issues

Outdated phar

The phar archive linked in the readme is still the 0.1.1 release. Please update it to the latest release (0.2.0 currently)

handling of installed extensions, core or non core

We need a way to handle a list of installed extensions and provide APIs/Commands to list them, with version.

Core extensions being a total mess, we should create a special list for each PHP major version and list them as, f.e., libxml-5.4.8.

For non core extensions (aka installed separately via pickle or other), list them with the builtin versions. If installed by pickle, store the meta locally per php setup (we support only one for now but for the record so we do not forget that later :)

[Insight] Code should not be duplicated

in src/Console/Command/ArchiveCommand.php, line 37

The next 19 lines appear both in src/Console/Command/ArchiveCommand.php:37 and src/Console/Command/InstallerCommand.php:62.

    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $path = rtrim($input->getArgument('path'), '/\\');
        $jsonLoader = new Package\JSON\Loader(new Package\Loader());
        $package = null;

        if (file_exists($path . DIRECTORY_SEPARATOR . 'pickle.json')) {
            $package = $jsonLoader->load($path . DIRECTORY_SEPARATOR . 'pickle.json');
        }

Posted from SensioLabsInsight

HHVM support in Pickle

Per today, the big chunk on the HHVM integration was implemented. However the state is quite rudimentary. For the big part it's about getting sufficient information from HHVM itself.

Currently the install command is worky
sudo hhvm bin/pickle install https://github.com/vipsoft/hhvm-ext-uuid
The --verbose option can be used to see what goes under the carpet in case of an error.

The extension list from https://github.com/facebook/hhvm/wiki/Extensions was used for the development.

From the current state of the dynamic HHVM exts, the information one can get is alone the package name, nothing else is available. See
https://github.com/FriendsOfPHP/pickle/blob/master/src/Package/HHVM/Util/Cmake/Parser.php#L27
A minimal list on the info necessary is

  • name
  • version
  • stability
  • description

Many parts on figuring out the info about the HHVM binary itself are based on a guess:
https://github.com/FriendsOfPHP/pickle/blob/master/src/Engine/HHVM.php
Here for example to mention that php_ini_loaded_file() always delivers false, even when using hhvm -c ... But also, there's currently no way to read the informational parts (see the class) from the console, built-in constants or phpinfo() . That means, one currently can't use alternative engine instance, like hhvm pickle.phar install --php /path/to/other/hhvm someext. (Btw. --php should be probably renamed to something like --engine)

An issue I met when implementing the Build class is reported here
is reported here facebook/hhvm#4906 , however a workaround exists. Another issue is that the PharData class is not fully implemented, this is not a show stopper, but might shrink the abilities to unpack tarballs or pack releases in certain format.

Other issues/questions about the current pickle commands

  • convert command is probably not applicable to hhvm
  • info command may work if hhvm exts have appropriate composer.json, in the current state it cannot be implemented
  • same with the release command
  • same with the validate command
  • the tests are currently missing, however the state is very rudimentary, given we also miss some important info from hhvm for the proper implementations. In the future atoum/behat tests should be added.

I might have overseen something as there's really much stuff, so lets try&discuss.

Support builds of pure sources without any XML or JSON config

Currently pickle can convert package.xml to the native json format to work with PECL extensions. In some cases, when package.xml and pickle.json are absent, it still could generate pickle.json from several files contained in the extension source dir. Doing so will allow to build such extensions as well.

HHVM Extension Support

HHVM is currently planning on using Composer as a supported extension installer. I noticed in composer/composer#2898 that Composer is considering using Pickle as a plugin to install extensions. The HHVM extension installation process is pretty similar to PHP. Has there been any consideration for HHVM Pickle support or collaboration with HHVM?

pickle install --source, unclean behavior on windows

Source install on windows doesn't copy the extension DLL, neither its dependency DLLs, nor does it update the php.ini . This part has to be fixed so the behavior after the source build is identical to the binary install.

Pickle fails to detect extension_dir on xampp (Windows)

Hello guys,

unfortunately, pickle is unable to properly detect ext. dir on my Windows setup. Here is an error I've got:

$ pickle install apcu
+---------------+--------------------------+
| PHP Path      | c:\WWW\xampp\php\php.exe |
| PHP Version   | 5.5.6                    |
| Compiler      | vc11                     |
| Architecture  | x86                      |
| Thread safety | yes                      |
| Extension dir | no value                 |
| php.ini       | C:\WWW\xampp\php\php.ini |
+---------------+--------------------------+
downloading http://windows.php.net/downloads/pecl/releases/apcu/4.0.6/php_apcu-4
.0.6-5.5-ts-vc11-x86.zip
Extracting archives...
copying C:\Users\Administrator\AppData\Local\Temp\pickle-apcu\php_apcu.dll to no
 value\php_apcu.dll




  [Exception]
  Cannot copy DLL <C:\Users\Administrator\AppData\Local\Temp\pickle-apcu\php_
  apcu.dll> to <no value\php_apcu.dll>

I have no idea why it's detected as "no value". Of course I ensured that it's set in php.ini:

extension_dir="C:\WWW\xampp\php\ext"

Also, it's not overridden later in the file nor php -i output.

[Insight] Source code should not contain TODO comments

in src/Package.php, line 81

and in src/Package.php, line 119

TODO comments are left in the code when a feature (or a bug) isn't completely developed (or fixed). You should complete the implementation and remove the comment.

        return array_merge($options['with'], $options['enable']);
    }

    /**
     * @todo If someone prefers a nice regex for both AC_ and PHP_... :)
     *
     * @param string $which
     * @param string $config
     *
     * @return array

Posted from SensioLabsInsight

pickle install --source miss environment checks for Visual Studio, PHP SDK and others

Currently it's only possible to install from source while being on the right Visual Studio console and forcing all the necessary pass. pickle needs to do the checks for all the environment. It should be able to automatically find correct compiler and accompanying tools, and to setup the correct environment necessary for building an extension from source.

pickle install --binary has to fetch the dependency DLLs

Currently pickle fetches the extension archives from windows.php.net/downloads/pecl/releases . Those archives contain dependency DLLs along with the extension DLL. A better approach is to package the extensions with the extension DLLs only and to fetch the dependency DLLs using the deplister.exe tool.

[Insight] Code should not be duplicated

in src/Console/Command/InstallerCommand.php, line 168

The next 19 lines appear both in src/Console/Command/InstallerCommand.php:168 and src/Console/Command/ReleaseCommand.php:37.

            }

            $path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $package->getName();
        }

        $jsonLoader = new Package\JSON\Loader(new Package\Loader());
        $package = null;

        if (file_exists($path . DIRECTORY_SEPARATOR . 'pickle.json')) {
            $package = $jsonLoader->load($path . DIRECTORY_SEPARATOR . 'pickle.json');
        }

Posted from SensioLabsInsight

[Insight] Commented code should not be commited

in src/Package.php, line 92

Commented out code reduces readability and lowers the code confidence for other developers. If it's common usage for debug, it should not be committed. Using a version control system, such code can be safely removed.

     */
    protected function fetchArgWindows($which, $config)
    {
        $next = 0;
        $options = [];
        //ARG_ENABLE('apcu', 'Whether to enable APCu support', 'no');
        $type = false !== strpos($which, 'ENABLE')  ? 'enable' : 'with';
        while (false !== ($s = strpos($config, $which, $next))) {
            $s = strpos($config, '(', $s);
            $e = strpos($config, ')', $s + 1);
            $option = substr($config, $s + 1, $e - $s);

Posted from SensioLabsInsight

pickle on windows and build/install extension from source

@weltling i tried a lot to get pickle running ... followed your recommendations here: https://github.com/clickalicious/php_zopfli/pull/5#issuecomment-76916031

I springcleaned my development system. Removed D:\php-sdk and all content. Created a fresh new clean C:\php-sdk based on source of PHP 5.5.22. Added binaries + build dependencies (following my own guide: http://www.phpfluesterer.de/software-architecture/compile-php-and-or-an-extension-under-win-x86/). Checked that i can compile my own extension like described in my guide (link above). Everything works fine as long as i compile my extension following my guide.

Now we come to pickle. The process confuses me a bit ... I assume its just caused by path juggling...

I followed all steps you described above:

  • used C:\php-sdk
  • added the correct development package
  • added the (C:\php-sdk\phpdev\vc11\x86\php-source-directory\win32\build\phpize.bat) to %path% (Is this the correct one? If i call it manually from its folder it says "...phpize.js not found"
  • I use the VS2012 x86 Native Shell (based on cmd - shipped with MS VS 20XX)

And now the magic i really don't understand ...

Opening shell, navigate to "c:\php-sdk\phpdev\vc11\x86\php-source-directory" and calling "c:\php-sdk\phpdev\vc11\x86\php-source-directory>php C:\Development\web\pickle\bin\pickle info C:\php-sdk\phpdev\vc11\x86\pecl\zopfli-0.2.0"

pickle shows me the correct information about zopfli without any errors. This let me assume that pickle in general works fine, that pickle can handle the paths', that pickle find my extension and is able to read the information ...

At this point i thought - yeah i got it ... but ...

If I keep in directory "c:\php-sdk\phpdev\vc11\x86\php-source-directory" and call "php C:\Development\web\pickle\bin\pickle install C:\php-sdk\phpdev\vc11\x86\pecl\zopfli-0.2.0 --source"

The following error(s) happened: configure failed, see log at C:\Users\BENJAM~1.CAR\AppData\Local\Temp/pickle-zopfli0.2.0.0\config.log
Would you like to read the log?yes

1: phpsdk_setvars
2: set vars succeeded!

1: phpize
2: Eingabefehler: Die Skriptdatei "C:\php-sdk\phpdev\vc11\x86\php-source-directory\win32\build\script\phpize.js" wurde nicht gefunden.
2: Now run 'configure --help'

1: C:\php-sdk\phpdev\vc11\x86\pecl\zopfli-0.2.0/configure --enable-zopfli=shared
--enable-zopfli
2: Der Befehl "C:\php-sdk\phpdev\vc11\x86\pecl\zopfli-0.2.0/configure" ist entweder falsch geschrieben oder
2: konnte nicht gefunden werden.

The second 2: Translates to: "Input error: The script file: "...phpize.js" could not be found.
The fourth 2: Translates to: The command "...configure" is either wrong or could not be found.

Maybe you see something i did wrong or we talking about a bug. I'm not sure yet.

New release

The latest release is 0.1.1, and is the version available in the downloadable phar. But big changes have been done since then, and 0.1.1 triggers a fatal error when I try to run pickle install in my folder containing the Twig extension. Could you create a new release ?

main features removed?

It seems that the main feature of pickle has been removed during the refactoring.

All the existing meta are taken from files like CREDITS. These files should be parsed on every command to verify that they have not been modified since the last operation (or maybe check the files mtime.

This check must be transparent for the developers, they should not worry about whether or not the json file is updated, or any other.

pickle.phar broken, Hoa still required outside tests?

Warning: require(phar://C:/php-sdk/repo/pickle/pickle.phar/vendor/hoa/core/Hoa/Core/Core.php): failed to open stream: phar error: "vendor/hoa/core/Hoa/Core/Core.php" is not a file in phar "C:/php-sdk/repo/pickle/pickle.phar" in phar://C:/php-sdk/repo/pickle/pickle.phar/vendor/composer/autoload_real.php on line 57

Fatal error: require(): Failed opening required 'phar://C:/php-sdk/repo/pickle/pickle.phar/vendor/hoa/core/Hoa/Core/Core.php' (include_path='.;C:\php\pear') in phar://C:/php-sdk/repo/pickle/pickle.phar/vendor/composer/autoload_real.php on line 57

Notices on install

Undefined index: pecl_http in /home/mike/src/pickle.git/src/BuildSrcUnix.php on line 63
Trying to get property of non-object in /home/mike/src/pickle.git/src/BuildSrcUnix.php on line 64

pickle and pecl-web api

Hey Pierre, Hey Julien,

i've tested pickle on Windows. It works like charm. πŸ‘

I took a quick glance at "InstallerBinaryWindows.php". The file uses an scraping approach to determine if an extension exists and which versions it has. Why is scraping preferred over using service functionalities provided by the https://github.com/php/web-pecl repository? I think the PECL website could need some love to provide a better service layer especially for the windows extensions. Something like Packagist provides for Composer.

So please let me suggest some ideas for PICKLE using PECL-WEB.

  1. pickle info
    Currently the info command downloads the extension and uses the package.xml for getting infos. I'm in doubt if you implemented this intentionally, so i have to ask: do you want an 1:1 pickle to extension archive? I would prefer to fetch extension infos via an api.
    Simply ask http://pecl.php.net/package/$ext-name.json for the extension details or use cached infos.
  2. pickle list
    Currently displays the list of commands, which doesn't make sense, because there's already "h, help or ?".
    My suggestion is, that it should fetch a platform specific extensions list via api,
    in order to lists all available extensions for a platform. Currently there is no way of listing all available extensions, besides scraping the download folder. The intention here is to get a extension list with latest version download urls with only one request.

PECL web - housekeeping

It's pretty obvious that most of the stuff living there is XML and not even used by the PHP core devs themself. If new tools, like Pickle are not utilizing this, then simply drop all that. Why not clean the house and remove unused things.

For instance, things like

The REST based Extension Listings doesn't differ between Linux and Windows extensions. Example: the "printer" extension exists on Linux, but only in "snaps" on Windows and not in "releases".

I imagine a very lean and clean JSON based API, without the need to scrape things.
Also the number of requests to the service API might be lowered by downloading the JSON data to the installing client or bundling the JSON files inside the PHAR.

Most of this seems unrelated to Pickle, but i think pecl-web could be for pickle, what "packagist is for composer. I hope that some of the ideas presented here make sense and are worth further discussion. Looking forward hearing from you.

Regards, Jens

FR: Pass arbitrary configure arguments to pickle install

A couple of people have expressed to me a desire to do this with pecl install in the past - I will try and get a couple of concrete example use-cases.

The general idea being that any argument that is not consumed by pickle should be forwarded on to configure. Command line --with(out)?-.+ and --(en|dis)able-.+ arguments that conflict with those in the package XML should take precedence.

On windows the type of instllation should be recognized automatically

Currently, to install on windows from source, --source switch is required. When the switch is not given, defailt in the binary install fetching from windows.php.net/downloads/pecl. This should be implemented in a more automatic way. The content of the delivered package should be recognized and an appropriate installation type (binary or source) should be activated.

Support for config*.m4

Some extensions may need a separate config m4 file, f.e. config9.m4. These files should be parsed as well.

ps: anyone remembers why these extra files are needed?

Roadmap

Provide a roadmap / TODO list so community can help :)

Composer/pickle interop

A few things to keep in mind to get extension packages working well with composer after discussing with @pierrejoye:

  • set package type in composer.json to php-ext
  • set name prefix to ext-, e.g. ext-pdo where pdo MUST be the extension name returned in the extensions_loaded() list
  • rename pickle.json to composer.json so ext packages can be loaded as vcs repos in composer etc

(refs composer/composer#2898)

test failing on windows

> PHP path: c:\temp\php559tsx86\php.exe
> PHP version:
=> PHP 5.5.9 (cli) (built: Feb  5 2014 13:02:39) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
> Pickle\tests\units\Package...
[....________________________________________________________][0/4]
[S...________________________________________________________][1/4]
[SS..________________________________________________________][2/4]
[SSS.________________________________________________________][3/4]
[SSSS________________________________________________________][4/4]
=> Test duration: 0.02 second.
=> Memory usage: 2.00 Mb.
> Pickle\tests\units\Package\JSON\Parser...
[..__________________________________________________________][0/2]
[S.__________________________________________________________][1/2]
[SF__________________________________________________________][2/2]
=> Test duration: 0.01 second.
=> Memory usage: 0.25 Mb.
> Pickle\tests\units\Package\XML\Converter...
[......______________________________________________________][0/6]
[F.....______________________________________________________][1/6]
[FF....______________________________________________________][2/6]
[FFF...______________________________________________________][3/6]
[FFFF..______________________________________________________][4/6]
[FFFFF.______________________________________________________][5/6]
[FFFFFF______________________________________________________][6/6]
=> Test duration: 0.00 second.
=> Memory usage: 0.00 Mb.
> Pickle\tests\units\Package\XML\Parser...
[..__________________________________________________________][0/2]
[S.__________________________________________________________][1/2]
[SF__________________________________________________________][2/2]
=> Test duration: 0.01 second.
=> Memory usage: 0.50 Mb.
> Total tests duration: 0.04 second.
> Total tests memory usage: 2.75 Mb.
> Running duration: 1.06 seconds.
Failure (4 tests, 14/14 methods, 0 void method, 0 skipped method, 0 uncompleted method, 8 failures, 0 error, 0 exception)!
> There are 8 failures:
=> Pickle\tests\units\Package\JSON\Parser::testJsonDecodeError():
In file C:\php-sdk\repo\pickle\tests\units\Package\JSON\Parser.php on line 45, mageekguy\atoum\asserters\exception() failed: message 'Failed to read C:\php-sdk\repo\pickle\tests\fixtures\package\pickle.json' is not identical to 'Failed to read C:\php-sdk\repo\pickle/tests/fixtures/package/pickle.json'
=> Pickle\tests\units\Package\XML\Converter::testMaintainers():
In file C:\php-sdk\repo\pickle\tests\units\Package\XML\Converter.php on line 41, mageekguy\atoum\asserters\phpFunction() failed: Pickle\Package\XML\file_put_contents(string(53) "C:\php-sdk\repo\pickle/tests/fixtures/package\CREDITS", string(93) "Rasmus Lerdorf (rasmus) ([email protected]) (yes)
Pierre Joye (pierre) ([email protected]) (yes)
") is called 0 time instead of 1
[1] Pickle\Package\XML\file_put_contents(string(53) "C:\php-sdk\repo\pickle/tests/fixtures/package/CREDITS", string(91) "Rasmus Lerdorf (rasmus) ([email protected]) (yes)
Pierre Joye (pierre) ([email protected]) (yes)
", NULL, NULL)
=> Pickle\tests\units\Package\XML\Converter::testSummary():
In file C:\php-sdk\repo\pickle\tests\units\Package\XML\Converter.php on line 60, mageekguy\atoum\asserters\phpFunction() failed: Pickle\Package\XML\file_put_contents(string(52) "C:\php-sdk\repo\pickle/tests/fixtures/package\README", string(30) "53a46323483d4

53a4632348409") is called 0 time instead of 1
[1] Pickle\Package\XML\file_put_contents(string(52) "C:\php-sdk\repo\pickle/tests/fixtures/package/README", string(28) "53a46323483d4

53a4632348409", NULL, NULL)
=> Pickle\tests\units\Package\XML\Converter::testRelease():
In file C:\php-sdk\repo\pickle\tests\units\Package\XML\Converter.php on line 96, mageekguy\atoum\asserters\phpFunction() failed: Pickle\Package\XML\file_put_contents(string(60) "C:\php-sdk\repo\pickle/tests/fixtures/package\RELEASE-3.1.15", string(159) "Date:             2014-06-14
Package version:  3.1.15
Package state:    beta
API Version:      3.1.0
API state:        stable

Changelog:
This is a note") is called 0 time instead of 1
[1] Pickle\Package\XML\file_put_contents(string(60) "C:\php-sdk\repo\pickle/tests/fixtures/package/RELEASE-3.1.15", string(159) "Date:             2014-06-14
Package version:  3.1.15
Package state:    beta
API Version:      3.1.0
API state:        stable

Changelog:
This is a note", NULL, NULL)
=> Pickle\tests\units\Package\XML\Converter::testChangelog():
In file C:\php-sdk\repo\pickle\tests\units\Package\XML\Converter.php on line 144, mageekguy\atoum\asserters\phpFunction() failed: Pickle\Package\XML\file_put_contents(string(60) "C:\php-sdk\repo\pickle/tests/fixtures/package\RELEASE-3.1.14", string(159) "Date:             2013-01-02
Package version:  3.1.14
Package state:    beta
API Version:      3.1.0
API state:        stable

Changelog:
This is a note") is called 0 time instead of 1
[1] Pickle\Package\XML\file_put_contents(string(60) "C:\php-sdk\repo\pickle/tests/fixtures/package/RELEASE-3.1.14", string(159) "Date:             2013-01-02
Package version:  3.1.14
Package state:    beta
API Version:      3.1.0
API state:        stable

Changelog:
This is a note", NULL, NULL)
[2] Pickle\Package\XML\file_put_contents(string(59) "C:\php-sdk\repo\pickle/tests/fixtures/package/RELEASE-2.0.0", string(165) "Date:             2003-07-01
Package version:  2.0.0
Package state:    stable
API Version:      2.0.0
API state:        stable

Changelog:
This is an old note", NULL, NULL)
=> Pickle\tests\units\Package\XML\Converter::testLicense():
In file C:\php-sdk\repo\pickle\tests\units\Package\XML\Converter.php on line 174, mageekguy\atoum\asserters\phpFunction() failed: Pickle\Package\XML\file_put_contents(string(53) "C:\php-sdk\repo\pickle/tests/fixtures/package\LICENSE", string(60) "This package is under the following license(s):
PHP License") is called 0 time instead of 1
[1] Pickle\Package\XML\file_put_contents(string(53) "C:\php-sdk\repo\pickle/tests/fixtures/package/LICENSE", string(59) "This package is under the following license(s):
PHP License", NULL, NULL)
=> Pickle\tests\units\Package\XML\Converter::testGenerateJson():
In file C:\php-sdk\repo\pickle\tests\units\Package\XML\Converter.php on line 204, mageekguy\atoum\asserters\phpFunction() failed: Pickle\Package\XML\file_put_contents(string(57) "C:\php-sdk\repo\pickle/tests/fixtures/package\pickle.json", string(120) "{
    "name": "53a463239105d",
    "type": "extension",
    "extra": {
        "configure-options": [

        ]
    }
}") is called 0 time instead of 1
[1] Pickle\Package\XML\file_put_contents(string(57) "C:\php-sdk\repo\pickle/tests/fixtures/package/pickle.json", string(120) "{
    "name": "53a463239105d",
    "type": "extension",
    "extra": {
        "configure-options": [

        ]
    }
}", NULL, NULL)
=> Pickle\tests\units\Package\XML\Parser::testParseXmlError():
In file C:\php-sdk\repo\pickle\tests\units\Package\XML\Parser.php on line 65, mageekguy\atoum\asserters\exception() failed: message 'Failed to read C:\php-sdk\repo\pickle\tests\fixtures\package\package.xml' is not identical to 'Failed to read C:\php-sdk\repo\pickle/tests/fixtures/package/package.xml'

Marketing: 30 seconds for everyone

I made a post about pickle at Reddit and one of the commenter addressing an advanced PHP user who compiled extensions himself said:

Either way, doing that compiling took you 30 seconds. Great. If this pickle packages takes off, it will take everyone 30 seconds. Isn't that better?

So I suggest pickle adopts the 30 seconds for everyone mantra. Marketing can help with faster and wider adoption, which is what I hope for this great project.

Output in PackageXmlParser

Currently, the PackageXmlParser does some output with echo. If this output is intentional rather than being debugging stuff, I think it should rely on the OutputInterface of the console component instead. This would make thing easier when integrating Pickle with other tools as the output could be catched more easily if needed

phar creation script error

PHP Fatal error: Uncaught exception 'UnexpectedValueException' with message 'Iterator ArrayIterator returned a file that could not be opened "pickle.php"' in C:\php-sdk\repo\pickle\script\createphar.php:30
Stack trace:
#0 C:\php-sdk\repo\pickle\script\createphar.php(30): Phar->buildFromIterator(Object(ArrayIterator))
#1 {main}

thrown in C:\php-sdk\repo\pickle\script\createphar.php on line 30

Fatal error: Uncaught exception 'UnexpectedValueException' with message 'Iterator ArrayIterator returned a file that could not be opened "pickle.php"' in C:\php-sdk\repo\pickle\script\createphar.php:30
Stack trace:
#0 C:\php-sdk\repo\pickle\script\createphar.php(30): Phar->buildFromIterator(Object(ArrayIterator))
#1 {main}

thrown in C:\php-sdk\repo\pickle\script\createphar.php on line 30

Notice (from src/Package) when doing *info apc* and warning for (File not exists) on "info swoole"

C:\Windows\System32>php pickle.phar info apc
  - Installing apc (latest-stable)
    Downloading: 100%

+-----------------------------------+--------+
| Package name                      | APC    |
| Package version (current release) | 3.1.13 |
| Package status                    | beta   |
+-----------------------------------+--------+

Alternative PHP Cache

Configure options
PHP Notice:  Undefined offset: 2 in phar://C:/Windows/System32/pickle.phar/src/Package.php on line 105
PHP Stack trace:
PHP   1. {main}() C:\Windows\System32\pickle.phar:0
PHP   2. require() C:\Windows\System32\pickle.phar:10
PHP   3. Symfony\Component\Console\Application->run() phar://C:/Windows/System32/pickle.phar/bin/pickle:32
PHP   4. Symfony\Component\Console\Application->doRun() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
PHP   5. Symfony\Component\Console\Application->doRunCommand() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
PHP   6. Symfony\Component\Console\Command\Command->run() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:887
PHP   7. Pickle\Console\Command\InfoCommand->execute() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
PHP   8. Pickle\Console\Helper\PackageHelper->showOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Command/InfoCommand.php:68
PHP   9. Pickle\Package->getConfigureOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Helper/PackageHelper.php:63
PHP  10. Pickle\Package->fetchArgWindows() phar://C:/Windows/System32/pickle.phar/src/Package.php:65

Notice: Undefined offset: 2 in phar://C:/Windows/System32/pickle.phar/src/Package.php on line 105

Call Stack:
    0.0000     251072   1. {main}() C:\Windows\System32\pickle.phar:0
    0.0000     251688   2. require('phar://C:/Windows/System32/pickle.phar/bin/pickle') C:\Windows\System32\pickle.phar:10
    0.0312    1329264   3. Symfony\Component\Console\Application->run() phar://C:/Windows/System32/pickle.phar/bin/pickle:32
    0.0312    1558560   4. Symfony\Component\Console\Application->doRun() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
    0.0312    1558904   5. Symfony\Component\Console\Application->doRunCommand() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
    0.0312    1559136   6. Symfony\Component\Console\Command\Command->run() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:887
    0.0312    1560984   7. Pickle\Console\Command\InfoCommand->execute() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
    5.7096    2585304   8. Pickle\Console\Helper\PackageHelper->showOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Command/InfoCommand.php:68
    5.7096    2586128   9. Pickle\Package->getConfigureOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Helper/PackageHelper.php:63
    5.7096    2588488  10. Pickle\Package->fetchArgWindows() phar://C:/Windows/System32/pickle.phar/src/Package.php:65

PHP Notice:  Undefined offset: 2 in phar://C:/Windows/System32/pickle.phar/src/Package.php on line 105
PHP Stack trace:
PHP   1. {main}() C:\Windows\System32\pickle.phar:0
PHP   2. require() C:\Windows\System32\pickle.phar:10
PHP   3. Symfony\Component\Console\Application->run() phar://C:/Windows/System32/pickle.phar/bin/pickle:32
PHP   4. Symfony\Component\Console\Application->doRun() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
PHP   5. Symfony\Component\Console\Application->doRunCommand() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
PHP   6. Symfony\Component\Console\Command\Command->run() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:887
PHP   7. Pickle\Console\Command\InfoCommand->execute() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
PHP   8. Pickle\Console\Helper\PackageHelper->showOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Command/InfoCommand.php:68
PHP   9. Pickle\Package->getConfigureOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Helper/PackageHelper.php:63
PHP  10. Pickle\Package->fetchArgWindows() phar://C:/Windows/System32/pickle.phar/src/Package.php:65

Notice: Undefined offset: 2 in phar://C:/Windows/System32/pickle.phar/src/Package.php on line 105

Call Stack:
    0.0000     251072   1. {main}() C:\Windows\System32\pickle.phar:0
    0.0000     251688   2. require('phar://C:/Windows/System32/pickle.phar/bin/pickle') C:\Windows\System32\pickle.phar:10
    0.0312    1329264   3. Symfony\Component\Console\Application->run() phar://C:/Windows/System32/pickle.phar/bin/pickle:32
    0.0312    1558560   4. Symfony\Component\Console\Application->doRun() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
    0.0312    1558904   5. Symfony\Component\Console\Application->doRunCommand() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
    0.0312    1559136   6. Symfony\Component\Console\Command\Command->run() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:887
    0.0312    1560984   7. Pickle\Console\Command\InfoCommand->execute() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
    5.7096    2585304   8. Pickle\Console\Helper\PackageHelper->showOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Command/InfoCommand.php:68
    5.7096    2586128   9. Pickle\Package->getConfigureOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Helper/PackageHelper.php:63
    5.7096    2588488  10. Pickle\Package->fetchArgWindows() phar://C:/Windows/System32/pickle.phar/src/Package.php:65

PHP Notice:  Undefined offset: 2 in phar://C:/Windows/System32/pickle.phar/src/Package.php on line 105
PHP Stack trace:
PHP   1. {main}() C:\Windows\System32\pickle.phar:0
PHP   2. require() C:\Windows\System32\pickle.phar:10
PHP   3. Symfony\Component\Console\Application->run() phar://C:/Windows/System32/pickle.phar/bin/pickle:32
PHP   4. Symfony\Component\Console\Application->doRun() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
PHP   5. Symfony\Component\Console\Application->doRunCommand() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
PHP   6. Symfony\Component\Console\Command\Command->run() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:887
PHP   7. Pickle\Console\Command\InfoCommand->execute() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
PHP   8. Pickle\Console\Helper\PackageHelper->showOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Command/InfoCommand.php:68
PHP   9. Pickle\Package->getConfigureOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Helper/PackageHelper.php:63
PHP  10. Pickle\Package->fetchArgWindows() phar://C:/Windows/System32/pickle.phar/src/Package.php:65

Notice: Undefined offset: 2 in phar://C:/Windows/System32/pickle.phar/src/Package.php on line 105

Call Stack:
    0.0000     251072   1. {main}() C:\Windows\System32\pickle.phar:0
    0.0000     251688   2. require('phar://C:/Windows/System32/pickle.phar/bin/pickle') C:\Windows\System32\pickle.phar:10
    0.0312    1329264   3. Symfony\Component\Console\Application->run() phar://C:/Windows/System32/pickle.phar/bin/pickle:32
    0.0312    1558560   4. Symfony\Component\Console\Application->doRun() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
    0.0312    1558904   5. Symfony\Component\Console\Application->doRunCommand() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
    0.0312    1559136   6. Symfony\Component\Console\Command\Command->run() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:887
    0.0312    1560984   7. Pickle\Console\Command\InfoCommand->execute() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
    5.7096    2585304   8. Pickle\Console\Helper\PackageHelper->showOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Command/InfoCommand.php:68
    5.7096    2586128   9. Pickle\Package->getConfigureOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Helper/PackageHelper.php:63
    5.7096    2588488  10. Pickle\Package->fetchArgWindows() phar://C:/Windows/System32/pickle.phar/src/Package.php:65

PHP Notice:  Undefined offset: 2 in phar://C:/Windows/System32/pickle.phar/src/Package.php on line 105
PHP Stack trace:
PHP   1. {main}() C:\Windows\System32\pickle.phar:0
PHP   2. require() C:\Windows\System32\pickle.phar:10
PHP   3. Symfony\Component\Console\Application->run() phar://C:/Windows/System32/pickle.phar/bin/pickle:32
PHP   4. Symfony\Component\Console\Application->doRun() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
PHP   5. Symfony\Component\Console\Application->doRunCommand() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
PHP   6. Symfony\Component\Console\Command\Command->run() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:887
PHP   7. Pickle\Console\Command\InfoCommand->execute() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
PHP   8. Pickle\Console\Helper\PackageHelper->showOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Command/InfoCommand.php:68
PHP   9. Pickle\Package->getConfigureOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Helper/PackageHelper.php:63
PHP  10. Pickle\Package->fetchArgWindows() phar://C:/Windows/System32/pickle.phar/src/Package.php:65

Notice: Undefined offset: 2 in phar://C:/Windows/System32/pickle.phar/src/Package.php on line 105

Call Stack:
    0.0000     251072   1. {main}() C:\Windows\System32\pickle.phar:0
    0.0000     251688   2. require('phar://C:/Windows/System32/pickle.phar/bin/pickle') C:\Windows\System32\pickle.phar:10
    0.0312    1329264   3. Symfony\Component\Console\Application->run() phar://C:/Windows/System32/pickle.phar/bin/pickle:32
    0.0312    1558560   4. Symfony\Component\Console\Application->doRun() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
    0.0312    1558904   5. Symfony\Component\Console\Application->doRunCommand() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
    0.0312    1559136   6. Symfony\Component\Console\Command\Command->run() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:887
    0.0312    1560984   7. Pickle\Console\Command\InfoCommand->execute() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
    5.7096    2585304   8. Pickle\Console\Helper\PackageHelper->showOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Command/InfoCommand.php:68
    5.7096    2586128   9. Pickle\Package->getConfigureOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Helper/PackageHelper.php:63
    5.7096    2588488  10. Pickle\Package->fetchArgWindows() phar://C:/Windows/System32/pickle.phar/src/Package.php:65

+--------+------------------------------------------+---------+
| Type   | Description                              | Default |
+--------+------------------------------------------+---------+
| enable | Whether to enable APC support            | yes     |
| enable | Whether to enable APC debugging          | yes     |
    | yes     |her to enable cache request file
|        | info                                     |         |
| enable | Whether to use spin locks (experimental  | no      |
     | no      |er to enable memory protection
|        | (experimental                            |         |
     | no      |er to use SRWLOCK locks native
|        | (win7/2008 only                          |         |
 | no      |hether to use SRWLOCK locks (loaded at
|        | runtime                                  |         |
+--------+------------------------------------------+---------+

C:\Windows\System32>php pickle.phar info swoole
  - Installing swoole (latest-stable)
    Downloading: 100%

+-----------------------------------+--------+
| Package name                      | swoole |
| Package version (current release) | 1.7.3  |
| Package status                    | stable |
+-----------------------------------+--------+

PHP's asynchronous concurrent distributed networking framework

Configure options
PHP Warning:  file_get_contents(C:\Users\admin\AppData\Local\Temp\swoole\swoole-1.7.3/config.w32): failed to open stream: No such file or directory in phar://C:/Windows/System32/pickle.phar/src/Package.php on line 63
PHP Stack trace:
PHP   1. {main}() C:\Windows\System32\pickle.phar:0
PHP   2. require() C:\Windows\System32\pickle.phar:10
PHP   3. Symfony\Component\Console\Application->run() phar://C:/Windows/System32/pickle.phar/bin/pickle:32
PHP   4. Symfony\Component\Console\Application->doRun() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
PHP   5. Symfony\Component\Console\Application->doRunCommand() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
PHP   6. Symfony\Component\Console\Command\Command->run() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:887
PHP   7. Pickle\Console\Command\InfoCommand->execute() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
PHP   8. Pickle\Console\Helper\PackageHelper->showOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Command/InfoCommand.php:68
PHP   9. Pickle\Package->getConfigureOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Helper/PackageHelper.php:63
PHP  10. file_get_contents() phar://C:/Windows/System32/pickle.phar/src/Package.php:63

Warning: file_get_contents(C:\Users\admin\AppData\Local\Temp\swoole\swoole-1.7.3/config.w32): failed to open stream: No such file or directory in phar://C:/Windows/System32/pickle.phar/src/Package.php on line 63

Call Stack:
    0.0000     251072   1. {main}() C:\Windows\System32\pickle.phar:0
    0.0000     251688   2. require('phar://C:/Windows/System32/pickle.phar/bin/pickle') C:\Windows\System32\pickle.phar:10
    0.0312    1329264   3. Symfony\Component\Console\Application->run() phar://C:/Windows/System32/pickle.phar/bin/pickle:32
    0.0312    1558560   4. Symfony\Component\Console\Application->doRun() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
    0.0312    1558904   5. Symfony\Component\Console\Application->doRunCommand() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
    0.0312    1559136   6. Symfony\Component\Console\Command\Command->run() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:887
    0.0312    1560984   7. Pickle\Console\Command\InfoCommand->execute() phar://C:/Windows/System32/pickle.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
    7.0668    2575832   8. Pickle\Console\Helper\PackageHelper->showOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Command/InfoCommand.php:68
    7.0668    2576656   9. Pickle\Package->getConfigureOptions() phar://C:/Windows/System32/pickle.phar/src/Console/Helper/PackageHelper.php:63
    7.0668    2577032  10. file_get_contents() phar://C:/Windows/System32/pickle.phar/src/Package.php:63

+------+-------------+---------+
| Type | Description | Default |
+------+-------------+---------+

C:\Windows\System32>

integration with composer to run upon missing requirement e.g.

I was wondering if there is a planned integration with composer to run pickle to install missing extension requirements. For instance if in Gush composer.json that will use Pimple 3.0.0 one wants to install the C extension for Pimple, I was wondering if pickle could be immediately required to install such an extension automatically?

Extensions using same dependencies fail to copy DLLs

As example - --binary install cairo, after that try to install rsvg. There's an exception:

[Exception] Cannot copy DLL <C:\Users\hako\AppData\Local\Temp\pickle-RSVG\cairo.dll> to <>

The same would happen also, when trying to install the same extension twice.

update logo

Update the logo to have the cool new logo we use on pickleweb

add extension version parsing

Fetch the extension version either from:

  • header
  • RELEASE file
  • package.xml

in this order.

RELEASE will most likely contains 1.3.x or 1.3.4-dev. Implementation has to unify all versions using the header on release/install, before the build.

can be done in 0.2.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.