Ejemplo n.º 1
0
        protected override CommandResult ExecuteDetailed(GetSdksCommandArgs args, ChangeObservable observable)
        {
            IEnumerable <SdkPath>   sdkPaths   = Enumerable.Empty <SdkPath>();
            IEnumerable <Exception> exceptions = Enumerable.Empty <Exception>();

            if (args.All)
            {
                sdkPaths = sdkRepository.GetAllTargets()
                           .GroupBy(target => sdkRepository.GetSdk(target).Root.FullName)
                           .Select(group => new SdkPath(group.Key, group.Select(target => new TargetResult(target.Name,
                                                                                                           target.Version,
                                                                                                           target.LongVersion,
                                                                                                           target.ShortVersion))));
            }
            else
            {
                ProjectEntity project       = ProjectEntity.Decorate(entityFactory.Create(Guid.NewGuid().ToByteString(), args).Root);
                TargetsResult targetsResult = targetParser.Targets(project);
                sdkPaths = targetsResult.ValidTargets
                           .GroupBy(target => sdkRepository.GetSdk(target).Root.FullName)
                           .Select(group => new SdkPath(group.Key, group.Select(target => new TargetResult(target.Name,
                                                                                                           target.Version,
                                                                                                           target.LongVersion,
                                                                                                           target.ShortVersion))));
                exceptions = targetsResult.Errors;
            }
            return(new CommandResult(0, new SdksCommandResult(sdkPaths)));
        }
Ejemplo n.º 2
0
        protected override CommandResult ExecuteDetailed(GetTargetsCommandArgs args, ChangeObservable observable)
        {
            IEnumerable <Exception> exceptions = Enumerable.Empty <Exception>();
            TargetsCommandResult    commandResult;

            if (args.All)
            {
                commandResult = new TargetsCommandResult(sdkRepository.GetAllTargets()
                                                         .Select(t => new TargetResult(t.Name, t.Version,
                                                                                       t.LongVersion,
                                                                                       t.ShortVersion))
                                                         .OrderBy(t => t.Name).ThenByDescending(t => t.Version));
            }
            else
            {
                ExecutionContext.WriteWarning("This command is deprecated. Use 'get project-information' instead.", false);

                ProjectEntity project          = ProjectEntity.Decorate(entityFactory.Create(Guid.NewGuid().ToByteString(), args).Root);
                TargetsResult targetsResult    = targetParser.Targets(project, false);
                Target[]      availableTargets = sdkRepository.GetAllTargets().ToArray();
                commandResult = new TargetsCommandResult(targetsResult.ValidTargets
                                                         .Select(t => new TargetResult(t.Name, t.Version,
                                                                                       t.LongVersion,
                                                                                       t.ShortVersion,
                                                                                       availableTargets.Any(at => t.Name == at.Name && at.LongVersion == t.LongVersion)))
                                                         .OrderBy(t => t.Name).ThenByDescending(t => t.Version));
                exceptions = targetsResult.Errors;
            }

            return(new CommandResult(0, commandResult, exceptions));
        }
Ejemplo n.º 3
0
        protected override CommandResult ExecuteDetailed(GetIncludePathsCommandArgs args, ChangeObservable observable)
        {
            ExecutionContext.WriteWarning("This command is deprecated. Use 'get project-information' instead.", false);

            ProjectEntity        project       = ProjectEntity.Decorate(entityFactory.Create(Guid.NewGuid().ToByteString(), args).Root);
            TargetsResult        targetsResult = targetParser.Targets(project);
            IEnumerable <string> paths         = targetsResult.ValidTargets
                                                 .Select(sdkRepository.GetSdk)
                                                 .Where(sdk => sdk != null)
                                                 .Distinct()
                                                 .SelectMany(sdk => sdk.IncludePaths);

            return(new CommandResult(0, new IncludePathsCommandResult(paths.Select(p => new Path(p))),
                                     targetsResult.Errors));
        }
Ejemplo n.º 4
0
        public int BuildLibraryForProject(Entity project, ChangeObservable observable,
                                          string metaFilesDirectory, string libraryLocation, string outputDirectory,
                                          Guid libraryGuid, IEnumerable <string> targets,
                                          IEnumerable <string> externalLibraries, string buildType)
        {
            userInterface.WriteInformation("Starting library generation...");

            ProjectEntity projectEntity = ProjectEntity.Decorate(project);
            IEnumerable <(Target, string)> targetsSet;

            if (!targets.Any())
            {
                TargetsResult ts = targetParser.Targets(projectEntity, false);
                if (!ts.ValidTargets.Any())
                {
                    throw new FormattableException
                              ("Please use --target to specify for which targets the library shall be generated.");
                }
                else
                {
                    HashSet <(Target, string)> targetsHashSet = new HashSet <(Target, string)>();
                    foreach (Target target in ts.ValidTargets)
                    {
                        targetsHashSet.Add((target, null));
                    }
                    targetsSet = targetsHashSet;
                }
            }
            else
            {
                targetsSet = targetParser.GetSpecificTargets(targets, false);
            }

            Dictionary <Target, IEnumerable <VirtualFile> > externalLibs =
                ExternalLibrariesParser.ParseExternalLibraries(externalLibraries, targetParser,
                                                               fileSystem, targetsSet.Select(t => t.Item1));

            int result = libraryBuilderExecuter.Execute(projectEntity, metaFilesDirectory, libraryLocation,
                                                        outputDirectory, observable, userInterface, libraryGuid, targetsSet, externalLibs, buildType);

            if (result == 0)
            {
                userInterface.WriteInformation("Successfully generated library!");
            }
            return(result);
        }
Ejemplo n.º 5
0
        public void Build(BuildInformation buildInfo, ChangeObservable observable, IEnumerable <string> targets)
        {
            if (!targets.Any())
            {
                TargetsResult projectTargets = targetParser.Targets(buildInfo.RootProjectEntity);
                projectTargets.Errors.ThrowIfNotEmpty();
                if (!projectTargets.ValidTargets.Any())
                {
                    throw new NoAssignedTargetsException(buildInfo.RootEntity.Name);
                }

                BuildProjectForTargets(buildInfo, observable, projectTargets.ValidTargets);
            }
            else
            {
                //build for selected target(s)
                BuildProjectForTargets(buildInfo, observable, targetParser.GetSpecificTargets(targets).Select(t => t.Item1));
            }
        }
Ejemplo n.º 6
0
        protected override CommandResult ExecuteDetailed(GetCompilerSpecificationsCommandArgs args, ChangeObservable observable)
        {
            ProjectEntity project       = ProjectEntity.Decorate(entityFactory.Create(Guid.NewGuid().ToByteString(), args).Root);
            TargetsResult targetsResult = targetParser.Targets(project);
            IEnumerable <CompilerInformation> compilers = targetsResult.ValidTargets
                                                          .Select(sdkRepository.GetSdk)
                                                          .Where(sdk => sdk != null)
                                                          .Distinct()
                                                          .Select(sdk => sdk.CompilerInformation);

            return(new CommandResult(0,
                                     new CompilerSpecificationCommandResult(
                                         compilers.Select(c => new CompilerSpecificationResult(c.CompilerPath,
                                                                                               "cpp",
                                                                                               c.Sysroot,
                                                                                               c.Flags,
                                                                                               c.IncludePaths.Select(p => new Path(p)),
                                                                                               c.Makros.Select(m => new CompilerMacroResult(m.Name, m.Value))))),
                                     targetsResult.Errors));
        }
Ejemplo n.º 7
0
        protected override CommandResult ExecuteDetailed(GetSdksCommandArgs args, ChangeObservable observable)
        {
            string[] sdks;
            IEnumerable <Exception> exceptions = Enumerable.Empty <Exception>();

            if (args.All)
            {
                sdks = sdkRepository.Sdks.Select(s => s.Root.FullName).ToArray();
            }
            else
            {
                ProjectEntity project       = ProjectEntity.Decorate(entityFactory.Create(Guid.NewGuid().ToByteString(), args).Root);
                TargetsResult targetsResult = targetParser.Targets(project);
                sdks = targetsResult.ValidTargets.Select(sdkRepository.GetSdk).Distinct()
                       .Select(s => s.Root.FullName).ToArray();

                exceptions = targetsResult.Errors;
            }

            return(new CommandResult(0, new SdksCommandResult(sdks.Select(s => new Path(s))), exceptions));
        }