public void ParseWithCsvValuesHavingQuotesParsesCorrecty() { var expected = new VariableData { Environment = "Environment", Name = "Name", Role = "Role", Step = "Step", Value = "Value" }; var actual = VariableData.Parse("\"Name\",\"Value\",\"Environment\",\"Role,\"Step\""); actual.ShouldHave().AllProperties().EqualTo(expected); }
public void ParseWithCsvValueParsesCorrecty() { var expected = new VariableData { Environment = "Environment", Name = "Name", Role = "Role", Step = "Step", Value = "Value" }; var actual = VariableData.Parse("Name,Value,Environment,Role,Step"); actual.ShouldHave().AllProperties().EqualTo(expected); }
public static VariableData Parse(string value) { var regex = new Regex("(?:,|^)([^\",]+|\"(?:[^\"]|\"\")*\")?"); if (string.IsNullOrEmpty(value)) { throw new ArgumentNullException("value"); } var matches = regex.Matches(value); var data = new VariableData(); data.Name = matches[0].Groups[1].Value; data.Value = matches[1].Value; data.Environment = matches[2].Value; data.Role = matches[3].Value; data.Step = matches[4].Value; return data; }
public void Execute(Command command) { var client = new HttpClient { BaseAddress = new Uri(command.Server) }; client.DefaultRequestHeaders.Add("X-Octopus-ApiKey", command.ApiKey); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); var api = client.GetResource <Api>("/api"); var projects = client.GetResource <IEnumerable <Project> >(api.Links.Projects); var project = projects.FirstOrDefault(x => x.Name.Equals(command.ProjectName, StringComparison.InvariantCultureIgnoreCase)); var variables = client.GetResource <IEnumerable <Variable> >(project.Links.Variables); var environmentLookup = client.GetResource <IEnumerable <Environment> >(api.Links.Environments).ToDictionary(x => x.Id); var csv = new StringBuilder(); const string format = "\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\""; csv.AppendLine("Name,Value,Environment,Role,Step"); foreach (var variable in variables) { var data = new VariableData(); data.Name = variable.Name; data.Value = variable.Value; data.Environment = !string.IsNullOrEmpty(variable.EnvironmentId) ? environmentLookup[variable.EnvironmentId].Name : string.Empty; data.Role = variable.Role; data.Step = string.Empty; csv.AppendFormat(format, data.Name, data.Value, data.Environment, data.Role, data.Step); csv.AppendLine(); } var content = csv.ToString(); File.WriteAllText(command.FilePath, content, Encoding.UTF8); }
public void Execute(Command command) { var client = new HttpClient { BaseAddress = new Uri(command.Server) }; client.DefaultRequestHeaders.Add("X-Octopus-ApiKey", command.ApiKey); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); var api = client.GetResource<Api>("/api"); var projects = client.GetResource<IEnumerable<Project>>(api.Links.Projects); var project = projects.FirstOrDefault(x => x.Name.Equals(command.ProjectName, StringComparison.InvariantCultureIgnoreCase)); var variables = client.GetResource<IEnumerable<Variable>>(project.Links.Variables); var environmentLookup = client.GetResource<IEnumerable<Environment>>(api.Links.Environments).ToDictionary(x=> x.Id); var csv = new StringBuilder(); const string format = "\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\""; csv.AppendLine("Name,Value,Environment,Role,Step"); foreach (var variable in variables) { var data = new VariableData(); data.Name = variable.Name; data.Value = variable.Value; data.Environment = !string.IsNullOrEmpty(variable.EnvironmentId) ? environmentLookup[variable.EnvironmentId].Name : string.Empty; data.Role = variable.Role; data.Step = string.Empty; csv.AppendFormat(format, data.Name, data.Value, data.Environment, data.Role, data.Step); csv.AppendLine(); } var content = csv.ToString(); File.WriteAllText(command.FilePath, content, Encoding.UTF8); }