private void InternalCheckForCompilation() { if (_isRebuilding != EditorApplication.isCompiling) { if (!_isRebuilding && EditorApplication.isCompiling) { var compilationText = (TextAsset)AssetDatabase.LoadAssetAtPath(CompilationNumberFile, typeof(TextAsset)); if (compilationText != null) { CurrentCompilation = JsonConvert.DeserializeObject <JEMBuildCompilation>(compilationText.text); } if (CurrentCompilation == null) { Debug.LogError("Unable to load compilation data to update number."); return; } CurrentCompilation.CompilationNumber++; CurrentCompilation.CompilationTime = DateTime.UtcNow; var json = JsonConvert.SerializeObject(CurrentCompilation, Formatting.Indented); File.WriteAllText(CompilationNumberFile, json); File.WriteAllText(LastContributorFile, JEMBuildEditor.ResolveCurrentContributorName()); AssetDatabase.Refresh(ImportAssetOptions.Default); AssetDatabase.SaveAssets(); RefreshLocalData(); } _isRebuilding = EditorApplication.isCompiling; } Repaint(); }
/// <summary> /// Saves data to local file /// </summary> public static void SaveLocalData() { // save version info if (CurrentVersion != null) { var json = JsonConvert.SerializeObject(CurrentVersion, Formatting.Indented); var dir = Path.GetDirectoryName(VersionFile); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText(VersionFile, json); } // save compilation info if (CurrentCompilation != null) { var json = JsonConvert.SerializeObject(CurrentCompilation, Formatting.Indented); var dir = Path.GetDirectoryName(CompilationNumberFile); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText(CompilationNumberFile, json); File.WriteAllText(LastContributorFile, JEMBuildEditor.ResolveCurrentContributorName()); } // save asset database AssetDatabase.Refresh(ImportAssetOptions.Default); AssetDatabase.SaveAssets(); // refresh local data RefreshLocalData(); }
/// <summary> /// Increase build number. /// </summary> public static void IncreaseBuildNumber() { var compilationText = (TextAsset)AssetDatabase.LoadAssetAtPath(CompilationNumberFile, typeof(TextAsset)); if (compilationText != null) { CurrentCompilation = JsonConvert.DeserializeObject <JEMBuildCompilation>(compilationText.text); } if (CurrentCompilation == null) { Debug.LogError("Unable to load compilation data to update number."); return; } CurrentCompilation.BuildNumber++; CurrentCompilation.BuildTime = DateTime.UtcNow; var json = JsonConvert.SerializeObject(CurrentCompilation, Formatting.Indented); File.WriteAllText(CompilationNumberFile, json); File.WriteAllText(LastContributorFile, JEMBuildEditor.ResolveCurrentContributorName()); AssetDatabase.Refresh(ImportAssetOptions.Default); AssetDatabase.SaveAssets(); RefreshLocalData(); }
private void OnGUI() { // check for contributor name if (!JEMBuildEditor.IsCurrentContributorNameFileExists()) { GUI.backgroundColor = Color.red; EditorGUILayout.HelpBox( $"System was unable to resolve username.txt file. Please, create {$@"{Environment.CurrentDirectory}\username.txt"}", MessageType.Error, true); GUI.backgroundColor = Color.white; return; } if (CurrentCompilation == null || CurrentVersion == null) { GUI.backgroundColor = Color.red; EditorGUILayout.HelpBox("Failed to initialize compilation or version resource.", MessageType.Error, true); if (GUILayout.Button("Refresh", GUILayout.Height(30))) { RefreshLocalData(); } return; } _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition); { InternalDrawFlags(); InternalDrawCompilationNumber(); EditorGUILayout.Space(); InternalDrawVersionInfo(); GUILayout.FlexibleSpace(); EditorGUILayout.BeginHorizontal(GUILayout.Height(25)); { if (GUILayout.Button("Save", GUILayout.Height(25))) { SaveLocalData(); } if (GUILayout.Button("R", GUILayout.Width(25), GUILayout.Height(25))) { RefreshLocalData(); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(GUILayout.Height(20)); { if (JEMEditorConfiguration.Configuration?.UpdateBundleVersion ?? false) { GUI.enabled = false; GUILayout.Button("Update Bundle Version (auto)", GUILayout.Height(20)); GUI.enabled = true; } else { if (GUILayout.Button("Update Bundle Version", GUILayout.Height(20))) { UpdateBundleVersion(); } } } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndScrollView(); }
/// <summary> /// Loads local data. /// </summary> public static void RefreshLocalData() { // load version info var versionData = (TextAsset)AssetDatabase.LoadAssetAtPath(VersionFile, typeof(TextAsset)); if (versionData == null) { // initialize new version file CurrentVersion = new JEMBuildVersion(); var dir = Path.GetDirectoryName(VersionFile); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir ?? throw new InvalidOperationException()); } File.WriteAllText(VersionFile, JsonConvert.SerializeObject(CurrentVersion, Formatting.Indented)); AssetDatabase.Refresh(ImportAssetOptions.Default); AssetDatabase.SaveAssets(); Debug.Log($"File {VersionFile} not exist. New file has been created."); } else { CurrentVersion = JsonConvert.DeserializeObject <JEMBuildVersion>(versionData.text); } if (CurrentVersion == null) { Debug.LogError("Unable to resolve current version data."); } // load compilation file var compilationText = !File.Exists(CompilationNumberFile) ? null : (TextAsset)AssetDatabase.LoadAssetAtPath(CompilationNumberFile, typeof(TextAsset)); if (compilationText == null) { // initialize new compilation number file CurrentCompilation = new JEMBuildCompilation(); var dir = Path.GetDirectoryName(CompilationNumberFile); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir ?? throw new InvalidOperationException()); } File.WriteAllText(CompilationNumberFile, JsonConvert.SerializeObject(CurrentCompilation, Formatting.Indented)); File.WriteAllText(LastContributorFile, JEMBuildEditor.ResolveCurrentContributorName()); AssetDatabase.Refresh(ImportAssetOptions.Default); AssetDatabase.SaveAssets(); Debug.Log($"File {CompilationNumberFile} not exist. New file has been created."); } else { CurrentCompilation = JsonConvert.DeserializeObject <JEMBuildCompilation>(compilationText.text); } if (CurrentCompilation == null) { Debug.LogError("Unable to resolve current compilation data."); } // apply compilation number CurrentCompilationNumber = JEMBuild.ResolveCurrentCompilationNumber(); CurrentBuildNumber = JEMBuild.ResolveCurrentBuildNumber(); CurrentSessionTime = JEMBuild.ResolveCurrentSessionTime(); // apply bundle version if (JEMEditorConfiguration.Configuration?.UpdateBundleVersion ?? false) { UpdateBundleVersion(); } JEMBuildFlags.LoadFlags(); JEMBuildFlags.ApplyFlags(); }