Question

Is it possible to install a file out of the 'vendor' directory when doing a composer install/update?

Let me elaborate a bit more if your not sure what i mean.

I have a config file(s) that are stored in /config/ini/<filename>.ini and lots of vendor modules in the vendor directory. Would it be possible to package the ini files with the vendor packages so upon installation they are written to the correct directory?

Ideally I need to be able to achieve this because i have an Authentication vendor module that will need to be installed in various different applications. Being able to do this will mean that the private key and other shared configuration options can be stored with the vendor module (in a private repo ofc).

Thanks Mike

Was it helpful?

Solution

Yes, you can. You need to create a script which is attached to post-install-cmd or post-update-cmd. That script will look in the package directories, select the issues and dump them in the correct dir.

It'll be somewhere around these lines:

use Composer\Script\CommandEvent;

class ScriptHandler
{
    public function bundleConfigs(CommandEvent $event)
    {
        $homeDir = $event->getComposer()->getConfig()->get('home');

        $vendorDir = $event->getComposer()->getConfig()->get('vendor-dir');
        $files = glob($vendorDir, '/*Module/config/*.ini');

        foreach ($files as $file) {
            copy($file, $homeDir.'/config/ini/'.basename($file));
        }
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top