public Orchestrator(
     OrchestratorSession session,
     IOrchestratorInteractiveService interactiveService,
     ICdkProjectHandler cdkProjectHandler,
     ICDKManager cdkManager,
     ICDKVersionDetector cdkVersionDetector,
     IAWSResourceQueryer awsResourceQueryer,
     IDeploymentBundleHandler deploymentBundleHandler,
     ILocalUserSettingsEngine localUserSettingsEngine,
     IDockerEngine dockerEngine,
     ICustomRecipeLocator customRecipeLocator,
     IList <string> recipeDefinitionPaths,
     IDirectoryManager directoryManager)
 {
     _session                 = session;
     _interactiveService      = interactiveService;
     _cdkProjectHandler       = cdkProjectHandler;
     _cdkManager              = cdkManager;
     _cdkVersionDetector      = cdkVersionDetector;
     _awsResourceQueryer      = awsResourceQueryer;
     _deploymentBundleHandler = deploymentBundleHandler;
     _dockerEngine            = dockerEngine;
     _customRecipeLocator     = customRecipeLocator;
     _recipeDefinitionPaths   = recipeDefinitionPaths;
     _localUserSettingsEngine = localUserSettingsEngine;
     _directoryManager        = directoryManager;
 }
Example #2
0
        public static async Task <List <RecipeDefinition> > GetRecipeDefinitions(ICustomRecipeLocator customRecipeLocator, ProjectDefinition?projectDefinition)
        {
            IEnumerable <string> recipeDefinitionsPaths = new List <string> {
                RecipeLocator.FindRecipeDefinitionsPath()
            };

            if (projectDefinition != null)
            {
                var targetApplicationFullPath = new DirectoryInfo(projectDefinition.ProjectPath).FullName;
                var solutionDirectoryPath     = !string.IsNullOrEmpty(projectDefinition.ProjectSolutionPath) ?
                                                new DirectoryInfo(projectDefinition.ProjectSolutionPath).Parent.FullName : string.Empty;

                var customPaths = await customRecipeLocator.LocateCustomRecipePaths(targetApplicationFullPath, solutionDirectoryPath);

                recipeDefinitionsPaths = recipeDefinitionsPaths.Union(customPaths);
            }

            var recipeDefinitions = new List <RecipeDefinition>();

            try
            {
                foreach (var recipeDefinitionsPath in recipeDefinitionsPaths)
                {
                    foreach (var recipeDefinitionFile in Directory.GetFiles(recipeDefinitionsPath, "*.recipe", SearchOption.TopDirectoryOnly))
                    {
                        try
                        {
                            var content    = File.ReadAllText(recipeDefinitionFile);
                            var definition = JsonConvert.DeserializeObject <RecipeDefinition>(content);
                            recipeDefinitions.Add(definition);
                        }
                        catch (Exception e)
                        {
                            throw new Exception($"Failed to Deserialize Recipe Definition [{recipeDefinitionFile}]: {e.Message}", e);
                        }
                    }
                }
            }
            catch (IOException)
            {
                throw new NoRecipeDefinitionsFoundException("Failed to find recipe definitions");
            }

            return(recipeDefinitions);
        }
Example #3
0
 public DeployCommand(
     IToolInteractiveService toolInteractiveService,
     IOrchestratorInteractiveService orchestratorInteractiveService,
     ICdkProjectHandler cdkProjectHandler,
     ICDKManager cdkManager,
     ICDKVersionDetector cdkVersionDetector,
     IDeploymentBundleHandler deploymentBundleHandler,
     IDockerEngine dockerEngine,
     IAWSResourceQueryer awsResourceQueryer,
     ITemplateMetadataReader templateMetadataReader,
     IDeployedApplicationQueryer deployedApplicationQueryer,
     ITypeHintCommandFactory typeHintCommandFactory,
     IDisplayedResourcesHandler displayedResourcesHandler,
     ICloudApplicationNameGenerator cloudApplicationNameGenerator,
     ILocalUserSettingsEngine localUserSettingsEngine,
     IConsoleUtilities consoleUtilities,
     ICustomRecipeLocator customRecipeLocator,
     ISystemCapabilityEvaluator systemCapabilityEvaluator,
     OrchestratorSession session,
     IDirectoryManager directoryManager)
 {
     _toolInteractiveService         = toolInteractiveService;
     _orchestratorInteractiveService = orchestratorInteractiveService;
     _cdkProjectHandler             = cdkProjectHandler;
     _deploymentBundleHandler       = deploymentBundleHandler;
     _dockerEngine                  = dockerEngine;
     _awsResourceQueryer            = awsResourceQueryer;
     _templateMetadataReader        = templateMetadataReader;
     _deployedApplicationQueryer    = deployedApplicationQueryer;
     _typeHintCommandFactory        = typeHintCommandFactory;
     _displayedResourcesHandler     = displayedResourcesHandler;
     _cloudApplicationNameGenerator = cloudApplicationNameGenerator;
     _localUserSettingsEngine       = localUserSettingsEngine;
     _consoleUtilities              = consoleUtilities;
     _session                   = session;
     _directoryManager          = directoryManager;
     _cdkVersionDetector        = cdkVersionDetector;
     _cdkManager                = cdkManager;
     _customRecipeLocator       = customRecipeLocator;
     _systemCapabilityEvaluator = systemCapabilityEvaluator;
 }
Example #4
0
 public RecipeController(ICustomRecipeLocator customRecipeLocator, IProjectDefinitionParser projectDefinitionParser)
 {
     _customRecipeLocator     = customRecipeLocator;
     _projectDefinitionParser = projectDefinitionParser;
 }