Exemplo n.º 1
0
        public static void Open(E.GitURL gitURL)
        {
            var window = GetWindow <GitURLConfig>(true);

            window.titleContent = new GUIContent("GitURLConfig");
            window.gitURL       = gitURL;
        }
        public void GUIInstallButton(E.GitURL gitURL)
        {
            var(rev, hash) = Helper.GetLockData(gitURL.packageName);
            //if( rev == string.Empty ) return;

            Tags[] tags = null;
            var    read = Helper.ReadWebResponseToFile(
                Helper.ParseURL(gitURL.url),
                "tags",
                (content) => tags = JsonHelper.FromJson <Tags>("{\"Items\":" + content + "}"));

            if (!read)
            {
                EditorGUILayout.HelpBox("\"tags.json\" Not Found. Please Refresh Button Push.", MessageType.Warning);
                return;
            }

            var(ico, revisionName, revisionLock) = GetInstallPackageInfo(gitURL.packageName);
            var buttonName = $"{gitURL.packageName}";
            var rName      = revisionName;

            if (rName != string.Empty)
            {
                if (rName == "HEAD")
                {
                    var t = tags.GetTags(hash);
                    if (t != null)
                    {
                        rName = t.name;
                    }
                }
                buttonName += $" - {rName} [{hash}]";
            }
            if (GUILayout.Button(new GUIContent(buttonName, ico), s_styles.ExposablePopupItem, GUILayout.ExpandWidth(false)))
            {
                if (revisionName != string.Empty)
                {
                    var m = new GenericMenu();
                    //if( revisionName == "HEAD" ) {
                    m.AddItem(new GUIContent($"Update [{revisionName}]"), false, () => {
                        GetTagsResponse(gitURL.url);
                        Helper.UpdatePackageHEAD(gitURL.packageName);
                    });
                    //}
                    m.AddItem(new GUIContent("Uninstall Package"), false, () => Helper.UninstallPackage(gitURL.packageName));
                    if (!revisionLock)
                    {
                        m.AddSeparator("");

                        //m.AddItem( new GUIContent( "HEAD" ), rev == "HEAD", () => { } );
                        var vers = GetVersions();
                        foreach (var v in tags)
                        {
                            m.AddItem(new GUIContent($"{v.name}: {v.commit.sha}"), hash == v.commit.sha, (_rev) => {
                                Helper.ChangeRevision(gitURL.packageName, (string)_rev, tags.GetRevisionHash((string)_rev));
                            }, v.name);
                        }
                    }
                    m.DropDown(new Rect(Event.current.mousePosition, new Vector2(0, 0)));
                }
                else
                {
                    var m = new GenericMenu();
                    m.AddItem(new GUIContent("Install Package"), false, () => {
                        Task.Run(() => InstallPackageProcess(gitURL));
                    });
                    m.DropDown(new Rect(Event.current.mousePosition, new Vector2(0, 0)));
                }
            }
        }