Пример #1
0
        public ConanProject ExtractConanProject(IVCProject vcProject, ISettingsService settingsService)
        {
            var projectPath = ConanPathHelper.GetNearestConanfilePath(vcProject.ProjectDirectory); // TODO: Instead of nearest, use the one added to the project (be explicit)

            if (projectPath == null)
            {
                return(null);
            }

            if (vcProject.ActiveConfiguration == null) // project unloaded
            {
                return(null);
            }

            string projectConanConfig = ConanPathHelper.GetNearestConanConfig(vcProject.ProjectDirectory);
            var    project            = new ConanProject
            {
                Path       = projectPath,
                ConfigFile = projectConanConfig
            };

            if (settingsService != null && settingsService.GetConanInstallOnlyActiveConfiguration())
            {
                project.Configurations.Add(ExtractConanConfiguration(settingsService, vcProject.ActiveConfiguration));
            }
            else
            {
                foreach (IVCConfiguration configuration in vcProject.Configurations)
                {
                    project.Configurations.Add(ExtractConanConfiguration(settingsService, configuration));
                }
            }
            return(project);
        }
Пример #2
0
        public async Task <bool> InstallAsync(IVCProject vcProject)
        {
            var conanPath = _settingsService.GetConanExecutablePath();

            if (conanPath == null || conanPath == "")
            {
                _errorListService.WriteError(
                    "Conan executable path is not set and Conan executable wasn't found automatically. " +
                    "Please set it up in the Tools → Settings → Conan menu.");
                return(false);
            }

            var project = await _vcProjectService.ExtractConanProjectAsync(vcProject, _settingsService);

            if (project == null)
            {
                _errorListService.WriteError("Unable to extract conan project!");
                return(false);
            }
            var conan = new ConanRunner(conanPath);

            return(await InstallDependenciesAsync(conan, project));
        }
Пример #3
0
        public async Task IntegrateAsync(IVCProject vcProject)
        {
            var projectDirectory   = vcProject.ProjectDirectory;
            var conanfileDirectory = await ConanPathHelper.GetNearestConanfilePathAsync(projectDirectory);

            if (conanfileDirectory == null)
            {
                _errorListService.WriteError("unable to locate conanfile directory!");
                return;
            }

            if (_settingsService.GetConanInstallOnlyActiveConfiguration())
            {
                IntegrateIntoConfiguration(vcProject.ActiveConfiguration);
            }
            else
            {
                foreach (IVCConfiguration configuration in vcProject.Configurations)
                {
                    IntegrateIntoConfiguration(configuration);
                }
            }
        }
Пример #4
0
 public async Task <ConanProject> ExtractConanProjectAsync(IVCProject vcProject, ISettingsService settingsService) => await Task.Run(() =>
 {
     return(ExtractConanProject(vcProject, settingsService));
 });