private static Upset TryLoadUpset(string packagePath) { string upsetPath = Regex.Replace(packagePath, ".unitypackage$", ".Upset.xml", RegexOptions.IgnoreCase); if (File.Exists(upsetPath)) { StrictXmlDeserializer <Upset> deserializer = new StrictXmlDeserializer <Upset>(); using (FileStream file = new FileStream(upsetPath, FileMode.Open)) { Upset upset = deserializer.Deserialize(file); if (upset.Configuration != null && upset.Configuration.Length != 0) { foreach (InstallSpecPath spec in upset.Configuration) { spec.Path = Uplift.Common.FileSystemUtil.MakePathOSFriendly(spec.Path); } } upset.MetaInformation.dirName = packagePath.Split(System.IO.Path.DirectorySeparatorChar).Last(); return(upset); } } else { Debug.LogWarning("Unity package found at " + packagePath + " has no matching Upset. It should be at " + upsetPath); } return(null); }
internal static Upfile LoadXml(string path) { try { StrictXmlDeserializer <Upfile> deserializer = new StrictXmlDeserializer <Upfile>(); using (FileStream fs = new FileStream(path, FileMode.Open)) { Upfile upfile = deserializer.Deserialize(fs); upfile.MakePathConfigurationsOSFriendly(); upfile.LoadOverrides(); if (upfile.Repositories != null) { foreach (Repository repo in upfile.Repositories) { if (repo is FileRepository) { (repo as FileRepository).Path = Uplift.Common.FileSystemUtil.MakePathOSFriendly((repo as FileRepository).Path); } } } Debug.Log("Upfile was successfully loaded"); return(upfile); } } catch (Exception e) { throw new ApplicationException("Uplift: Could not load Upfile", e); } }
internal virtual Repository[] GetOverrides(string path) { // If we don't have override file, ignore if (!File.Exists(path)) { return(null); } StrictXmlDeserializer <UpfileOverride> deserializer = new StrictXmlDeserializer <UpfileOverride>(); using (FileStream fs = new FileStream(path, FileMode.Open)) { try { UpfileOverride upOverride = deserializer.Deserialize(fs); foreach (Repository repo in upOverride.Repositories) { if (repo is FileRepository) { (repo as FileRepository).Path = Uplift.Common.FileSystemUtil.MakePathOSFriendly((repo as FileRepository).Path); } } return(upOverride.Repositories); } catch (InvalidOperationException) { Debug.LogError(string.Format("Global Override file at {0} is not well formed", path)); return(null); } } }
public static UpliftSettings FromFile(string source) { UpliftSettings result = new UpliftSettings { Repositories = new Repository[0], AuthenticationMethods = new RepositoryToken[0] }; if (!File.Exists(source)) { Debug.Log("No local settings file detected at " + source); return(result); } StrictXmlDeserializer <UpliftSettings> deserializer = new StrictXmlDeserializer <UpliftSettings>(); using (FileStream fs = new FileStream(source, FileMode.Open)) { try { result = deserializer.Deserialize(fs); } catch (InvalidOperationException) { Debug.LogError(string.Format("Global Override file at {0} is not well formed", source)); return(result); } foreach (Repository repo in result.Repositories) { if (repo is FileRepository) { (repo as FileRepository).Path = FileSystemUtil.MakePathOSFriendly((repo as FileRepository).Path); } } return(result); } }
internal static Upfile LoadTestXml(string path) { StrictXmlDeserializer <Upfile> deserializer = new StrictXmlDeserializer <Upfile>(); using (FileStream fs = new FileStream(path, FileMode.Open)) { Upfile upfile = deserializer.Deserialize(fs); upfile.MakePathConfigurationsOSFriendly(); if (upfile.Repositories != null) { foreach (Repository repo in upfile.Repositories) { if (repo is FileRepository) { (repo as FileRepository).Path = FileSystemUtil.MakePathOSFriendly((repo as FileRepository).Path); } } } return(upfile); } }
private void AddExplodedDirectories(List <Upset> upsetList) { string[] directories = Directory.GetDirectories(Path); foreach (string directoryPath in directories) { string directoryName = directoryPath.Split(System.IO.Path.DirectorySeparatorChar).Last(); try { string upsetPath = Uplift.Common.FileSystemUtil.JoinPaths(Path, directoryName, UpsetFile); if (!File.Exists(upsetPath)) { continue; } StrictXmlDeserializer <Upset> deserializer = new StrictXmlDeserializer <Upset>(); using (FileStream file = new FileStream(upsetPath, FileMode.Open)) { Upset upset = deserializer.Deserialize(file); if (upset.Configuration != null && upset.Configuration.Length != 0) { foreach (InstallSpecPath spec in upset.Configuration) { spec.Path = Uplift.Common.FileSystemUtil.MakePathOSFriendly(spec.Path); } } upset.MetaInformation.dirName = directoryName; upsetList.Add(upset); } } catch (Exception e) { UnityEngine.Debug.LogErrorFormat("Could not load package at {0}, ignoring it ({1}):\n{2}", directoryName, e.Message, e.StackTrace); } } }
public override Upset[] ListPackages() { releases = GetPackagesReleases(); GitHubAsset[] upsetAssets = releases .SelectMany <GitHubRelease, GitHubAsset>(rel => rel.assets.Where(asset => asset.name.EndsWith("Upset.xml"))) .ToArray(); string progressBarTitle = "Parsing Upsets from GitHub repository"; int index = 0; List <Upset> upsetList = new List <Upset>(); EditorUtility.DisplayProgressBar(progressBarTitle, "Please wait a little bit while Uplift parses the Upset in the GitHub repository at " + urlField, 0f); string assetPath; try { foreach (GitHubAsset asset in upsetAssets) { try { StrictXmlDeserializer <Upset> deserializer = new StrictXmlDeserializer <Upset>(); EditorUtility.DisplayProgressBar( progressBarTitle, "Parsing " + asset.name, (float)(index++) / upsetAssets.Length ); if (!TryGetCachedItem(asset.name, out assetPath)) { using (StreamReader sr = new StreamReader(GitHub.GetAssetStream(asset, GetToken()))) using (FileStream fs = new FileStream(assetPath, FileMode.Create)) { sr.BaseStream.CopyTo(fs); } } using (FileStream fs = new FileStream(assetPath, FileMode.Open)) { Upset upset = deserializer.Deserialize(fs); upset.MetaInformation.dirName = asset.name; upsetList.Add(upset); } } catch (Exception e) { Debug.LogErrorFormat("An error occured while trying to get asset {0} ({1}, {2}) from GithubRepository", asset.name, asset.htmlURL, asset.apiURL); throw e; } } } finally { EditorUtility.ClearProgressBar(); } return(upsetList.ToArray()); }