GooglePlayServices.CommandLineDialog.RunAsync C# (CSharp) Method

RunAsync() public method

Asynchronously execute a command line tool in this window, showing progress and finally calling the specified delegate on completion from the main / UI thread.
public RunAsync ( string toolPath, string arguments, CommandLine completionDelegate, string workingDirectory = null, string>.Dictionary envVars = null, CommandLine ioHandler = null, int maxProgressLines ) : void
toolPath string Tool to execute.
arguments string String to pass to the tools' command line.
completionDelegate CommandLine Called when the tool completes.
workingDirectory string Directory to execute the tool from.
envVars string>.Dictionary
ioHandler CommandLine Allows a caller to provide interactive input and also handle /// both output and error streams from a single delegate.
maxProgressLines int Specifies the number of lines output by the /// command line that results in a 100% value on a progress bar.
return void
        public void RunAsync(
            string toolPath, string arguments,
            CommandLine.CompletionHandler completionDelegate,
            string workingDirectory = null, Dictionary<string, string> envVars = null,
            CommandLine.IOHandler ioHandler = null, int maxProgressLines = 0)
        {
            CommandLineDialog.ProgressReporter reporter = new CommandLineDialog.ProgressReporter();
            reporter.maxProgressLines = maxProgressLines;
            // Call the reporter from the UI thread from this window.
            UpdateEvent += reporter.Update;
            // Connect the user's delegate to the reporter's completion method.
            reporter.Complete += completionDelegate;
            // Connect the caller's IoHandler delegate to the reporter.
            reporter.DataHandler += ioHandler;
            // Disconnect the reporter when the command completes.
            CommandLine.CompletionHandler reporterUpdateDisable =
                (CommandLine.Result unusedResult) => { this.UpdateEvent -= reporter.Update; };
            reporter.Complete += reporterUpdateDisable;
            CommandLine.RunAsync(toolPath, arguments, reporter.CommandLineToolCompletion,
                                 workingDirectory: workingDirectory, envVars: envVars,
                                 ioHandler: reporter.AggregateLine);
        }

Usage Example

Example #1
0
        // Handles the platform specific differences of executing the generate gradle script, and
        // creating the dialog responsible for showing the progress of the execution.
        // Any errors are reported to the console as well.
        /// <param name="args">Arguments to be passed to the generate gradle script tool.</param>
        private static void RunGenGradleScript(string args)
        {
            // b/35663224 Combine execute-python-exe which handles the windows logic.
            bool onWindows =
                UnityEngine.Application.platform == UnityEngine.RuntimePlatform.WindowsEditor;
            string command = "\"" + Path.Combine(GRADLE_SCRIPT_LOCATION,
                                                 onWindows ? GENERATE_GRADLE_EXE_WINDOWS : GENERATE_GRADLE_EXE_GENERIC) + "\"";

            if (!onWindows)
            {
                args    = command + args;
                command = CommandLine.FindExecutable("python");
            }

            CommandLineDialog window = CommandLineDialog.CreateCommandLineDialog(
                "Resolving Jars.");

            window.modal              = false;
            window.summaryText        = "Generating and running Gradle prebuild.";
            window.progressTitle      = window.summaryText;
            window.autoScrollToBottom = true;
            window.RunAsync(
                command, args,
                (result) => {
                if (result.exitCode != 0)
                {
                    Debug.LogError("Error somewhere in the process of creating the gradle build, " +
                                   "executing it, and copying the outputs.\n" +
                                   "This will break dependency resolution and your build will not run.\n" +
                                   "See the output below for possible gradle build errors. The most likely " +
                                   "cases are: an invalid bundleID (which you can correct in the Android " +
                                   "Player Settings), or a failure to determine the Android SDK platform " +
                                   "and build tools verison (you can verify that you have a valid android " +
                                   "SDK path in the Unity preferences.\n" +
                                   "If you're not able to diagnose the error, please report a bug at: " +
                                   "https://github.com/googlesamples/unity-jar-resolver/issues" +
                                   "A possible work-around is to turn off the " +
                                   "\"Gradle Prebuild\" from the Jar Resolver Settings.\n\n" +
                                   "Error (" + result.exitCode + "):\n" + result.stdout + result.stderr);
                    window.bodyText += "\n\nResolution Failed.";
                }
                else
                {
                    window.bodyText += "\n\nResolution Complete.";
                }
                window.noText = "Close";
                // After adding the button we need to scroll down a little more.
                window.scrollPosition.y = Mathf.Infinity;
                window.Repaint();
                window.buttonClicked = (TextAreaDialog dialog) => {
                    if (!dialog.result)
                    {
                        window.Close();
                    }
                };
            },
                maxProgressLines: 50);
            window.Show();
        }
All Usage Examples Of GooglePlayServices.CommandLineDialog::RunAsync