public BuildScriptSnippet GenerateBashBuildScriptSnippet(BuildScriptGeneratorContext ctx) { _logger.LogDebug("Selected PHP version: {phpVer}", ctx.PhpVersion); bool composerFileExists = false; if (ctx.SourceRepo.FileExists(PhpConstants.ComposerFileName)) { composerFileExists = true; try { dynamic composerFile = ctx.SourceRepo.ReadJsonObjectFromFile(PhpConstants.ComposerFileName); if (composerFile?.require != null) { Newtonsoft.Json.Linq.JObject deps = composerFile?.require; var depSpecs = deps.ToObject<IDictionary<string, string>>(); _logger.LogDependencies(this.Name, ctx.PhpVersion, depSpecs.Select(kv => kv.Key + kv.Value)); } } catch (Exception exc) { // Leave malformed composer.json files for Composer to handle. // This prevents Oryx from erroring out when Composer itself might be able to tolerate the file. _logger.LogWarning(exc, $"Exception caught while trying to deserialize {PhpConstants.ComposerFileName}"); } } var props = new PhpBashBuildSnippetProperties { ComposerFileExists = composerFileExists }; string snippet = TemplateHelpers.Render(TemplateHelpers.TemplateResource.PhpBuildSnippet, props, _logger); return new BuildScriptSnippet { BashBuildScriptSnippet = snippet }; }
/// <inheritdoc/> public BuildScriptSnippet GenerateBashBuildScriptSnippet( BuildScriptGeneratorContext ctx, PlatformDetectorResult detectorResult) { var phpPlatformDetectorResult = detectorResult as PhpPlatformDetectorResult; if (phpPlatformDetectorResult == null) { throw new ArgumentException( $"Expected '{nameof(detectorResult)}' argument to be of type " + $"'{typeof(PhpPlatformDetectorResult)}' but got '{detectorResult.GetType()}'."); } var buildProperties = new Dictionary <string, string>(); // Write the platform name and version to the manifest file buildProperties[ManifestFilePropertyKeys.PhpVersion] = phpPlatformDetectorResult.PlatformVersion; this.logger.LogDebug("Selected PHP version: {phpVer}", phpPlatformDetectorResult.PlatformVersion); bool composerFileExists = false; if (ctx.SourceRepo.FileExists(PhpConstants.ComposerFileName)) { composerFileExists = true; try { dynamic composerFile = ctx.SourceRepo.ReadJsonObjectFromFile(PhpConstants.ComposerFileName); if (composerFile?.require != null) { Newtonsoft.Json.Linq.JObject deps = composerFile?.require; var depSpecs = deps.ToObject <IDictionary <string, string> >(); this.logger.LogDependencies( this.Name, phpPlatformDetectorResult.PlatformVersion, depSpecs.Select(kv => kv.Key + kv.Value)); } } catch (Exception exc) { // Leave malformed composer.json files for Composer to handle. // This prevents Oryx from erroring out when Composer itself might be able to tolerate the file. this.logger.LogWarning(exc, $"Exception caught while trying to deserialize {PhpConstants.ComposerFileName.Hash()}"); } } var props = new PhpBashBuildSnippetProperties { ComposerFileExists = composerFileExists }; string snippet = TemplateHelper.Render(TemplateHelper.TemplateResource.PhpBuildSnippet, props, this.logger); return(new BuildScriptSnippet { BashBuildScriptSnippet = snippet, BuildProperties = buildProperties }); }