Exemplo n.º 1
0
        public override int Execute([NotNull] CommandContext context, [NotNull] SdkListCommandSettings settings)
        {
            try
            {
                var m = new AndroidSdk.SdkManager(settings?.Home);

                var sdkList = m.List();

                if (settings.Available || settings.Installed)
                {
                    if (!settings.Available)
                    {
                        sdkList.AvailablePackages.Clear();
                    }
                    if (!settings.Installed)
                    {
                        sdkList.InstalledPackages.Clear();
                    }
                }

                if (settings.Format == OutputFormat.None)
                {
                    if (sdkList.AvailablePackages.Any())
                    {
                        var rule = new Rule("Available Packages:");
                        rule.Centered();
                        AnsiConsole.Render(rule);

                        OutputHelper.OutputTable(sdkList.AvailablePackages, new[] { "Package", "Version", "Description" }, i => new[] { i.Path, i.Version, i.Description });
                    }

                    if (sdkList.InstalledPackages.Any())
                    {
                        var rule = new Rule("Installed Packages:");
                        rule.Centered();
                        AnsiConsole.Render(rule);

                        OutputHelper.OutputTable(
                            sdkList.InstalledPackages,
                            new[] { "Package", "Version", "Description", "Location" },
                            i => new[] { i.Path, i.Version, i.Description, i.Location });
                    }
                }
                else
                {
                    OutputHelper.Output <AndroidSdk.SdkManager.SdkManagerList>(sdkList, settings.Format);
                }
            }
            catch (SdkToolFailedExitException sdkEx)
            {
                Program.WriteException(sdkEx);
                return(1);
            }

            return(0);
        }
Exemplo n.º 2
0
        public override Task <Diagonosis> Examine(PatientHistory history)
        {
            try
            {
                var homes = AndroidSdk.AndroidSdkManager.FindHome();

                foreach (var home in homes)
                {
                    try
                    {
                        var sdk = new AndroidSdk.SdkManager(home);

                        var v = sdk.GetVersion();

                        if (v != default)
                        {
                            if (SelectedHome == default)
                            {
                                SelectedHome   = home;
                                SdkManagerPath = sdk.FindToolPath(SelectedHome);

                                if (SdkManagerPath != null)
                                {
                                    Util.SetDoctorEnvironmentVariable("ANDROID_SDK_ROOT", SdkManagerPath.FullName);
                                    Util.SetDoctorEnvironmentVariable("ANDROID_HOME", SdkManagerPath.FullName);
                                }

                                ReportStatus($"{home.FullName} ({v}) installed.", Status.Ok);
                            }
                            else
                            {
                                ReportStatus($"{home.FullName} ({v}) also installed.", Status.Ok);
                            }
                        }
                        else
                        {
                            ReportStatus($"{home.FullName} invalid.", Status.Warning);
                        }
                    }
                    catch
                    {
                        ReportStatus($"{home.FullName} invalid.", Status.Warning);
                    }
                }

                if (SelectedHome != default)
                {
                    return(Task.FromResult(Diagonosis.Ok(this)));
                }
            } catch { }

            return(Task.FromResult(
                       new Diagonosis(
                           Status.Error,
                           this,
                           "Failed to find Android SDK.",
                           new Prescription("Please Install the Android SDK Manager.  For more information see: https://aka.ms/dotnet-androidsdk-help"))));             //,
            //new ActionRemedy((r, ct) =>
            //{
            //	if (SelectedHome != null)
            //	{
            //		if (SelectedHome.Exists)
            //		{
            //			try { SelectedHome.Delete(true); }
            //			catch (UnauthorizedAccessException)
            //			{
            //				throw new Exception("Fix requires running with adminstrator privileges.  Try opening a terminal as administrator and running maui-doctor again.");
            //			}
            //			catch (Exception ex)
            //			{
            //				throw new Exception("Failed to delete existing Android SDK: " + ex.Message);
            //			}

            //			try { SelectedHome.Create(); }
            //			catch { }
            //		}
            //	}
            //	else
            //	{
            //		SelectedHome = new DirectoryInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Android", "android-sdk"));
            //		try { SelectedHome.Create(); }
            //		catch { }
            //	}

            //	var sdk = new AndroidSdk.AndroidSdkManager(SelectedHome);

            //	sdk.Acquire();

            //	return Task.CompletedTask;
            //}))));
        }