private void AddEnvironmentIndexViewModel(
            IList<EnvironmentIndexViewModel> viewModels,
            Environment environment)
        {
            if (environment == null)
            {
                throw new ArgumentNullException("environment");
            }

            if (viewModels == null)
            {
                throw new ArgumentNullException("viewModels");
            }

            IEnumerable<Deployment> deployments =
                _deploymentRepository.GetByEnvironment(
                    environment.Id);
            Deployment lastDeployment =
                deployments.Where(d => d.Completed.HasValue).OrderByDescending(d => d.Completed).FirstOrDefault();
            if (lastDeployment == null)
            {
                return;
            }

            Pipeline pipeline = _pipelineRepository.GetPipeline(lastDeployment.PipelineId);
            string currentRevision = pipeline.Revision;
            viewModels.Add(new EnvironmentIndexViewModel
                {
                    EnvironmentId = environment.Id,
                    EnvironmentName = environment.EnvironmentName,
                    CurrentRevision = currentRevision
                });
        }
 public void Deploy(
     string packagePath,
     string workingDirectory,
     Environment environment)
 {
     ExtractZipFile(packagePath, workingDirectory);
     WriteEnvironmentProperties(environment, workingDirectory);
     DeployPackage(workingDirectory);
 }
 private void SetupRepositories(
     int pipelineId,
     int environmentId)
 {
     var environment = new Environment();
     var pipeline = new Pipeline(
         pipelineId,
         "A",
         1,
         "x",
         "x",
         DateTime.Now,
         "x",
         "x");
     environmentRepositoryMock.Setup(
         er => er.GetEnvironment(environmentId)).Returns(
             environment);
     pipelineRepositoryMock.Setup(
         pr => pr.GetPipeline(pipelineId)).Returns(
             pipeline);
 }
        private static void WriteEnvironmentProperties(
            Environment environment,
            string workingDirectory)
        {
            var sb = new StringBuilder();
            sb.AppendLine("<?xml version=\"1.0\"?>");
            sb.AppendLine("<properties>");
            foreach (EnvironmentProperty property in environment.Properties)
            {
                sb.AppendFormat(
                    "  <property name=\"{0}\" value=\"{1}\" />",
                    property.Key,
                    property.Value);
                sb.AppendLine();
            }

            sb.AppendLine("</properties>");
            string properties = sb.ToString();
            string filePath =
                Path.Combine(workingDirectory, "local.properties.xml");
            File.WriteAllText(filePath, properties);
        }