Magento-composer-installer - Composer installer for Magento modules

Overview

Build Status Windows Build status Scrutinizer Code Quality Code Coverage Bountysource

!!! support the maintainer of this project via Patreon: https://www.patreon.com/Flyingmana

Become a Patreon

Magento Composer Installer

The purpose of this project is to enable composer to install Magento modules, and automatically integrate them into a Magento installation and add Composer's vendor autoloader ability to Magento's so that Composer-compatible 3rd party tools can be used.

If you want to install the Magento Core, you should try AydinHassan/magento-core-composer-installer as an additional plugin.

We strongly recommend you to also read the general composer documentation at getcomposer.org

Also you should see:

Magento 2

Congratulation to be working with Magento 2. Don't try to use it together with this project. Your princess is in another Castle

Project Details

This project only covers the custom installer for composer. If you have problems with outdated versions, need to install magento connect modules or similar, you need to look for packages.firegento.com which you probably should add as composer repository (globally)

composer config -g repositories.firegento composer https://packages.firegento.com

supported PHP Versions

We don't officially support PHP versions which are End of Life means which they don't get security patches anymore. Even if the install requirement still allows them.
This will change, as soon as someone is willing to pay for supporting them.

support contacts

If you have problems please have patience, as normal support is done during free time.
If you are willing to pay to get your problem fixed, communicate this from the start to get faster responses.

If you need consulting, support, training or help regarding Magento and Composer, you have the chance to hire one of the following people/companies.

other support contacts

  • irc: freenode the channels #magento-composer #magento-reddit and for german speaking people #magento-de
  • twitter: @firegento

changelog

See CHANGELOG.md.

=======

Known issues

need to redeploy packages

earlier we suggested the use of the command integrator package, that is not needed anymore. composer.phar run-script post-install-cmd -vvv -- --redeploy
This does remove all deployed files and redeploys every module

using non default autoloading

we handle this topic in our FAQ.

Timeouts and slow downloading.

Mostly caused by outages of Github, Repositories or the Internet. This is a common problem with having all packages remote.

For all of this issues you can make use of the commercial Toran Proxy. It also allows hosting of private packages and speeds up the whole downloading process.

Another alternative is to look into Satis, bare git mirrors and repository aliasing.

Another way to speedup downloads over ssh (also interesting for satis users) is to improve your ssh configs. At least for newer versions of openSSH you can add the following to your .ssh/config to reuse previous connections.

Host * 
    ControlPath ~/.ssh/controlmasters/%r@%h:%p
    ControlMaster auto
    ControlPersist 10m

also you need to create the controlmasters directory:

mkdir ~/.ssh/controlmasters
chmod go-xr ~/.ssh/controlmasters

further information can be found on wikibooks

Usage

Update the Installer

as this is a composer plugin, you should only use these two commands to update the installer

composer require --no-update  magento-hackathon/magento-composer-installer="3.2.*"
composer update --no-plugins --no-scripts magento-hackathon/magento-composer-installer

the second command needs maybe a --with-dependencies
Depending on your workflow with composer, you may want to use more explicit versions

Install a module in your project

make sure to use the public Magento module repository as composer repository:

composer config -g repositories.firegento composer https://packages.firegento.com

configure your magento root dir, the directory where your magento resides:
composer config extra.magento-root-dir "htdocs/"

an example how your project composer.json could look like:

{
    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.firegento.com"
        }
    ],
    "extra":{
        "magento-root-dir": "htdocs/"
    }
}

Auto add files to .gitignore

If you want to have the deployed files automatically added to your .gitignore file, then you can just set the auto-append-gitignore key to true:

{
    "extra":{
        "magento-root-dir": "htdocs/",
        "auto-append-gitignore": true
    }
}

The .gitignore file will be loaded from the current directory, and if it does not exist, it will be created. Every set of module files, will have a comment above them describing the module name for clarity.

Multiple deploys will not add additional lines to your .gitignore, they will only ever be added once.

Adding Composer's autoloader to Magento

Documentation available here.

Overwriting a production setting (DevMode)

{
    "extra":{
        "magento-deploystrategy": "copy",
        "magento-deploystrategy-dev": "symlink"
    }
}

Example in devmode doc.

Include your project in deployment

When the magento-composer-installer is run, it only looks for magento-modules among your project's dependencies. Thus, if your project is a magento-module and you want to test it, you will need a second composer.json for deployment, where your project is configured as a required package.

If you wish to deploy your project's files (a.k.a. root package), too, you need to setup your composer.json as follows:

{
    "type": "magento-module",
    ...
    "extra": {
        "magento-root-dir": "htdocs/",
        "include-root-package": true
    }
}

Testing

First clone the magento-composer-installer, then install the dev-stuff (installed by default):

./bin/composer.phar install

then run vendor/bin/phpunit in project-root directory.

Note: Windows users please run phpunit with Administrator permissions.

Further Information

External Links

Core Contributors

  • Daniel Fahlke aka Flyingmana (Maintainer)
  • Jörg Weller
  • Karl Spies
  • Tobias Vogt
  • David Fuhr
  • Amir Tchavoshinia
  • Vinai Kopp (Maintainer)

Thank You

There are a few companies we want to thank for supporting this project in one way or another.

#####digital.manufaktur GmbH

Teached me (Flyingmana) most I know about Magento and paid my participation for the hackathon were the installer got created.

#####melovely

Support me (Flyingmana) as my current employer very much in my work on everything composer related.

Comments
  • 3.0? Broke my site. Why are you changing Mage.php?

    3.0? Broke my site. Why are you changing Mage.php?

    So, like a fool, I had "*" in my composer.json file for a module. Today when I went to push some changes out my site broke. The installer failed.

    Then when I went and fixed the composer.json to specify the exact version I wanted (2.1.1) I found my site still didn't work.

    The issue was this code rewriting (incorrectly) the Mage.php file, throwing in all these bootstrap files that weren't working.

    PHP Fatal error: Class 'MagentoHackathon\Composer\Magento\ModmanParser' not found in /var/www/vendor/magento-hackathon/magento-composer-installer/src/MagentoHackathon/Composer/Magento/Installer/MagentoInstallerAbstract.php on li ne 543

    Fatal error: Class 'MagentoHackathon\Composer\Magento\ModmanParser' not found in /var/www/vendor/magento-hackathon/magento-composer-installer/src/Mag entoHackathon/Composer/Magento/Installer/MagentoInstallerAbstract.php on line 543

    The error I was getting when trying to run the site is: PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in /var/www/app/Mage.php on line 2

    The encoding for those files looked wrong.

    So what is going on here? Why did this suddenly change today? I did a few deploys this morning without any issues, then suddenly you're changing core Magento files?

    opened by tim-reynolds 25
  • [Exception] Package

    [Exception] Package "vendor/name" is already installed

    I have a composer json with 3 packages in a private repository. 1 of those depends on another of those. When I install the packages, I get an error that a package is already installed, so it doesn't continue and the packages aren't installed. Removing the Exception from https://github.com/Cotya/magento-composer-installer/blob/1a15c8a83c61c487580ef63da820f4a90030e095/src/MagentoHackathon/Composer/Magento/Repository/InstalledPackageFileSystemRepository.php#L132 does continue the install..

    Below is my composer.json. Do I need to run it first with just magento-hackathon or is there anything other I need to keep in mind?

    "require": {
            "php": ">=5.4.0",
            "magento-hackathon/magento-composer-installer": "3.x",
            "myvendor/package1-base": "dev-master",
            "myvendor/package1": "dev-master",
            "myvendor/package2": "dev-master"
        },
        "repositories": [
            {
                "type": "composer",
                "url": "http://packages.firegento.com"
            },
            {
                "type": "vcs",
                "url": "[email protected]:myvendor/package1-base.git"
            },
            {
                "type": "vcs",
                "url": "[email protected]:myvendor/package1.git"
            },
            {
                "type": "vcs",
                "url": "[email protected]:myvendor/package2.git"
            }
        ],
        "extra":{
            "magento-root-dir": "htdocs/",
            "auto-append-gitignore": true
        }
    }
    
    opened by barryvdh 17
  • magento-composer-installer + Error: Cannot find module 'gulp'

    magento-composer-installer + Error: Cannot find module 'gulp'

    Good day.

    I`m develope theme as module for Magento:

    .
    ├── README.md
    ├── app
    ├── composer.json
    ├── gulpconfig.js
    ├── gulpfile.js
    ├── modman
    ├── package.json
    └── skin
    

    So my composer.js file contain require:

        "require": {
            "twbs/bootstrap-sass": "*",
            "magento-hackathon/magento-composer-installer": "3.0.2"
        },
    

    When i`m try use my composer module i have problem with gulp. MCI (Magento Composer Installer) work good and i see how it create symlinks for all my files:

    drwxr-x---@ 34 aleksej  staff   1.1K Jul  6 13:23 .
    drwxr-xr-x   9 aleksej  staff   306B Jul  3 19:08 ..
    
    lrwxr-xr-x   1 aleksej  staff    49B Jul  3 19:08 gulpconfig.js -> ../vendor/mavenecommerce/mbootstrap/gulpconfig.js
    lrwxr-xr-x   1 aleksej  staff    47B Jul  3 19:08 gulpfile.js -> ../vendor/mavenecommerce/mbootstrap/gulpfile.js
    drwxr-xr-x  17 aleksej  staff   578B Jul  3 19:09 node_modules
    lrwxr-xr-x   1 aleksej  staff    48B Jul  3 19:08 package.json -> ../vendor/mavenecommerce/mbootstrap/package.json
    

    But when i try run gulp:

    $ gulp
    module.js:338
        throw err;
              ^
    Error: Cannot find module 'gulp'
        at Function.Module._resolveFilename (module.js:336:15)
        at Function.Module._load (module.js:278:25)
        at Module.require (module.js:365:17)
        at require (module.js:384:17)
        at Object.<anonymous> (/Volumes/LaCie/http/htdocs/mbootstrap.composer/vendor/mavenecommerce/mbootstrap/gulpfile.js:13:12)
        at Module._compile (module.js:460:26)
        at Object.Module._extensions..js (module.js:478:10)
        at Module.load (module.js:355:32)
        at Function.Module._load (module.js:310:12)
        at Module.require (module.js:365:17)
    

    But it installed as local and global:

    $ npm list --depth=0
    [email protected] /Volumes/LaCie/http/htdocs/mbootstrap.composer/magento
    ├── [email protected]
    ├── [email protected]
    ├── ...
    └── [email protected]
    
    $ cd && gulp -v
    [14:01:39] CLI version 3.8.11
    

    So the probles with gulp because it doesn`t see himself via symlink by MCI. But if use modman only instead (with out composer) — everething is fine.

    May be you can provide some idea to help to fix it...

    Thanks

    opened by klierik 15
  • Composer does not install the magento core package

    Composer does not install the magento core package

    In my composer.json file i have listed the magento/core package as a dependency for my project. I use version 2.1.1 of the magento-composer-installer. Last week i tried to do a clean deploy of the project using composer. The magento 1.9 package is downloaded to the vendor folder, but is not "deployed" into the magento web folder. I know for sure that this has worked in the past. What is de correct procedure on this?

    v2.x 
    opened by timmtim 13
  • 2.1.3 infinite loop on install

    2.1.3 infinite loop on install

    The loop is definitely infinite, I boosted the max nesting level to 2000 and then we started getting out of memory errors like: PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 523800 bytes)

         - Installing magento-hackathon/magento-composer-installer (2.1.3)
           Downloading: Connecting...    Downloading: 100%
       PHP Fatal error:  Maximum function nesting level of '256' reached, aborting! in phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Package/Package.php on line 155
       PHP Stack trace:
       PHP   1. {main}() /home/travis/.phpenv/versions/5.3.29/bin/composer:0
       PHP   2. require() /home/travis/.phpenv/versions/5.3.29/bin/composer:25
       PHP   3. Composer\Console\Application->run() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/bin/composer:43
       PHP   4. Symfony\Component\Console\Application->run() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Console/Application.php:99
       PHP   5. Composer\Console\Application->doRun() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/vendor/symfony/console/Application.php:123
       PHP   6. Symfony\Component\Console\Application->doRun() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Console/Application.php:166
       PHP   7. Symfony\Component\Console\Application->doRunCommand() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/vendor/symfony/console/Application.php:192
       PHP   8. Symfony\Component\Console\Command\Command->run() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/vendor/symfony/console/Application.php:844
       PHP   9. Composer\Command\InstallCommand->execute() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/vendor/symfony/console/Command/Command.php:259
       PHP  10. Composer\Installer->run() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Command/InstallCommand.php:134
       PHP  11. Composer\Installer->doInstall() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer.php:232
       PHP  12. Composer\Installer\InstallationManager->execute() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer.php:600
       PHP  13. Composer\Installer\InstallationManager->install() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer/InstallationManager.php:139
       PHP  14. MagentoHackathon\Composer\Magento\Installer\CoreInstaller->install() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer/InstallationManager.php:152
       PHP  15. MagentoHackathon\Composer\Magento\Installer\MagentoInstallerAbstract->install() /home/travis/build/Convenient/project/vendor/magento-hackathon/magento-composer-installer/src/MagentoHackathon/Composer/Magento/Installer/CoreInstaller.php:110
       PHP  16. Composer\Installer\LibraryInstaller->install() /home/travis/build/Convenient/project/vendor/magento-hackathon/magento-composer-installer/src/MagentoHackathon/Composer/Magento/Installer/MagentoInstallerAbstract.php:359
       PHP  17. MagentoHackathon\Composer\Magento\Installer\CoreInstaller->getInstallPath() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer/LibraryInstaller.php:84
       PHP  18. Composer\Installer\LibraryInstaller->getPackageBasePath() /home/travis/build/Convenient/project/vendor/magento-hackathon/magento-composer-installer/src/MagentoHackathon/Composer/Magento/Installer/CoreInstaller.php:156
       PHP  19. MagentoHackathon\Composer\Magento\Installer\CoreInstaller->getInstallPath() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer/LibraryInstaller.php:164
       PHP  20. Composer\Installer\LibraryInstaller->getPackageBasePath() /home/travis/build/Convenient/project/vendor/magento-hackathon/magento-composer-installer/src/MagentoHackathon/Composer/Magento/Installer/CoreInstaller.php:156
       PHP  21. MagentoHackathon\Composer\Magento\Installer\CoreInstaller->getInstallPath() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer/LibraryInstaller.php:164
       PHP  22. Composer\Installer\LibraryInstaller->getPackageBasePath() /home/travis/build/Convenient/project/vendor/magento-hackathon/magento-composer-installer/src/MagentoHackathon/Composer/Magento/Installer/CoreInstaller.php:156
       PHP  23. MagentoHackathon\Composer\Magento\Installer\CoreInstaller->getInstallPath() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer/LibraryInstaller.php:164
       PHP  24. Composer\Installer\LibraryInstaller->getPackageBasePath() /home/travis/build/Convenient/project/vendor/magento-hackathon/magento-composer-installer/src/MagentoHackathon/Composer/Magento/Installer/CoreInstaller.php:156
       PHP  25. MagentoHackathon\Composer\Magento\Installer\CoreInstaller->getInstallPath() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer/LibraryInstaller.php:164
       PHP  26. Composer\Installer\LibraryInstaller->getPackageBasePath() /home/travis/build/Convenient/project/vendor/magento-hackathon/magento-composer-installer/src/MagentoHackathon/Composer/Magento/Installer/CoreInstaller.php:156
       PHP  27. MagentoHackathon\Composer\Magento\Installer\CoreInstaller->getInstallPath() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer/LibraryInstaller.php:164
       PHP  28. Composer\Ianstaller\LibraryInstaller->getPackageBasePath() /home/travis/build/Convenient/project/vendor/magento-hackathon/magento-composer-installer/src/MagentoHackathon/Composer/Magento/Installer/CoreInstaller.php:156
       PHP  29. MagentoHackathon\Composer\Magento\Installer\CoreInstaller->getInstallPath() phar:///home/travis/.phpenv/versions/5.3.29/bin/composer/src/Composer/Installer/LibraryInstaller.php:164
       PHP  30. Composer\Installer\LibraryInstaller->getPackageBasePath() /home/travis/build/Convenient/project/vendor/magento-hackathon/magento-composer-installer/src/MagentoHackathon/Composer/Magento/Installer/CoreInstaller.php:156
    
    
    opened by convenient 11
  • Removing symlinks

    Removing symlinks

    Is it possible to remove the symlinks upon uninstalling a module?

    I basically have this setup: https://medium.com/@barryvdh/using-local-repositories-to-easily-install-private-magento-extensions-with-composer-7eb966dec23e

    Extensions are symlinked to the vendor dir from a local path. Upon uninstall, the symlink is removed from the vendor dir, but symlinks in the magento folder, are pointing directly to the local path, thus not removed.

    Any way to remove the dead links upon uninstall? Or make sure that the symlinks point to the vendor dir, instead of actual path?

    opened by barryvdh 11
  • WIP - Get tests running on Windows

    WIP - Get tests running on Windows

    This is a WIP - Do not merge yet.

    Most of the issues with windows are to do with paths using different slashes everywhere. There are some nasty replaces everywhere to get this working. Once the tests are passing, we should re-visit this.

    Some bugs with the fullstack tests include:

    • Un-escaped paths in composer.json
    • Artefacts not generating as the setup script was not locating composer properly
    • Wrong paths

    This is still not finished yet, however, the unit-tests are passing in Windows now, altough one test seems to have broken on Linux, I'll take a look at this later.

    Some of the full-stack tests are passing now. However I've got an issue with paths being too-long when composer extracts artefacts so I need to figure a way to make paths shorter.

    I need https://github.com/Cotya/composer-test-framework/pull/1 & https://github.com/Cotya/composer-test-framework/pull/2 merging also, as there are some bugs with Windows there.

    opened by AydinHassan 10
  • Initial test for #7

    Initial test for #7

    Ping @barryvdh, @bencorlett

    I tried to write a test to outline the issue in #7, however I cannot reproduce it.

    Any chance you guys can hint at what you are doing differently?

    I created 3 empty packages, Package A requires Package B & Package C. The project requires all 3 packages explicitly.

    opened by AydinHassan 10
  • Mage.php bootstrap split feature will not work with certain versions of Magento EE

    Mage.php bootstrap split feature will not work with certain versions of Magento EE

    Yes, a certain version of Mage EE has app/bootstrap.php already and it'll get ~~overwritten~~ skipped here: https://github.com/Cotya/magento-composer-installer/blob/09dc795e3e3e3bfa36a9619787ddc03deaefc445/src/MagentoHackathon/Composer/Magento/Patcher/Bootstrap.php#L106.

    No time for a PR right now. But in case I'll find the time, do you guys have a naming preference?

    This is why it's dangerous to create additional files instead of just patching Mage.php (which it's in itself dangerous enough).

    opened by nevvermind 10
  • Fixes for #7 and #33

    Fixes for #7 and #33

    Add hasReference to check if an installed package has the right sourceReference. Modify add function to also update installed packages, remove exception, it is only called if a package is added or updated. Update InstalledPackage and InstalledPackageDumper to save and load new sourceReference variable. Check and send source reference for installed/updated packages. Fix tests for above changes.

    Fixes issues #7 and #33.

    opened by unknownnf 9
  • Remove support for PHP 5.4

    Remove support for PHP 5.4

    composer.json did wrongfully show PHP 5.4 as a supported version.

    But PHP 5.4 is unsupported.

    This is an easy fix by raising the version constraint from 5.4 to 5.5.

    See https://github.com/Cotya/magento-composer-installer/issues/43#issuecomment-193961823

    Ref: https://github.com/magento-hackathon/magento-composer-installer/issues/195 , #43

    opened by ktomk 8
  • fix deploy strategy change from symlink to copy

    fix deploy strategy change from symlink to copy

    This fix https://github.com/Cotya/magento-composer-installer/issues/23

    How to reproduce?

    1. Create composer.json { "require": { "aydin-hassan/magento-core-composer-installer": "2.1.0", "openmage/magento-lts": "v19.4.15", "magento-hackathon/magento-composer-installer": "4.0.2", "aoepeople/aoe_scheduler": "1.5.2", "ext-zlib": "*" }, "extra": { "magento-core-package-type": "magento-source", "magento-root-dir": "htdocs", "magento-force": true, "magento-deploystrategy": "symlink", "magento-deploystrategy-dev": "symlink" }, "config": { "allow-plugins": { "aydin-hassan/magento-core-composer-installer": true, "magento-hackathon/magento-composer-installer": true } } }
    2. run composer install
    3. change magento-deploystrategy to copy (composer.json)
    4. remove vendor dir
    5. run composer install
    opened by AGelzer 0
  • Bump composer/composer from 2.1.9 to 2.2.12

    Bump composer/composer from 2.1.9 to 2.2.12

    Bumps composer/composer from 2.1.9 to 2.2.12.

    Release notes

    Sourced from composer/composer's releases.

    2.2.12

    • Security: Fixed command injection vulnerability in HgDriver/GitDriver (GHSA-x7cr-6qr6-2hh6 / CVE-2022-24828)
    • Fixed curl downloader not retrying when a DNS resolution failure occurs (#10716)
    • Fixed composer.lock file still being used/read when the lock config option is disabled (#10726)
    • Fixed validate command checking the lock file even if the lock option is disabled (#10723)

    2.2.11

    • Added missing config.bitbucket-oauth in composer-schema.json
    • Added --2.2 flag to self-update to pin the Composer version to the 2.2 LTS range (#10682)
    • Updated semver, jsonlint deps for minor fixes
    • Fixed generation of autoload crashing if a package has a broken path (#10688)
    • Removed dev-master=>dev-main alias from #10372 as it does not work when reloading from lock file and extracting dev deps (#10651)

    2.2.10

    • Fixed Bitbucket authorization detection due to API changes (#10657)
    • Fixed validate command warning about dist/source keys if defined (#10655)
    • Fixed deletion/handling of corrupted 0-bytes zip archives (#10666)

    2.2.9

    • Fixed regression with plugins that modify install path of packages, see docs if you are authoring such a plugin (#10621)

    2.2.8

    • Fixed files autoloading sort order to be fully deterministic (#10617)
    • Fixed pool optimization pass edge cases (#10579)
    • Fixed require command failing when self.version is used as constraint (#10593)
    • Fixed --no-ansi / undecorated output still showing color in repo warnings (#10601)
    • Performance improvement in pool optimization step (composer/semver#131)

    2.2.7

    • Allow installation together with composer/xdebug-handler ^3 (#10528)
    • Fixed support for packages with no licenses in licenses command output (#10537)
    • Fixed handling of allow-plugins: false which kept warning (#10530)
    • Fixed enum parsing in classmap generation when the enum keyword is not lowercased (#10521)
    • Fixed author parsing in init command requiring an email whereas the schema allows a name only (#10538)
    • Fixed issues in require command when requiring packages which do not exist (but are provided by something else you require) (#10541)
    • Performance improvement in pool optimization step (#10546)

    2.2.6

    • BC Break: due to an oversight, the COMPOSER_BIN_DIR env var for binaries added in Composer 2.2.2 had to be renamed to COMPOSER_RUNTIME_BIN_DIR (#10512)
    • Fixed enum parsing in classmap generation with syntax like enum foo:string without space after : (#10498)
    • Fixed package search not urlencoding the input (#10500)
    • Fixed reinstall command not firing pre-install-cmd/post-install-cmd events (#10514)
    • Fixed edge case in path repositories where a symlink: true option would be ignored on old Windows and old PHP combos (#10482)
    • Fixed test suite compatibility with latest symfony/console releases (#10499)
    • Fixed some error reporting edge cases (#10484, #10451, #10493)

    2.2.5

    • Disabled composer/package-versions-deprecated by default as it can function using Composer\InstalledVersions at runtime (#10458)
    • Fixed artifact repositories crashing if a phar file was present in the directory (#10406)
    • Fixed binary proxy issue on PHP <8 when fseek is used on the proxied binary path (#10468)

    ... (truncated)

    Changelog

    Sourced from composer/composer's changelog.

    [2.2.12] 2022-04-13

    • Security: Fixed command injection vulnerability in HgDriver/GitDriver (GHSA-x7cr-6qr6-2hh6 / CVE-2022-24828)
    • Fixed curl downloader not retrying when a DNS resolution failure occurs (#10716)
    • Fixed composer.lock file still being used/read when the lock config option is disabled (#10726)
    • Fixed validate command checking the lock file even if the lock option is disabled (#10723)

    [2.2.11] 2022-04-01

    • Added missing config.bitbucket-oauth in composer-schema.json
    • Added --2.2 flag to self-update to pin the Composer version to the 2.2 LTS range (#10682)
    • Updated semver, jsonlint deps for minor fixes
    • Fixed generation of autoload crashing if a package has a broken path (#10688)
    • Removed dev-master=>dev-main alias from #10372 as it does not work when reloading from lock file and extracting dev deps (#10651)

    [2.2.10] 2022-03-29

    • Fixed Bitbucket authorization detection due to API changes (#10657)
    • Fixed validate command warning about dist/source keys if defined (#10655)
    • Fixed deletion/handling of corrupted 0-bytes zip archives (#10666)

    [2.2.9] 2022-03-15

    • Fixed regression with plugins that modify install path of packages, see docs if you are authoring such a plugin (#10621)

    [2.2.8] 2022-03-15

    • Fixed files autoloading sort order to be fully deterministic (#10617)
    • Fixed pool optimization pass edge cases (#10579)
    • Fixed require command failing when self.version is used as constraint (#10593)
    • Fixed --no-ansi / undecorated output still showing color in repo warnings (#10601)
    • Performance improvement in pool optimization step (composer/semver#131)

    [2.2.7] 2022-02-25

    • Allow installation together with composer/xdebug-handler ^3 (#10528)
    • Fixed support for packages with no licenses in licenses command output (#10537)
    • Fixed handling of allow-plugins: false which kept warning (#10530)
    • Fixed enum parsing in classmap generation when the enum keyword is not lowercased (#10521)
    • Fixed author parsing in init command requiring an email whereas the schema allows a name only (#10538)
    • Fixed issues in require command when requiring packages which do not exist (but are provided by something else you require) (#10541)
    • Performance improvement in pool optimization step (#10546)

    [2.2.6] 2022-02-04

    • BC Break: due to an oversight, the COMPOSER_BIN_DIR env var for binaries added in Composer 2.2.2 had to be renamed to COMPOSER_RUNTIME_BIN_DIR (#10512)
    • Fixed enum parsing in classmap generation with syntax like enum foo:string without space after : (#10498)
    • Fixed package search not urlencoding the input (#10500)
    • Fixed reinstall command not firing pre-install-cmd/post-install-cmd events (#10514)
    • Fixed edge case in path repositories where a symlink: true option would be ignored on old Windows and old PHP combos (#10482)

    ... (truncated)

    Commits
    • ba61e76 Release 2.2.12
    • a1f9baa Fix 5.3/5.4 builds
    • 2ba8758 Update changelog
    • 2c40c53 Merge pull request from GHSA-x7cr-6qr6-2hh6
    • 915b97f Fix docs
    • d64e32c Merge remote-tracking branch 'ktomk/patch-validate-no-check-lock' into 2.2
    • 0a8dfe6 Clarify that autoloader-suffix should be a non-empty-string, fixes #10720 (#1...
    • bb0edce Fixed lock file being used when lock:false is in config, refs #10715 (#10726)
    • 939c998 validate lock-file if configured (#10715, --check-lock)
    • 9bfd059 Fix curl downloader to retry in case of DNS resolution failure, fixes #10716
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • [Readme.md] Broken links

    [Readme.md] Broken links

    Hello,

    3 of the 4 external links in the section https://github.com/Cotya/magento-composer-installer#external-links are broken. Only the video Composer How to Screencast seems to be working.

    I suggest to remove the broken links from the file.

    Regards,

    opened by bhennesAdv 0
  • update squizlabs/PHP_CodeSniffer

    update squizlabs/PHP_CodeSniffer

    currently used version has a security vulnerability. While this is not really a difference for our current usage scenario, its still good to update it to reduce warnings for others.

    good first issue 
    opened by Flyingmana 0
  • phase out

    phase out "magento-module" by introducing "openmage-module" as new default

    with being primarily used by OpenMage, the community fork of Magento1, it makes sense to align the branding here.

    The old name will still be supported for ever (because it cant hurt)

    Refers mostly to the composer package type as in

    {
        "type": "magento-module",
        ...
        "extra": {
            "magento-root-dir": "htdocs/",
            "include-root-package": true
        }
    }
    
    opened by Flyingmana 0
  • Conflict with symfony

    Conflict with symfony

    Many Magento 1.9.X sites use composer and n98-magerun to manage their installations.

    There is some conflict with the symfony framework using the latest php7.3 compatible magerun.

    We get the following from n98-magerun:

    PHP Fatal error: Uncaught Error: Call to undefined method Symfony\Component\Console\Command\HelpCommand::isHidden() in /var/www/magento/vendor/symfony/console/Descriptor/ApplicationDescription.php:108 Stack trace:

    If rename the symfony folder loaded by compose-installer then the problem goes away. I can only assume that both composer-installer and magerun are using incompatible versions and the compose-installer Symfony version is already loaded thus magerun gets the wrong version.

    composer v2 
    opened by dvdsndr 2
Releases(4.0.2)
  • 4.0.2(Apr 21, 2022)

    add support for newer composer versions

    What's Changed

    • Bump composer/composer from 2.0.6 to 2.0.13 by @dependabot in https://github.com/Cotya/magento-composer-installer/pull/194
    • refine sonarcube export by @Flyingmana in https://github.com/Cotya/magento-composer-installer/pull/198
    • Bump composer/composer from 2.0.13 to 2.1.9 by @dependabot in https://github.com/Cotya/magento-composer-installer/pull/196
    • Compatibility with Composer 2.3.0 by @tmotyl in https://github.com/Cotya/magento-composer-installer/pull/201
    • Correct namespace for psr-0 autoloading. by @func0der in https://github.com/Cotya/magento-composer-installer/pull/197
    • Correctly link files when destination is already in the symlink by @tmotyl in https://github.com/Cotya/magento-composer-installer/pull/188
    • Compatibility with newer versions of Symfony by @tmotyl in https://github.com/Cotya/magento-composer-installer/pull/202

    New Contributors

    • @dependabot made their first contribution in https://github.com/Cotya/magento-composer-installer/pull/194
    • @tmotyl made their first contribution in https://github.com/Cotya/magento-composer-installer/pull/201
    • @func0der made their first contribution in https://github.com/Cotya/magento-composer-installer/pull/197

    Full Changelog: https://github.com/Cotya/magento-composer-installer/compare/4.0.1...4.0.2

    Source code(tar.gz)
    Source code(zip)
  • 4.0.1(Nov 9, 2020)

  • 4.0.0-alpha.1(Nov 5, 2020)

  • 3.2.3(Jun 15, 2020)

  • 3.2.1(Nov 17, 2019)

  • 3.2.0(Dec 5, 2018)

  • 3.1.2(Jun 7, 2017)

  • 3.1.1(May 31, 2017)

  • 3.0.7(Aug 29, 2016)

    • Fixed an issue where symlinks were follwed when removing a module, causing files in vendor to be removed
    • Added PHP 7.0, HHVM to Travis CI. Removed allow_failures for HHVM.
    • Changes the way gitignore files are being processed. Retains the layout and other duplicates (comments, empty lines, etc.)
    • README example snippet uses https to prevent 'configuration does not allow connections to' errors
    • added PR #90: Added check to see if directory exists (for redeploy command)
    • added PR #91: Resolve package.xml mappings edge case: Replace double slashes in mappings
    • added regression test covering pull request #65
    • Added functionality to include root package when deploying modules
    • remove eol php version (4.5) from tests
    • add test for updating the installer
    • annoy people when they try to update the installer with active plugins
    • test the installer against different composer versions on Travis
    • allow Symfony/console 3.x as parallel dependency
    Source code(tar.gz)
    Source code(zip)
  • 3.0.7-rc.1(Mar 15, 2016)

  • 2.1.3(Feb 5, 2016)

  • 3.0.6(Oct 21, 2015)

    • Fix problems with magento connect packages referencing non existent files
    • Fix PHP TestSetup for windows with PR #69
    • Added PR #73: add workaround for paths with containing whitespace
    Source code(tar.gz)
    Source code(zip)
  • 3.0.5(Aug 5, 2015)

    • Fixed Issue #20: 'mklink""' is not recognized as an internal or external command, operable program or batch file.
    • Fixed issue #48: Package XML mappings have './' prepended to them which breaks git-ignore functionality. Also explicitly adds a fw-slash to git-ignore paths, if one does not exist already.
    • Added functionality to remove entries from the git-ignore file when a module is uninstalled
    • Fixed an issue where empty directories were left behind after un-installing a module. If a structure like /folder1/folder2/file1.txt was created, and both folders were created by the module. Only folder2 would be removed. It now traverses up-to the root-dir removing any empty directories.
    • Added documentation for package.xml mapping (PR #47)
    • set 5.4 as minimum required Version
    Source code(tar.gz)
    Source code(zip)
  • 3.0.4(Jul 12, 2015)

    3.0.4 - 2015-07-12

    • Added PR #40: extra config option to skip repository suggestions
    • Reverted PR #34 in favor of a simpler solution without breaking BC
    • Fixed issue #7 by filtering out Aliased Packages. This was with branch-aliasing where composer gave us two packages for the same module when it was setup to use branch aliasing
    • Fixed issue #33 by using the source reference from the composer package as part of the internal version number for tracking packages
    • Fixed issue #39 Symlinks were not removed correctly on module remove

    3.0.4-beta1- 2015-06-10

    • Fixed error when redeploying with no modules, using PHP 5.3. Issue #16 PR #29
    • Fixed the Patcher throwing an exception if app/Mage.php was missing, even when with-bootstrap-patch was set to false. Issue #31 PR #32
    • Changed Patcher throwing an exception to just output a comment Message
    • Add sourceReference support for installed.json, fixes issues with updates for dev-master type repositories where version is not a good indication of updates.
    • Remove exception for InstalledPackageFileSystemRepository::add() method, the function is used for both updates and new installs.
    • Relaxed the Plugin API constraint to ~1.0 so that the next version bump won't exclude this installer.
    • Updated dependencies' versions.
    Source code(tar.gz)
    Source code(zip)
  • 3.0.4-beta1(Jun 10, 2015)

    • Fixed error when redeploying with no modules, using PHP 5.3.
    • Fixed the Patcher throwing an exception if app/Mage.php was missing, even when with-bootstrap-patch was set to false.
    • Changed Patcher throwing an exception to just output a comment Message
    • Add sourceReference support for installed.json, fixes issues with updates for dev-master type repositories where version is not a good indication of updates.
    • Remove exception for InstalledPackageFileSystemRepository::add() method, the function is used for both updates and new installs.
    • Relaxed the Plugin API constraint to ~1.0 so that the next version bump won't exclude this installer.
    • Updated dependencies' versions.
    Source code(tar.gz)
    Source code(zip)
  • 3.0.3(Jun 2, 2015)

    • Added a change log file
    • The patching process was changed to not create additional files (bootstrap.php, Mage.class.php etc.). Now, only the native app/Mage.php is changed.
    • New documentation about the autoloader patching was added.
    • Composer dependencies were updated
    • New boolean extra config: with-bootstrap-patch. It controls whether the app/Mage.php file will be patched with the Composer autoloader ability. Defaults to true.
    • Fixed unit tests calling Composer commands using a hardcoded composer.phar, breaking for people which had their command renamed to composer.
    • Added support for modman's style of declaring just the source file (see example).
    Source code(tar.gz)
    Source code(zip)
  • 3.0.3-rc.2(May 20, 2015)

  • 3.0.3-rc.1(May 3, 2015)

  • 2.1.3-rc.1(May 3, 2015)

Owner
Open Source Maintaining as a Service
null
This module adds a command to easily generate "modules" in Laravel and install them using composer.

Laravel Module Create This module adds a command to easily generate "modules" in Laravel and install them using composer Installation Simply install t

null 2 Feb 18, 2022
An installer package that let's you install NodeJS and NPM as a Composer dependency.

NodeJS installer for Composer This is an installer that will download NodeJS and NPM and install them in your Composer dependencies. Installation is s

TheCodingMachine 106 Sep 30, 2022
Composer installer for PHP_CodeSniffer coding standards

PHP_CodeSniffer Standards Composer Installer Plugin This composer installer plugin allows for easy installation of PHP_CodeSniffer coding standards (r

Dealerdirect 462 Dec 22, 2022
This composer installer plugin allows for easy installation of PHP_CodeSniffer coding standards

PHP_CodeSniffer Standards Composer Installer Plugin This composer installer plugin allows for easy installation of PHP_CodeSniffer coding standards (r

PHPCSStandards 393 Feb 25, 2022
Test essentials for writing testable code that interacts with Magento core modules

Essentials for testing Magento 2 modules Using mocking frameworks for testing Magento 2 modules is counterproductive as you replicate line by line you

EcomDev B.V. 9 Oct 6, 2022
Universal extension installer for Magento 2, see introductory blog post here

ExtDN Installer for Magento 2 modules The installation of extensions for Magento 2 has a few scenarios to cover depending on your starting position (M

ExtDN 26 Apr 1, 2022
OSX/Linux Docker containers installer for Magento 2

Magento 2 OSX/Linux Docker Requirements MacOS: Docker, docker-sync, Git Linux: Docker, Docker-compose, Git on Debian based OS (Example: Ubuntu, Linux

Osiozekhai Aliu 54 Dec 10, 2022
A composer plugin, to install differenty types of composer packages in custom directories outside the default composer default installation path which is in the vendor folder.

composer-custom-directory-installer A composer plugin, to install differenty types of composer packages in custom directories outside the default comp

Mina Nabil Sami 136 Dec 30, 2022
Library for check dependency between modules inside projects

PHP Dependency analyzer PHP DA is tool for check and support dependencies inside your project clear. For example: You have project with 3 root namespa

Kir Apukhtin 12 Nov 15, 2022
Experimenting with Zabbix frontend modules

Modules Request for new example can be left as issue for this repository, will do my best to implement if it is possible. Extending host popup menu Ac

null 1 Sep 19, 2022
Simple way to auto load modules without complicate definition of routes

Phalcon-autorouter Version 2.0 Example full application with various libraries included in this example Change log Structure have been changed and upd

Kamil 28 Dec 27, 2022
WordPress plugin which contains a collection of modules to apply theme-agnostic front-end modifications

Soil A WordPress plugin which contains a collection of modules to apply theme-agnostic front-end modifications. Soil is a commercial plugin available

Roots 1k Dec 20, 2022
Check modules in app/code and vendor for PHP 8 compatibility status - PHP_CodeSniffer & php-compatibility standard

M2 PHP version compatibility check How To use Requires PHP 7.3+ | PHP 8 This app will run PHP_CodeSniffer with phpcompatibility/php-compatibility on t

William Tran 24 Oct 13, 2022
Friendly open source CMS forged on Codeigniter 3. FI v1.x uses the old lite theme and all modules.

ForgeIgniter v1.x - CI-3.x Friendly open source CMS forged on Codeigniter 3 This version is now discontinued, please check version 2 or 3 for updates.

ForgeIgniter 1 Jan 28, 2022
Scorm Player Api for play scorm modules

flux-scorm-player-api Scorm Player Api for play scorm modules Installation Native Download RUN (mkdir -p /%path%/libs/flux-scorm-player-api && cd /%pa

null 1 Dec 12, 2022
PHP Extension installer

pickle - PHP Extension installer Pickle installs PHP extensions easily on all platforms. Installation Grab the latest phar at https://github.com/Frien

null 1.6k Dec 27, 2022
This is wegare tools but all-in-one installer only, exclude GUI

All In One Installer for Wegare Tools This is wegare tools, but this is all-in-one. Here is the source https://github.com/wegare123?tab=repositories I

Helmi Amirudin 3 Jul 29, 2022
pine - A CLI installer for timber

pine - A CLI installer for timber A CLI tool written in PHP based on symfony console to easily create a WordPress (Timber) project. Installation compo

Azeem Hassni 29 Aug 24, 2022
TrovCMS command line installer.

Trov CMS Installer TrovCMS is a start kit for websites, built on Filament and Laravel. This install allows you to quickly spin up new sites to hit the

TrovCMS 12 Dec 26, 2022