StackFormation\Blueprint::getPreprocessedTemplate PHP Метод

getPreprocessedTemplate() публичный Метод

public getPreprocessedTemplate ( $force = false )
    public function getPreprocessedTemplate($force = false)
    {
        // Gather dependencies and create blueprint references
        $this->getStackName();
        $this->getProfile();
        $this->getParameters();
        $this->getTags();
        // convert templates paths to template objects
        $templates = [];
        foreach ($this->getTemplates() as $key => $templateFile) {
            $templateFile = $this->getBasePath() . '/' . $this->valueResolver->resolvePlaceholders($templateFile, $this, 'template');
            $realTemplateFile = realpath($templateFile);
            if ($realTemplateFile === false || !is_file($realTemplateFile) || !is_readable($realTemplateFile)) {
                throw new \Exception('Could not find template file ' . $templateFile . ' referenced in blueprint ' . $this->name);
            }
            $templates[] = is_int($key) ? new Template($realTemplateFile) : new PrefixedTemplate($key, $realTemplateFile);
        }
        foreach ($this->getOptionalTemplates() as $key => $templateFile) {
            $templateFile = $this->getBasePath() . '/' . $this->valueResolver->resolvePlaceholders($templateFile, $this, 'optionalTemplates');
            $realTemplateFiles = glob($templateFile);
            foreach ($realTemplateFiles as $realTemplateFile) {
                if ($realTemplateFile && is_file($realTemplateFile) && is_readable($realTemplateFile)) {
                    $templates[] = is_int($key) ? new Template($realTemplateFile) : new PrefixedTemplate($key, $realTemplateFile);
                }
            }
        }
        if (count($templates) === 0) {
            throw new \Exception('No template(s) found');
        }
        $additionalData = ['Metadata' => [Stack::METADATA_KEY => $this->getBlueprintReference()]];
        if ($force) {
            $additionalData['Resources'] = ['Force' . time() => ['Type' => 'AWS::CloudFormation::WaitConditionHandle']];
        }
        $description = null;
        if (!empty($this->blueprintConfig['description'])) {
            $description = $this->valueResolver->resolvePlaceholders($this->blueprintConfig['description'], $this, 'description');
        }
        $templateMerger = new TemplateMerger();
        return $templateMerger->merge($templates, $description, $additionalData);
    }

Usage Example

 protected function executeWithBlueprint(Blueprint $blueprint, InputInterface $input, OutputInterface $output)
 {
     // trigger resolving all placeholders
     $this->dependencyTracker->reset();
     $blueprint->getPreprocessedTemplate();
     $output->writeln("Blueprint '{$blueprint->getName()} depends on following stack's resources/parameters/outputs:");
     $table = new Table($output);
     $table->setHeaders(['Origin (' . $blueprint->getName() . ')', 'Source Stack', 'Field'])->setRows($this->dependencyTracker->getStackDependenciesAsFlatList())->render();
     $output->writeln("Blueprint '{$blueprint->getName()} depends on following environment variables:");
     $table = new Table($output);
     $table->setHeaders(['Var', 'Current Value', 'Type', 'Origin (within "' . $blueprint->getName() . '")'])->setRows($this->dependencyTracker->getEnvDependenciesAsFlatList())->render();
 }
All Usage Examples Of StackFormation\Blueprint::getPreprocessedTemplate