private static void ValidateOptions(PackageTemplateOptions options) { var errors = new List <string>(); var requiredErrorMessage = L10n.Tr("{0} is required"); if (string.IsNullOrEmpty(options.name?.Trim())) { errors.Add(string.Format(requiredErrorMessage, nameof(options.name))); } else if (!PackageValidation.ValidateName(options.name)) { errors.Add(string.Format(L10n.Tr("Package name [{0}] is invalid"), options.name)); } if (string.IsNullOrEmpty(options.displayName?.Trim())) { errors.Add(string.Format(requiredErrorMessage, nameof(options.displayName))); } if (!string.IsNullOrEmpty(options.rootNamespace) && !ValidateRootNamespace(options.rootNamespace)) { errors.Add(string.Format(L10n.Tr("[{0}] is not a valid namespace"), options.rootNamespace)); } if (errors.Count > 0) { var invalidParamMsg = string.Format(L10n.Tr("{0} parameter is invalid"), nameof(options)); var errorMsg = string.Join(Environment.NewLine, errors.ToArray()); throw new ArgumentException($"{invalidParamMsg}:{Environment.NewLine}{errorMsg}"); } }
private void DrawDependencyListElement(Rect rect, int index, bool isActive, bool isFocused) { var list = m_DependenciesList.serializedProperty; var dependency = list.GetArrayElementAtIndex(index); var packageName = dependency.FindPropertyRelative("packageName"); var version = dependency.FindPropertyRelative("version"); var w = rect.width; rect.x += 4; rect.width = w / 3 * 2 - 2; rect.height -= EditorGUIUtility.standardVerticalSpacing; packageName.stringValue = EditorGUI.DelayedTextField(rect, packageName.stringValue); if (!IsNullOrEmptyTrim(packageName.stringValue) && !PackageValidation.ValidateName(packageName.stringValue)) { errorMessages.Add($"Invalid Dependency Package Name '{packageName.stringValue}'"); } using (new EditorGUI.DisabledScope(IsNullOrEmptyTrim(packageName.stringValue))) { rect.x += w / 3 * 2; rect.width = w / 3 - 4; version.stringValue = EditorGUI.DelayedTextField(rect, version.stringValue); if (!IsNullOrEmptyTrim(version.stringValue) && !PackageValidation.ValidateVersion(version.stringValue)) { errorMessages.Add( $"Invalid Dependency Version '{version.stringValue}' for '{packageName.stringValue}'"); } } }
private static void ValidateOptions(PackageTemplateOptions options) { var errors = new List <string>(); var requiredErrorMessage = L10n.Tr("{0} is required"); options.name = options.name?.Trim(); if (string.IsNullOrEmpty(options.name)) { errors.Add(string.Format(requiredErrorMessage, nameof(options.name))); } else if (!PackageValidation.ValidateName(options.name)) { errors.Add(string.Format(L10n.Tr("Package name [{0}] is invalid"), options.name)); } else if (PackageInfo.GetAll().Any(p => p.name == options.name)) { errors.Add(string.Format(L10n.Tr("The project already contains a package with the name [{0}]."), options.name)); } options.displayName = options.displayName?.Trim(); if (string.IsNullOrEmpty(options.displayName)) { errors.Add(string.Format(requiredErrorMessage, nameof(options.displayName))); } options.rootNamespace = options.rootNamespace?.Trim(); if (!string.IsNullOrEmpty(options.rootNamespace) && !ValidateRootNamespace(options.rootNamespace)) { errors.Add(string.Format(L10n.Tr("[{0}] is not a valid namespace"), options.rootNamespace)); } options.templateFolder = options.templateFolder?.Trim(); if (string.IsNullOrEmpty(options.templateFolder)) { errors.Add(string.Format(requiredErrorMessage, nameof(options.templateFolder))); } else if (!Directory.Exists(options.templateFolder)) { errors.Add(string.Format(L10n.Tr("The directory [{0}] does not exist"), options.templateFolder)); } if (errors.Count > 0) { var invalidParamMsg = string.Format(L10n.Tr("{0} parameter is invalid"), nameof(options)); var errorMsg = string.Join(Environment.NewLine, errors.ToArray()); throw new ArgumentException($"{invalidParamMsg}:{Environment.NewLine}{errorMsg}"); } }
private void PerformValidation() { if (!PackageValidation.ValidateName(m_Name.stringValue)) { errorMessages.Add($"Invalid Package Name '{m_Name.stringValue}'"); } if (!PackageValidation.ValidateVersion(m_Version.stringValue)) { errorMessages.Add($"Invalid Version '{m_Version.stringValue}'"); } if (m_UnityVersionEnabled.boolValue) { if (!PackageValidation.ValidateUnityVersion(m_UnityMajor.stringValue, m_UnityMinor.stringValue, m_UnityRelease.stringValue)) { var unityVersion = string.Join(".", new[] { m_UnityMajor.stringValue, m_UnityMinor.stringValue }); if (!IsNullOrEmptyTrim(m_UnityRelease.stringValue)) { unityVersion += "." + m_UnityRelease.stringValue.Trim(); } errorMessages.Add($"Invalid Unity Version '{unityVersion}'"); } } if (IsNullOrEmptyTrim(m_DisplayName.stringValue) || m_DisplayName.stringValue.Trim().Length == 0) { warningMessages.Add("Display name should be provided."); } if (IsNullOrEmptyTrim(m_Description.stringValue) || m_Description.stringValue.Trim().Length == 0) { warningMessages.Add("Package description should be provided."); } if ((PackageVisibility)m_Visibility.intValue == PackageVisibility.AlwaysHidden) { warningMessages.Add("This package and all its assets will be hidden by default in Editor because its visibility is set to 'Always Hidden'"); } if ((PackageVisibility)m_Visibility.intValue == PackageVisibility.AlwaysVisible) { warningMessages.Add("This package and all its assets will be visible by default in Editor because its visibility is set to 'Always Visible'"); } else { if (IsNullOrEmptyTrim(packageState.info.type)) { warningMessages.Add("This package and all its assets will be hidden by default in Editor because its type is empty"); } else if (PackageInfo.GetPredefinedHiddenByDefaultPackageTypes().Contains(packageState.info.type)) { warningMessages.Add($"This package and all its assets will be hidden by default in Editor because its type is '{packageState.info.type}'"); } else { warningMessages.Add($"This package and all its assets will be visible by default in Editor because its type is '{packageState.info.type}'"); } } }