internal static string GenerateUniquePackageDisplayName(string displayName) { displayName = Regex.Replace(displayName, $@"[{Regex.Escape(EditorUtility.GetInvalidFilenameChars())}]", "_"); var allPackagesDisplayNames = PackageInfo.GetAll().Where(info => info.type != "module").Select(info => info.displayName); return(FindUnique(displayName, allPackagesDisplayNames, " ")); }
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}"); } }
public static EmbedRequest Embed(string packageName) { var packageInfo = PackageInfo.GetAll().FirstOrDefault(p => p.name == packageName); if (packageInfo == null) { throw new InvalidOperationException($"Cannot embed package [{packageName}] because it is not registered in the Asset Database."); } Debug.Assert(packageInfo.entitlements.isAllowed, "Expected [entitlements.isAllowed] flag to be true."); long operationId; var status = NativeClient.Embed(out operationId, packageName); return(new EmbedRequest(operationId, status)); }
private static string GenerateUniqueSanitizedPackageName(string organization, string name, string defaultName) { var sanitizedOrganization = SanitizeName(organization, k_DefaultOrganizationName, @"[^a-zA-Z\-_\d]", "").ToLower(CultureInfo.InvariantCulture); var sanitizedName = SanitizeName(name, defaultName, @"[^a-zA-Z\-_\d]", "").ToLower(CultureInfo.InvariantCulture); var packageName = "com." + sanitizedOrganization + "." + sanitizedName; if (packageName.Length > k_MaxPackageNameLength) { packageName = packageName.Substring(0, k_MaxPackageNameLength); } packageName = packageName.TrimEnd('.'); var allPackagesNames = PackageInfo.GetAll().Select(info => info.name); return(FindUnique(packageName, allPackagesNames)); }
public static string CreatePackage(PackageTemplateOptions options) { ValidateOptions(options); var existingPackage = PackageInfo.GetAll().FirstOrDefault(p => p.name == options.name); if (existingPackage != null) { throw new InvalidOperationException(string.Format(L10n.Tr("The project already contains a package with the name [{0}]."), options.name)); } var targetFolder = $"{Folders.GetPackagesPath()}/{options.name}"; if (Directory.Exists(targetFolder)) { throw new InvalidOperationException(string.Format(L10n.Tr("The target folder [{0}] for this new package already exists."), targetFolder)); } var sourceFolder = Path.Combine(PackageTemplatesRootFolder, k_DefaultTemplateName); CreatePackageFromTemplateFolder(CreateTemplateVariables(options), sourceFolder, targetFolder); return(targetFolder); }
public static PackageInfo[] GetAll() { return(PackageInfo.GetAll()); }