Ejemplo n.º 1
0
        public void Add(FilePath projectPath, string packageId)
        {
            if (packageId == null)
            {
                throw new ArgumentNullException(nameof(packageId));
            }

            var argsToPassToRestore = new List <string>
            {
                projectPath.Value,
                "package",
                packageId,
                "--no-restore"
            };

            var command = new DotNetCommandFactory(alwaysRunOutOfProc: true)
                          .Create(
                "add",
                argsToPassToRestore)
                          .CaptureStdOut()
                          .CaptureStdErr();

            var result = command.Execute();

            if (result.ExitCode != 0)
            {
                throw new PackageObtainException("Failed to add package. " +
                                                 $"{Environment.NewLine}WorkingDirectory: " +
                                                 result.StartInfo.WorkingDirectory +
                                                 $"{Environment.NewLine}Arguments: " +
                                                 result.StartInfo.Arguments +
                                                 $"{Environment.NewLine}Output: " +
                                                 result.StdErr + result.StdOut);
            }
        }
Ejemplo n.º 2
0
        public static int Run(string[] args)
        {
            DebugHelper.HandleDebugSwitch(ref args);

            try
            {
                var commandFactory    = new DotNetCommandFactory();
                var scriptRunner      = new ScriptRunner();
                var managedCompiler   = new ManagedCompiler(scriptRunner, commandFactory);
                var nativeCompiler    = new NativeCompiler();
                var compilationDriver = new CompilationDriver(managedCompiler, nativeCompiler);

                var compilerCommandArgs = new CompilerCommandApp("dotnet compile", ".NET Compiler", "Compiler for the .NET Platform");

                return(compilerCommandArgs.Execute(compilationDriver.Compile, args));
            }
            catch (Exception ex)
            {
#if DEBUG
                Console.Error.WriteLine(ex);
#else
                Console.Error.WriteLine(ex.Message);
#endif
                return(1);
            }
        }
Ejemplo n.º 3
0
        public DotNetProjectBuilder(BuildCommandApp args) : base(args.ShouldSkipDependencies)
        {
            _args = args;

            _preconditionManager = new IncrementalPreconditionManager(
                args.ShouldPrintIncrementalPreconditions,
                args.ShouldNotUseIncrementality,
                args.ShouldSkipDependencies);

            _compilerIOManager = new CompilerIOManager(
                args.ConfigValue,
                args.OutputValue,
                args.BuildBasePathValue,
                args.GetRuntimes(),
                args.Workspace
                );

            _incrementalManager = new IncrementalManager(
                this,
                _compilerIOManager,
                _preconditionManager,
                _args.ShouldSkipDependencies,
                _args.ConfigValue,
                _args.BuildBasePathValue,
                _args.OutputValue,
                BuildIncrementalArgumentList(_args)
                );

            _scriptRunner = new ScriptRunner();

            _commandFactory = new DotNetCommandFactory();
        }
        public void Add(FilePath projectPath, string packageId)
        {
            if (packageId == null)
            {
                throw new ArgumentNullException(nameof(packageId));
            }

            var argsToPassToRestore = new List <string>
            {
                projectPath.Value,
                "package",
                packageId,
                "--no-restore"
            };

            var command = new DotNetCommandFactory(alwaysRunOutOfProc: true)
                          .Create(
                "add",
                argsToPassToRestore)
                          .CaptureStdOut()
                          .CaptureStdErr();

            var result = command.Execute();

            if (result.ExitCode != 0)
            {
                throw new PackageObtainException(
                          string.Format(
                              LocalizableStrings.FailedToAddPackage,
                              result.StartInfo.WorkingDirectory, result.StartInfo.Arguments, result.StdErr, result.StdOut));
            }
        }
Ejemplo n.º 5
0
        public DotNetProjectBuilder(BuildCommandApp args) : base(args.ShouldSkipDependencies)
        {
            _args = args;

            _preconditionManager = new IncrementalPreconditionManager(
                args.ShouldPrintIncrementalPreconditions,
                args.ShouldNotUseIncrementality,
                args.ShouldSkipDependencies);

            _compilerIOManager = new CompilerIOManager(
                args.ConfigValue,
                args.OutputValue,
                args.BuildBasePathValue,
                args.GetRuntimes(),
                args.Workspace
                );

            _incrementalManager = new IncrementalManager(
                this,
                _compilerIOManager,
                _preconditionManager,
                _args.ShouldSkipDependencies,
                _args.ConfigValue,
                _args.BuildBasePathValue,
                _args.OutputValue,
                BuildIncrementalArgumentList(_args)
                );

            _scriptRunner = new ScriptRunner();

            _commandFactory = new DotNetCommandFactory();
        }
Ejemplo n.º 6
0
        public void Restore(
            FilePath project,
            DirectoryPath assetJsonOutput,
            FilePath?nugetConfig = null,
            string source        = null,
            string verbosity     = null)
        {
            var argsToPassToRestore = new List <string>();

            argsToPassToRestore.Add(project.Value);
            if (nugetConfig != null)
            {
                argsToPassToRestore.Add("--configfile");
                argsToPassToRestore.Add(nugetConfig.Value.Value);
            }

            if (source != null)
            {
                argsToPassToRestore.Add("--source");
                argsToPassToRestore.Add(source);
            }

            argsToPassToRestore.AddRange(new List <string>
            {
                "--runtime",
                AnyRid,
                $"/p:BaseIntermediateOutputPath={assetJsonOutput.ToQuotedString()}"
            });

            argsToPassToRestore.Add($"/verbosity:{verbosity ?? "quiet"}");

            var command = new DotNetCommandFactory(alwaysRunOutOfProc: true)
                          .Create("restore", argsToPassToRestore);

            if (_reporter != null)
            {
                command = command
                          .OnOutputLine((line) => _reporter.WriteLine(line))
                          .OnErrorLine((line) => _reporter.WriteLine(line));
            }

            var result = command.Execute();

            if (result.ExitCode != 0)
            {
                throw new ToolPackageException(LocalizableStrings.ToolInstallationRestoreFailed);
            }
        }
        private void RunCommand(string commandToExecute, IEnumerable <string> args, string workingDirectory)
        {
            var command = new DotNetCommandFactory()
                          .Create(commandToExecute, args)
                          .WorkingDirectory(workingDirectory)
                          .CaptureStdOut()
                          .CaptureStdErr();

            var commandResult = command.Execute();

            if (commandResult.ExitCode != 0)
            {
                MigrationTrace.Instance.WriteLine(commandResult.StdOut);
                MigrationTrace.Instance.WriteLine(commandResult.StdErr);

                throw new Exception($"Failed to run {commandToExecute} in directory: {workingDirectory}");
            }
        }
Ejemplo n.º 8
0
        public void Restore(FilePath project,
                            PackageLocation packageLocation,
                            string verbosity = null)
        {
            var argsToPassToRestore = new List <string>();

            argsToPassToRestore.Add(project.Value);
            if (packageLocation.NugetConfig != null)
            {
                argsToPassToRestore.Add("--configfile");
                argsToPassToRestore.Add(packageLocation.NugetConfig.Value.Value);
            }

            argsToPassToRestore.AddRange(new List <string>
            {
                "--runtime",
                Constants.AnyRid
            });

            argsToPassToRestore.Add($"--verbosity:{verbosity ?? GetDefaultVerbosity()}");

            if (_additionalRestoreArguments != null)
            {
                argsToPassToRestore.AddRange(_additionalRestoreArguments.Where(arg => !arg.StartsWith("-verbosity")));
            }

            var command = new DotNetCommandFactory(alwaysRunOutOfProc: true)
                          .Create("restore", argsToPassToRestore);

            if (verbosity == null || _forceOutputRedirection)
            {
                command = command
                          .OnOutputLine(line => WriteLine(_reporter, line, project))
                          .OnErrorLine(line => WriteLine(_errorReporter, line, project));
            }

            var result = command.Execute();

            if (result.ExitCode != 0)
            {
                throw new ToolPackageException(LocalizableStrings.ToolInstallationRestoreFailed);
            }
        }
Ejemplo n.º 9
0
        public void Restore(
            FilePath projectPath,
            DirectoryPath assetJsonOutput,
            FilePath?nugetconfig,
            string source = null)
        {
            var argsToPassToRestore = new List <string>();

            argsToPassToRestore.Add(projectPath.Value);
            if (nugetconfig != null)
            {
                argsToPassToRestore.Add("--configfile");
                argsToPassToRestore.Add(nugetconfig.Value.Value);
            }

            if (source != null)
            {
                argsToPassToRestore.Add("--source");
                argsToPassToRestore.Add(source);
            }

            argsToPassToRestore.AddRange(new List <string>
            {
                "--runtime",
                RuntimeEnvironment.GetRuntimeIdentifier(),
                $"/p:BaseIntermediateOutputPath={assetJsonOutput.ToQuotedString()}"
            });

            var command = new DotNetCommandFactory(alwaysRunOutOfProc: true)
                          .Create("restore", argsToPassToRestore)
                          .CaptureStdOut()
                          .CaptureStdErr();

            var result = command.Execute();

            if (result.ExitCode != 0)
            {
                throw new PackageObtainException(
                          string.Format(
                              LocalizableStrings.FailedToRestorePackage,
                              result.StartInfo.WorkingDirectory, result.StartInfo.Arguments, result.StdErr, result.StdOut));
            }
        }
Ejemplo n.º 10
0
        private void RunCommand(string commandToExecute, IEnumerable <string> args, string workingDirectory)
        {
            var command = new DotNetCommandFactory()
                          .Create(commandToExecute, args)
                          .WorkingDirectory(workingDirectory)
                          .CaptureStdOut()
                          .CaptureStdErr();

            var commandResult = command.Execute();

            if (commandResult.ExitCode != 0)
            {
                string argList = string.Join(", ", args);
                throw new GracefulException($"Failed to run {commandToExecute} with " +
                                            $"args: {argList} ... " +
                                            $"workingDirectory = {workingDirectory}, " +
                                            $"StdOut = {commandResult.StdOut}, " +
                                            $"StdErr = {commandResult.StdErr}");
            }
        }
Ejemplo n.º 11
0
        public void Restore(FilePath project,
                            FilePath?nugetConfig = null,
                            string verbosity     = null)
        {
            var argsToPassToRestore = new List <string>();

            argsToPassToRestore.Add(project.Value);
            if (nugetConfig != null)
            {
                argsToPassToRestore.Add("--configfile");
                argsToPassToRestore.Add(nugetConfig.Value.Value);
            }

            argsToPassToRestore.AddRange(new List <string>
            {
                "--runtime",
                AnyRid
            });

            argsToPassToRestore.Add($"-verbosity:{verbosity ?? "quiet"}");

            var command = new DotNetCommandFactory(alwaysRunOutOfProc: true)
                          .Create("restore", argsToPassToRestore);

            if (verbosity == null || _forceOutputRedirection)
            {
                command = command
                          .OnOutputLine(line => WriteLine(_reporter, line, project))
                          .OnErrorLine(line => WriteLine(_errorReporter, line, project));
            }

            var result = command.Execute();

            if (result.ExitCode != 0)
            {
                throw new ToolPackageException(LocalizableStrings.ToolInstallationRestoreFailed);
            }
        }
Ejemplo n.º 12
0
        internal override int DoRunTests(ProjectContext projectContext, DotnetTestParams dotnetTestParams)
        {
            try
            {
                var commandFactory =
                    new ProjectDependenciesCommandFactory(
                        projectContext.TargetFramework,
                        dotnetTestParams.Config,
                        dotnetTestParams.Output,
                        dotnetTestParams.BuildBasePath,
                        projectContext.ProjectDirectory);

                return(commandFactory.Create(
                           GetCommandName(projectContext.ProjectFile.TestRunner),
                           GetCommandArgs(projectContext, dotnetTestParams),
                           projectContext.TargetFramework,
                           dotnetTestParams.Config)
                       .ForwardStdErr()
                       .ForwardStdOut()
                       .Execute()
                       .ExitCode);
            }
            catch (CommandUnknownException e)
            {
                var commandFactory =
                    new DotNetCommandFactory();

                return(commandFactory.Create(
                           GetDotNetCommandName(projectContext.ProjectFile.TestRunner),
                           GetCommandArgs(projectContext, dotnetTestParams),
                           projectContext.TargetFramework,
                           dotnetTestParams.Config)
                       .ForwardStdErr()
                       .ForwardStdOut()
                       .Execute()
                       .ExitCode);
            }
        }
Ejemplo n.º 13
0
        private static void ConfigureDotNetForFirstTimeUse(INuGetCacheSentinel nugetCacheSentinel)
        {
            using (PerfTrace.Current.CaptureTiming())
            {
                using (var nugetPackagesArchiver = new NuGetPackagesArchiver())
                {
                    var environmentProvider = new EnvironmentProvider();
                    var commandFactory = new DotNetCommandFactory();
                    var nugetCachePrimer = 
                        new NuGetCachePrimer(commandFactory, nugetPackagesArchiver, nugetCacheSentinel);
                    var dotnetConfigurer = new DotnetFirstTimeUseConfigurer(
                        nugetCachePrimer,
                        nugetCacheSentinel,
                        environmentProvider);

                    dotnetConfigurer.Configure();
                }
            }
        }