示例#1
0
        /// <summary>
        /// Executes an arbitrary command line and return its output.
        /// </summary>
        /// <param name="client">The Kudu client.</param>
        /// <param name="command">The command to execute.</param>
        /// <param name="directory">The remote directory to execute command in.</param>
        /// <param name="arguments">The arguments.</param>
        /// <returns><see ref="KuduCommandResult"/></returns>
        /// <example>
        /// <code>
        /// #addin nuget:?package=Cake.Kudu.Client
        ///
        /// string  baseUri     = EnvironmentVariable("KUDU_CLIENT_BASEURI"),
        ///         userName    = EnvironmentVariable("KUDU_CLIENT_USERNAME"),
        ///         password    = EnvironmentVariable("KUDU_CLIENT_PASSWORD");
        ///
        /// IKuduClient kuduClient = KuduClient(
        ///     baseUri,
        ///     userName,
        ///     password);
        ///
        /// IKuduCommandResult commandResult = kuduClient.ExecuteCommand(
        ///     "echo",
        ///     "D:/home/site/wwwroot",
        ///     "hello");
        ///
        /// Information(
        ///     "Output:\r\n{0}\r\nError:\r\n{1}\r\nExitCode: {2}",
        ///     commandResult.Output,
        ///     commandResult.Error,
        ///     commandResult.ExitCode);
        /// </code>
        /// </example>
        public static IKuduCommandResult ExecuteCommand(
            this IKuduClient client,
            string command,
            string directory,
            ProcessArgumentBuilder arguments = null)
        {
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            if (string.IsNullOrWhiteSpace(command))
            {
                throw new ArgumentNullException(nameof(command));
            }

            if (string.IsNullOrWhiteSpace(directory))
            {
                throw new ArgumentNullException(nameof(directory));
            }

            var commandArgs = new ProcessArgumentBuilder().AppendQuoted(command);

            arguments?.CopyTo(commandArgs);

            var param = new
            {
                command = commandArgs.Render(),
                dir     = directory,
            };

            return(client.HttpPostJsonObject <object, KuduCommandResult>(
                       "/api/command",
                       param));
        }
示例#2
0
        private ProcessArgumentBuilder GetArguments(string project, ProcessArgumentBuilder arguments, DotNetCoreEfDatabaseUpdateSettings settings)
        {
            ProcessArgumentBuilder builder = CreateArgumentBuilder(settings);

            builder.Append("ef");
            builder.Append("database");
            builder.Append("update");

            settings.SetProject(project);

            if (!string.IsNullOrWhiteSpace(settings.Migration))
            {
                builder.AppendQuoted(settings.Migration);
            }

            if (!string.IsNullOrEmpty(settings.Context))
            {
                builder.Append("--context");
                builder.AppendQuoted(settings.Context);
            }

            // Arguments
            if (!arguments.IsNullOrEmpty())
            {
                arguments.CopyTo(builder);
            }

            return(builder);
        }
        protected ProcessArgumentBuilder GetArguments(TSettings settings, ProcessArgumentBuilder arguments = null)
        {
            var builder = CreateArgumentBuilder(settings);

            arguments?.CopyTo(builder);
            builder.Append("--xml");

            return(builder);
        }
示例#4
0
        protected ProcessArgumentBuilder GetArguments(TSettings settings, ProcessArgumentBuilder arguments = null)
        {
            var builder = CreateArgumentBuilder(settings);

            arguments?.CopyTo(builder);
            builder.Append("--machinereadable");
            builder.Append("--fieldseparator={0}", FIELD_SEPARATOR_STRING);

            return(builder);
        }
示例#5
0
        private ProcessArgumentBuilder GetArguments(string project, ProcessArgumentBuilder arguments, DotNetCoreRunSettings settings)
        {
            var builder = CreateArgumentBuilder(settings);

            builder.Append("run");

            // Specific path?
            if (project != null)
            {
                builder.Append("--project");
                builder.AppendQuoted(project);
            }

            // Framework
            if (!string.IsNullOrEmpty(settings.Framework))
            {
                builder.Append("--framework");
                builder.Append(settings.Framework);
            }

            // Configuration
            if (!string.IsNullOrEmpty(settings.Configuration))
            {
                builder.Append("--configuration");
                builder.Append(settings.Configuration);
            }

            // No Restore
            if (settings.NoRestore)
            {
                builder.Append("--no-restore");
            }

            // No Build
            if (settings.NoBuild)
            {
                builder.Append("--no-build");
            }

            // Runtime
            if (!string.IsNullOrEmpty(settings.Runtime))
            {
                builder.Append("--runtime");
                builder.Append(settings.Runtime);
            }

            // Arguments
            if (!arguments.IsNullOrEmpty())
            {
                builder.Append("--");
                arguments.CopyTo(builder);
            }

            return(builder);
        }
        /// <summary>
        /// Copies the arguments to the specified builder.
        /// </summary>
        /// <param name="toCopy">To copy.</param>
        /// <param name="builder">The builder.</param>
        /// <returns></returns>
        protected ProcessArgumentBuilder CopyArgumentsTo(ProcessArgumentBuilder toCopy, ProcessArgumentBuilder builder = null)
        {
            if (builder == null)
            {
                builder = new ProcessArgumentBuilder();
            }

            toCopy.CopyTo(builder);

            return(builder);
        }
        private ProcessArgumentBuilder GetArguments(string project, ProcessArgumentBuilder arguments, DotNetCoreEfMigrationScriptSettings settings)
        {
            ProcessArgumentBuilder builder          = new ProcessArgumentBuilder();
            ProcessArgumentBuilder builderArguments = CreateArgumentBuilder(settings);

            builder.Append("ef");
            builder.Append("migrations");
            builder.Append("script");

            settings.SetProject(project);

            if (!string.IsNullOrWhiteSpace(settings.From))
            {
                builder.AppendQuoted(settings.From);
            }

            if (!string.IsNullOrWhiteSpace(settings.To))
            {
                builder.AppendQuoted(settings.To);
            }
            builder.AppendBuilder(builderArguments);

            if (!string.IsNullOrWhiteSpace(settings.Output))
            {
                builder.Append("--output");
                builder.AppendQuoted(settings.Output);
            }

            if (!string.IsNullOrEmpty(settings.Context))
            {
                builder.Append("--context");
                builder.AppendQuoted(settings.Context);
            }

            if (settings.Idempotent)
            {
                builder.Append("--idempotent");
            }

            if (settings.NoBuild)
            {
                builder.Append("--no-build");
            }

            // Arguments
            if (!arguments.IsNullOrEmpty())
            {
                arguments.CopyTo(builder);
            }

            return(builder);
        }
示例#8
0
        protected ProcessArgumentBuilder GetArguments(TSettings settings, ProcessArgumentBuilder arguments = null)
        {
            var builder = CreateArgumentBuilder(settings);

            arguments?.CopyTo(builder);

            foreach (var formatString in FormatStrings)
            {
                builder.Append("--{0}=\"{1}\"", formatString.Key, formatString.Value);
            }

            return(builder);
        }
示例#9
0
        private ProcessArgumentBuilder GetArguments(string command, ProcessArgumentBuilder arguments, DotNetCoreToolSettings settings)
        {
            var builder = CreateArgumentBuilder(settings);

            builder.Append(command);

            // Arguments
            if (!arguments.IsNullOrEmpty())
            {
                arguments.CopyTo(builder);
            }

            return(builder);
        }
示例#10
0
        private ProcessArgumentBuilder GetArguments(FilePath assemblyPath, ProcessArgumentBuilder arguments, DotNetCoreSettings settings)
        {
            var builder = CreateArgumentBuilder(settings);

            assemblyPath = assemblyPath.IsRelative ? assemblyPath.MakeAbsolute(_environment) : assemblyPath;
            builder.Append(assemblyPath.FullPath);

            if (!arguments.IsNullOrEmpty())
            {
                arguments.CopyTo(builder);
            }

            return(builder);
        }
        private ProcessArgumentBuilder GetArguments(string project, ProcessArgumentBuilder arguments, DotNetCoreEfMigrationListerSettings settings)
        {
            ProcessArgumentBuilder builder          = new ProcessArgumentBuilder();
            ProcessArgumentBuilder builderArguments = CreateArgumentBuilder(settings);

            builder.Append("ef");
            builder.Append("migrations");
            builder.Append("list");

            settings.SetProject(project);

            if (!string.IsNullOrWhiteSpace(settings.Project))
            {
                builder.Append("--project");
                builder.AppendQuoted(settings.Project);
            }

            if (!string.IsNullOrWhiteSpace(settings.StartupProject))
            {
                builder.Append("--startup-project");
                builder.AppendQuoted(settings.StartupProject);
            }

            if (settings.PrefixOutput)
            {
                builder.Append("--prefix-output");
            }

            if (settings.NoBuild)
            {
                builder.Append("--no-build");
            }

            // return json output
            builder.Append("--json");

            // Arguments
            if (!arguments.IsNullOrEmpty())
            {
                arguments.CopyTo(builder);
            }

            return(builder);
        }
示例#12
0
        private ProcessArgumentBuilder GetArguments(string project, ProcessArgumentBuilder arguments, DotNetCoreEfMigrationAddSettings settings)
        {
            ProcessArgumentBuilder builder          = new ProcessArgumentBuilder();
            ProcessArgumentBuilder builderArguments = CreateArgumentBuilder(settings);

            builder.Append("ef");
            builder.Append("migrations");
            builder.Append("add");

            settings.SetProject(project);

            if (!string.IsNullOrWhiteSpace(settings.Migration))
            {
                builder.AppendQuoted(settings.Migration);
            }

            builder.AppendBuilder(builderArguments);

            if (!string.IsNullOrWhiteSpace(settings.OutputDir))
            {
                builder.Append("--output-dir");
                builder.AppendQuoted(settings.OutputDir);
            }

            if (!string.IsNullOrEmpty(settings.Context))
            {
                builder.Append("--context");
                builder.AppendQuoted(settings.Context);
            }

            if (settings.Json)
            {
                builder.Append("--json");
            }

            // Arguments
            if (!arguments.IsNullOrEmpty())
            {
                arguments.CopyTo(builder);
            }

            return(builder);
        }
示例#13
0
        private ProcessArgumentBuilder GetArguments(FilePath assemblyPath, ProcessArgumentBuilder arguments, DotNetCoreExecuteSettings settings)
        {
            var builder = CreateArgumentBuilder(settings);

            if (!string.IsNullOrWhiteSpace(settings.FrameworkVersion))
            {
                builder.Append("--fx-version");
                builder.Append(settings.FrameworkVersion);
            }

            builder.AppendQuoted(assemblyPath.MakeAbsolute(_environment).FullPath);

            if (!arguments.IsNullOrEmpty())
            {
                arguments.CopyTo(builder);
            }

            return(builder);
        }
示例#14
0
        public static void SetContextSettings(this ProcessArgumentBuilder builder, ProcessArgumentBuilder arguments, string project, DotNetCoreEfContextSettings settings)
        {
            settings.SetProject(project);

            if (!string.IsNullOrEmpty(settings.Context))
            {
                builder.Append("--context");
                builder.AppendQuoted(settings.Context);
            }

            if (settings.Force)
            {
                builder.Append("--force");
            }

            // Arguments
            if (!arguments.IsNullOrEmpty())
            {
                arguments.CopyTo(builder);
            }
        }
示例#15
0
        private ProcessArgumentBuilder GetArguments(string project, ProcessArgumentBuilder arguments, DotNetCoreTestSettings settings)
        {
            var builder = CreateArgumentBuilder(settings);

            builder.Append("test");

            // Specific path?
            if (project != null)
            {
                builder.AppendQuoted(project);
            }

            // Settings
            if (settings.Settings != null)
            {
                builder.Append("--settings");
                builder.AppendQuoted(settings.Settings.MakeAbsolute(_environment).FullPath);
            }

            // Filter
            if (!string.IsNullOrWhiteSpace(settings.Filter))
            {
                builder.Append("--filter");
                builder.AppendQuoted(settings.Filter);
            }

            // Settings
            if (settings.TestAdapterPath != null)
            {
                builder.Append("--test-adapter-path");
                builder.AppendQuoted(settings.TestAdapterPath.MakeAbsolute(_environment).FullPath);
            }

            // Logger
#pragma warning disable CS0618
            if (!string.IsNullOrWhiteSpace(settings.Logger))
            {
                builder.Append("--logger");
                builder.AppendQuoted(settings.Logger);
            }
#pragma warning restore CS0618

            // Loggers
            if (settings.Loggers != null)
            {
                foreach (var logger in settings.Loggers)
                {
                    builder.Append("--logger");
                    builder.AppendQuoted(logger);
                }
            }

            // Output directory
            if (settings.OutputDirectory != null)
            {
                builder.Append("--output");
                builder.AppendQuoted(settings.OutputDirectory.MakeAbsolute(_environment).FullPath);
            }

            // Frameworks
            if (!string.IsNullOrEmpty(settings.Framework))
            {
                builder.Append("--framework");
                builder.Append(settings.Framework);
            }

            // Configuration
            if (!string.IsNullOrEmpty(settings.Configuration))
            {
                builder.Append("--configuration");
                builder.Append(settings.Configuration);
            }

            // Collectors
            if (settings.Collectors != null)
            {
                foreach (var collector in settings.Collectors)
                {
                    builder.Append("--collect");
                    builder.AppendQuoted(collector);
                }
            }

            // Diagnostic file
            if (settings.DiagnosticFile != null)
            {
                builder.Append("--diag");
                builder.AppendQuoted(settings.DiagnosticFile.MakeAbsolute(_environment).FullPath);
            }

            // No Build
            if (settings.NoBuild)
            {
                builder.Append("--no-build");
            }

            // No Restore
            if (settings.NoRestore)
            {
                builder.Append("--no-restore");
            }

            // No Logo
            if (settings.NoLogo)
            {
                builder.Append("--nologo");
            }

            if (settings.ResultsDirectory != null)
            {
                builder.Append("--results-directory");
                builder.AppendQuoted(settings.ResultsDirectory.MakeAbsolute(_environment).FullPath);
            }

            if (settings.VSTestReportPath != null)
            {
                builder.AppendSwitchQuoted($"--logger trx;LogFileName", "=", settings.VSTestReportPath.MakeAbsolute(_environment).FullPath);
            }

            if (!string.IsNullOrEmpty(settings.Runtime))
            {
                builder.Append("--runtime");
                builder.Append(settings.Runtime);
            }

            // Sources
            if (settings.Sources != null)
            {
                foreach (var source in settings.Sources)
                {
                    builder.Append("--source");
                    builder.AppendQuoted(source);
                }
            }

            // Blame
            if (settings.Blame)
            {
                builder.Append("--blame");
            }

            if (!arguments.IsNullOrEmpty())
            {
                builder.Append("--");
                arguments.CopyTo(builder);
            }

            return(builder);
        }
示例#16
0
        private ProcessArgumentBuilder GetArguments(string project, ProcessArgumentBuilder arguments, DotNetCoreRunSettings settings)
        {
            var builder = CreateArgumentBuilder(settings);

            builder.Append("run");

            // Specific path?
            if (project != null)
            {
                builder.Append("--project");
                builder.AppendQuoted(project);
            }

            // Framework
            if (!string.IsNullOrEmpty(settings.Framework))
            {
                builder.Append("--framework");
                builder.Append(settings.Framework);
            }

            // Configuration
            if (!string.IsNullOrEmpty(settings.Configuration))
            {
                builder.Append("--configuration");
                builder.Append(settings.Configuration);
            }

            // No Restore
            if (settings.NoRestore)
            {
                builder.Append("--no-restore");
            }

            // No Build
            if (settings.NoBuild)
            {
                builder.Append("--no-build");
            }

            // Runtime
            if (!string.IsNullOrEmpty(settings.Runtime))
            {
                builder.Append("--runtime");
                builder.Append(settings.Runtime);
            }

            // Sources
            if (settings.Sources != null)
            {
                foreach (var source in settings.Sources)
                {
                    builder.Append("--source");
                    builder.AppendQuoted(source);
                }
            }

            // Roll Forward Policy
            if (!(settings.RollForward is null))
            {
                builder.Append("--roll-forward");
                builder.Append(settings.RollForward.Value.ToString("F"));
            }

            // Arguments
            if (!arguments.IsNullOrEmpty())
            {
                builder.Append("--");
                arguments.CopyTo(builder);
            }

            return(builder);
        }