See also: https://github.com/Letudiant/composer-shared-package-plugin/blob/master/docs/all-available-configurations.md
Author: Sylvain Lorinet (sylvain.lorinet@gmail.com)
 /**
  * @param SharedPackageInstallerConfig $config
  */
 public function __construct(SharedPackageInstallerConfig $config)
 {
     $packageList = $config->getPackageList();
     foreach ($packageList as $packageName) {
         if ('*' === $packageName) {
             $this->areAllShared = true;
         }
     }
     if (!$this->areAllShared) {
         $this->packageCallbacks = $this->createCallbacks($packageList);
     }
 }
 /**
  * @param PackageInterface $package
  *
  * @throws FilesystemException
  */
 protected function removePackageVendorSymlink(PackageInterface $package)
 {
     if ($this->config->isSymlinkEnabled() && $this->filesystem->removeSymlink($this->getPackageVendorSymlink($package))) {
         $this->io->write(array('  - Deleting symlink for <info>' . $package->getPrettyName() . '</info> ' . '(<fg=yellow>' . $package->getPrettyVersion() . '</fg=yellow>)', ''));
         $symlinkParentDirectory = dirname($this->getPackageVendorSymlink($package));
         $this->filesystem->removeEmptyDirectory($symlinkParentDirectory);
     }
 }
 /**
  * @test
  */
 public function isSharedPackageWithPackageList()
 {
     $this->config->expects($this->once())->method('getPackageList')->willReturn(array('foo/bar', 'bar/*'));
     $solver = $this->createSolver();
     // False
     $this->assertFalse($solver->isSharedPackage($this->createPackageMock('unknown/unknown')));
     // True
     // Package with "shared-package" type
     $this->assertTrue($solver->isSharedPackage($this->createPackageMock('unknown/unknown', SharedPackageInstaller::PACKAGE_TYPE)));
     // Packages in the package list
     $this->assertTrue($solver->isSharedPackage($this->createPackageMock('foo/bar')));
     $this->assertTrue($solver->isSharedPackage($this->createPackageMock('bar/foo')));
 }