MiniAsset\Factory::target PHP Method

target() public method

Create a single build target
public target ( string $name ) : AssetTarget
$name string The name of the target to build
return AssetTarget
    public function target($name)
    {
        if (!$this->config->hasTarget($name)) {
            throw new RuntimeException("The target named '{$name}' does not exist.");
        }
        $ext = $this->config->getExt($name);
        $themed = $this->config->isThemed($name);
        $filters = $this->config->targetFilters($name);
        $target = $this->config->cachePath($ext) . $name;
        $files = [];
        $scanner = $this->scanner($this->config->paths($ext, $name));
        $paths = $scanner->paths();
        $required = $this->config->requires($name);
        if ($required) {
            $compiler = $this->cachedCompiler();
            foreach ($required as $dependency) {
                $files[] = new Target($this->target($dependency), $compiler);
            }
        }
        foreach ($this->config->files($name) as $file) {
            if (preg_match('#^https?://#', $file)) {
                $files[] = new Remote($file);
            } else {
                if (preg_match('/(.*\\/)(\\*.*?)$/U', $file, $matches)) {
                    $path = $scanner->find($matches[1]);
                    if ($path === false) {
                        throw new RuntimeException("Could not locate folder {$file} for {$name} in any configured path.");
                    }
                    $glob = new Glob($path, $matches[2]);
                    $files = array_merge($files, $glob->files());
                } elseif (preg_match(static::CALLBACK_PATTERN, $file, $matches)) {
                    $callback = new Callback($matches[1], $matches[2], $scanner);
                    $files = array_merge($files, $callback->files());
                } else {
                    $path = $scanner->find($file);
                    if ($path === false) {
                        throw new RuntimeException("Could not locate {$file} for {$name} in any configured path.");
                    }
                    $files[] = new Local($path);
                }
            }
        }
        return new AssetTarget($target, $files, $filters, $paths, $themed);
    }

Usage Example

 /**
  * @expectedException RuntimeException
  * @expectedExceptionMessage Callback MiniAsset\Test\Helpers\MyCallbackProvider::invalid() is not callable
  */
 public function testCallbackProviderNotCallable()
 {
     $callbacksFile = APP . 'config' . DS . 'callbacks.ini';
     $config = AssetConfig::buildFromIniFile($callbacksFile);
     $factory = new Factory($config);
     $target = $factory->target('callbacks_not_callable.js');
 }
All Usage Examples Of MiniAsset\Factory::target