public void Deserialize_Environment_With_Include() { using (var dir = new TestFolder()) { dir.AddFile("common.xml", @"<?xml version=""1.0""?> <environment name=""common"" description=""just a base""> <variable name=""firstname"" value=""jack"" /> <variable name=""lastname"" value=""bauer"" /> </environment>"); dir.AddFile("testenv.xml", @"<?xml version=""1.0""?> <environment name=""testenv"" description=""testenv which includes common.xml"" include=""common.xml""> <variable name=""lastname"" value=""zuercher"" /> </environment>"); var envprovider = new EnvironmentProvider(); var result = envprovider.GetEnvironmentFromFile(Path.Combine(dir.DirectoryInfo.FullName, "testenv.xml")); Assert.AreEqual(3, result.Variables.Count); Assert.AreEqual("TESTENV", result["env"].Value); Assert.AreEqual("jack", result["firstname"].Value); Assert.AreEqual("zuercher", result["lastname"].Value); } }
private EnvironmentVariablesDto GetEnvironment(string name, bool fetchVariables) { using (var session = DocumentStore.OpenSession()) { var environment = session.Query <Environment>().FirstOrDefault(e => e.Name == name); if (environment == null) { throw HttpError.NotFound("Environment {0} not found.".Fmt(name)); } using (var workspace = new Workspace(FileSystem, ServerSettings)) { var result = new EnvironmentVariablesDto() { Environment = environment.ToDto() }; if (fetchVariables) { workspace.UpdateSources(); var provider = new EnvironmentProvider(); try { var serializedEnvironment = provider.GetEnvironmentFromFile(Path.Combine(workspace.EnviornmentPath, name + ".xml")); var resolver = new VariableResolver(serializedEnvironment.Variables); result.Variables = new List <VariableDto>(); result.Variables.AddRange(serializedEnvironment.Variables.Select(v => new VariableDto() { Name = v.Name, Value = v.Value, Resolved = resolver.TransformVariables(v.Value) })); if (resolver.VariableUsageList.Any(v => v.IsMissingValue)) { result.MissingVariables = new List <string>(resolver.VariableUsageList.Where(v => v.IsMissingValue).Select(v => v.Variable.Name)); } } catch (FileNotFoundException e) { result.Variables = new List <VariableDto>(); result.Warning = "No xml file found for this environment!"; } } return(result); } } }
protected override void ProcessRecord() { LogManager.LogFactory = new PowerShellCommandLineLogFactory(); Log = LogManager.GetLogger(typeof(InvokeDirectoryTransform)); try { // TODO: make that nice, i'm in hurry right know :) EnvironmentProvider envProvider = null; envProvider = string.IsNullOrEmpty(Environment) ? new EnvironmentProvider() : new EnvironmentProvider(Directory); var templateEngine = new TemplateEngine(); Environment env = !string.IsNullOrEmpty(Environment) ? envProvider.GetEnvironment(Environment) : envProvider.GetEnvironmentFromFile(EnvironmentFile); this.LoadAesKey(); if (string.IsNullOrEmpty(this.aesKey) == false) { env.DecryptVariables(this.aesKey); } templateEngine.TransformDirectory(Directory, env, false); } catch (DirectoryNotFoundException) { Log.Warn(".powerdeploy folder not found for " + Directory + "!"); } catch (FileNotFoundException exception) { Log.Error(exception.Message); } }