/** * {@inheritdoc} */ public function addRootAssetMapping(AssetMapping $mapping, $flags = 0) { if (!($flags & self::IGNORE_SERVER_NOT_FOUND) && !$this->servers->contains($mapping->getServerName())) { throw NoSuchServerException::forServerName($mapping->getServerName()); } if (!($flags & self::OVERRIDE) && $this->hasAssetMapping($mapping->getUuid())) { throw DuplicateAssetMappingException::forUuid($mapping->getUuid()); } $this->discoveryManager->addRootBinding(new BindingDescriptor($mapping->getGlob() . '{,/**/*}', DiscoveryUrlGenerator::BINDING_TYPE, array(DiscoveryUrlGenerator::SERVER_PARAMETER => $mapping->getServerName(), DiscoveryUrlGenerator::PATH_PARAMETER => $mapping->getServerPath()), 'glob', $mapping->getUuid()), $flags & self::OVERRIDE ? DiscoveryManager::OVERRIDE : 0); }
/** * {@inheritdoc} */ public function addRootAssetMapping(AssetMapping $mapping, $flags = 0) { if (!$this->discoveryManager->hasTypeDescriptor(DiscoveryUrlGenerator::BINDING_TYPE)) { throw new RuntimeException(sprintf('The binding type "%s" was not found. Please install the ' . '"puli/url-generator" package with Composer:' . "\n\n" . ' $ composer require puli/url-generator', DiscoveryUrlGenerator::BINDING_TYPE)); } if (!($flags & self::IGNORE_SERVER_NOT_FOUND) && !$this->servers->contains($mapping->getServerName())) { throw NoSuchServerException::forServerName($mapping->getServerName()); } if (!($flags & self::OVERRIDE) && $this->hasAssetMapping($mapping->getUuid())) { throw DuplicateAssetMappingException::forUuid($mapping->getUuid()); } $binding = new ResourceBinding($mapping->getGlob() . '{,/**/*}', DiscoveryUrlGenerator::BINDING_TYPE, array(DiscoveryUrlGenerator::SERVER_PARAMETER => $mapping->getServerName(), DiscoveryUrlGenerator::PATH_PARAMETER => $mapping->getServerPath()), 'glob', $mapping->getUuid()); $this->discoveryManager->addRootBindingDescriptor(new BindingDescriptor($binding), $flags & self::OVERRIDE ? DiscoveryManager::OVERRIDE : 0); if ($this->dispatcher && $this->dispatcher->hasListeners(PuliEvents::POST_ADD_ASSET_MAPPING)) { $this->dispatcher->dispatch(PuliEvents::POST_ADD_ASSET_MAPPING, new AddAssetMappingEvent($mapping)); } }
/** * {@inheritdoc} */ public function prepareInstallation(AssetMapping $mapping) { $glob = $mapping->getGlob(); $serverName = $mapping->getServerName(); $resources = $this->repo->find($glob); if ($resources->isEmpty()) { throw NotInstallableException::noResourceMatches($glob); } if (!$this->servers->contains($serverName)) { throw NotInstallableException::serverNotFound($serverName); } $server = $this->servers->get($serverName); $installerName = $server->getInstallerName(); if (!$this->installerManager->hasInstallerDescriptor($installerName)) { throw NotInstallableException::installerNotFound($installerName); } $installerDescriptor = $this->installerManager->getInstallerDescriptor($installerName); $installer = $this->loadInstaller($installerDescriptor); $rootDir = $this->context->getRootDirectory(); $params = new InstallationParams($installer, $installerDescriptor, $resources, $mapping, $server, $rootDir); $installer->validateParams($params); return $params; }
public function testDeleteMapping() { $this->assetManager->expects($this->once())->method('findAssetMappings')->with(Expr::startsWith('abcd', AssetMapping::UUID))->willReturn(array($mapping = new AssetMapping('/app/public', 'localhost', '/'))); $this->assetManager->expects($this->once())->method('removeRootAssetMapping')->with($mapping->getUuid()); $args = self::$deleteCommand->parseArgs(new StringArgs('abcd')); $this->assertSame(0, $this->handler->handleDelete($args)); }
private function mappingsEqual(AssetMapping $mapping1, AssetMapping $mapping2) { if ($mapping1->getUuid() !== $mapping2->getUuid()) { return false; } if ($mapping1->getGlob() !== $mapping2->getGlob()) { return false; } if ($mapping1->getServerPath() !== $mapping2->getServerPath()) { return false; } if ($mapping1->getServerName() !== $mapping2->getServerName()) { return false; } return true; }
public function testCreateWithEmptyServerPath() { $mapping = new AssetMapping('/blog/public', 'local', ''); $this->assertSame('/', $mapping->getServerPath()); }
private function mappingsEqual(AssetMapping $mapping1, AssetMapping $mapping2) { return $mapping1->getUuid() === $mapping2->getUuid() && $mapping1->getGlob() === $mapping2->getGlob() && $mapping1->getServerPath() === $mapping2->getServerPath() && $mapping1->getServerName() === $mapping2->getServerName(); }
/** * Returns the path where a resource is going to be installed. * * This is a path relative to the document root of the target server. * * @param Resource $resource The resource. * * @return string The server path. */ public function getServerPathForResource(Resource $resource) { $relPath = Path::makeRelative($resource->getRepositoryPath(), $this->basePath); return '/' . trim($this->mapping->getServerPath() . '/' . $relPath, '/'); }