Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
                }
            }
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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);
                }
            }
        }
Exemple #7
0
        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());
        }