Example #1
0
        public static void InstallOrUpdate(PackageUpdateInfo info)
        {
            var installOrUpdate = info.IsNotInstalled ? "Install" : "Update";
            var message         = $"'{info.Package.name}:{info.Package.version}' " +
                                  $"require download additional unityPackage '{info.LoaderName}'";

            if (!EditorUtility.DisplayDialog("Npm Package Loader", message, installOrUpdate, "Cancel"))
            {
                return;
            }

            var packageJsonAsset = AssetDatabase.LoadAssetAtPath <TextAsset>(info.PackageJsonPath);
            var loader           = AssetDatabase.LoadAssetAtPath <Loader>(info.LoaderPath);

            void OnSuccess()
            {
                Debug.Log($"{info.Package.name}:{info.LoaderName} updated");
            }

            void OnFail()
            {
                Debug.LogError($"Failed to update {info.Package.name}:{info.LoaderName}");
            }

            loader.Import(packageJsonAsset, OnSuccess, OnFail);
        }
Example #2
0
        private void DrawPackage(PackageUpdateInfo info)
        {
            using (new GUILayout.HorizontalScope(Styles.BigTitle, GUILayout.Height(60)))
            {
                using (new GUILayout.VerticalScope())
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label(info.Package.displayName, Styles.HeaderDisplayNameLabel,
                                    GUILayout.ExpandWidth(false));
                    GUILayout.Label(info.LoaderName, Styles.HeaderVersionLabel);
                    GUILayout.EndHorizontal();
                    GUILayout.Label(info.Package.name, Styles.HeaderNameLabel);
                }

                GUILayout.FlexibleSpace();

                using (new EditorGUI.DisabledScope(info.IsUpToDate))
                {
                    GUILayout.BeginVertical();
                    var action = info.IsNotInstalled ? $"Install {info.AvailableVersion}"
                        : info.IsReadyForUpdate ? $"Update to {info.AvailableVersion}"
                        : "Up to date";
                    if (GUILayout.Button(action, GUILayout.Width(120), GUILayout.Height(45)))
                    {
                        DoInstall(info);
                    }

                    GUILayout.EndVertical();
                }
            }
        }
Example #3
0
        public static void RefreshPackagesToUpdate()
        {
            _packages = new List <PackageUpdateInfo>();

            var assetPaths = GetLoaderPaths();

            foreach (var loaderPath in assetPaths)
            {
                var loaderName      = Path.GetFileNameWithoutExtension(loaderPath);
                var loaderDirectory = Path.GetDirectoryName(loaderPath);
                if (loaderDirectory == null)
                {
                    continue;
                }

                var packageJsonPath    = Path.Combine(loaderDirectory, "package.json");
                var packageJsonContent = File.ReadAllText(packageJsonPath);
                var packageJson        = JsonUtility.FromJson <PackageJson>(packageJsonContent);

                var embedPackageJsonPath = $"{Application.dataPath}/Packages/{packageJson.name}/{loaderName}.json";

                PackageJson embedPackageJson = null;
                if (File.Exists(embedPackageJsonPath))
                {
                    var embedPackageJsonContent = File.ReadAllText(embedPackageJsonPath);
                    embedPackageJson = JsonUtility.FromJson <PackageJson>(embedPackageJsonContent);
                }

                var info = new PackageUpdateInfo
                {
                    Package          = packageJson,
                    InstalledVersion = embedPackageJson?.version,
                    AvailableVersion = packageJson.version,
                    PackageJsonPath  = packageJsonPath,
                    LoaderPath       = loaderPath,
                    LoaderName       = loaderName,
                };
                _packages.Add(info);
            }
        }
Example #4
0
 private void DoInstall(PackageUpdateInfo info)
 {
     PackageDatabase.InstallOrUpdate(info);
 }