コード例 #1
0
        void RunScriptInternal(RunInitScriptParams message)
        {
            var version  = NuGet.Versioning.NuGetVersion.Parse(message.PackageVersion);
            var identity = new PackageIdentity(message.PackageId, version);

            var request = new ScriptExecutionRequest(
                message.ScriptPath,
                message.InstallPath,
                identity,
                null);

            try {
                InvokePowerShellInternal(
                    request.BuildCommand(),
                    request.BuildInput()
                    );
            } catch (Exception ex) {
                if (message.ThrowOnFailure)
                {
                    throw;
                }

                Log(LogLevel.Warning, ex.Message);
            }
        }
コード例 #2
0
        public async Task <bool> ExecuteAsync(
            PackageIdentity identity,
            string installPath,
            string relativeScriptPath,
            DotNetProject project,
            INuGetProjectContext nuGetProjectContext,
            bool throwOnFailure,
            CancellationToken token)
        {
            var scriptPath = Path.Combine(installPath, relativeScriptPath);

            if (File.Exists(scriptPath))
            {
                if (scriptPath.EndsWith(PowerShellScripts.Init, StringComparison.OrdinalIgnoreCase) &&
                    !TryMarkVisited(identity, PackageInitPS1State.FoundAndExecuted))
                {
                    return(true);
                }

                var consoleNuGetProjectContext = nuGetProjectContext as ConsoleHostNuGetProjectContext;
                if (consoleNuGetProjectContext != null &&
                    consoleNuGetProjectContext.IsExecutingPowerShellCommand)
                {
                    var message = new RunScriptParams {
                        ScriptPath     = scriptPath,
                        InstallPath    = installPath,
                        PackageId      = identity.Id,
                        PackageVersion = identity.Version.ToNormalizedString(),
                        Project        = project.CreateProjectInformation(),
                        ThrowOnFailure = throwOnFailure
                    };
                    await RunScriptWithRemotePowerShellConsoleHost(message, nuGetProjectContext, throwOnFailure, token);
                }
                else
                {
                    var logMessage = GettextCatalog.GetString("Executing script file '{0}'...", scriptPath);
                    nuGetProjectContext.Log(MessageLevel.Info, logMessage);

                    var message = new RunInitScriptParams {
                        ScriptPath     = scriptPath,
                        InstallPath    = installPath,
                        PackageId      = identity.Id,
                        PackageVersion = identity.Version.ToNormalizedString(),
                        ThrowOnFailure = throwOnFailure
                    };
                    await RunInitScriptWithRemotePowerShellConsoleHost(message, nuGetProjectContext, throwOnFailure, token);
                }

                return(true);
            }
            else
            {
                if (scriptPath.EndsWith(PowerShellScripts.Init, StringComparison.OrdinalIgnoreCase))
                {
                    TryMarkVisited(identity, PackageInitPS1State.NotFound);
                }
            }
            return(false);
        }
コード例 #3
0
 async Task RunInitScriptWithRemotePowerShellConsoleHost(
     RunInitScriptParams message,
     INuGetProjectContext nuGetProjectContext,
     bool throwOnFailure,
     CancellationToken token)
 {
     await RunScriptWithRemotePowerShellConsoleHost(Methods.RunInitScript, message, nuGetProjectContext, throwOnFailure, token);
 }