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); }
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(); } } }
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); } }
private void DoInstall(PackageUpdateInfo info) { PackageDatabase.InstallOrUpdate(info); }