コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }