public static bool IsValid(DirectoryInfo pathToDirectory, bool throwsExceptions)
        {
            string version = pathToDirectory.Name;

            if (!File.Exists(Path.Combine(pathToDirectory.ToString(), version + ".json")))
            {
                if (throwsExceptions)
                {
                    throw new VersionCorruptedOrNotExists(
                              $"Directory '{version}' doesn't contain JSON file. Path: {pathToDirectory}")
                          {
                              Version = version
                          };
                }
                return(false);
            }
            VersionManifest ver = (VersionManifest)JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(pathToDirectory.ToString(), version + ".json")), typeof(VersionManifest));

            if (ver != null)
            {
                return(true);
            }
            if (throwsExceptions)
            {
                throw new VersionCorruptedOrNotExists(
                          $"Directory '{version}' contains corrupted JSON file. Path: {pathToDirectory}")
                      {
                          Version = version
                      };
            }
            return(false);
        }
示例#2
0
        public string GetAssetsIndex()
        {
            if (!string.IsNullOrEmpty(AssetsIndex))
            {
                return(AssetsIndex);
            }
            VersionManifest manifest = InheritableVersionManifest;

            while (true)
            {
                if (manifest.InheritsFrom == null)
                {
                    if (manifest.AssetsIndex != null)
                    {
                        return(manifest.AssetsIndex);
                    }
                    break;
                }
                manifest = manifest.InheritableVersionManifest;
            }
            throw new VersionCorrupted("Can't get assets index.")
                  {
                      Version = VersionId
                  };
        }
        /// <summary>
        /// Parses build's JSON file.
        /// </summary>
        /// <param name="pathToDirectory">Path to build's directory.</param>
        /// <param name="parseInheritableVersion">Parses inheritable builds.</param>
        public static VersionManifest ParseVersion(DirectoryInfo pathToDirectory, bool parseInheritableVersion)
        {
            IsValid(pathToDirectory, true);
            string          version = pathToDirectory.Name;
            VersionManifest ver     =
                (VersionManifest)
                JsonConvert.DeserializeObject(
                    File.ReadAllText(Path.Combine(pathToDirectory.ToString(), version + ".json")),
                    typeof(VersionManifest));

            if (ver.InheritsFrom == null || !parseInheritableVersion)
            {
                return(ver);
            }
            ver.InheritableVersionManifest =
                ParseVersion(new DirectoryInfo(Path.Combine(pathToDirectory.Parent.FullName, ver.InheritsFrom)));
            ver.Libs.AddRange(ver.InheritableVersionManifest.Libs);
            return(ver);
        }
        public string GetJavaVersion()
        {
            VersionManifest manifest = InheritableVersionManifest;

            while (true)
            {
                if (manifest?.InheritsFrom == null)
                {
                    if (JavaVersionInfo != null)
                    {
                        return(JavaVersionInfo.majorVersion);
                    }
                    if (manifest?.JavaVersionInfo != null)
                    {
                        return(manifest.JavaVersionInfo.majorVersion);
                    }
                    break;
                }
                manifest = manifest.InheritableVersionManifest;
            }
            return(null);
        }
        public string GetAssetsIndex()
        {
            if (!string.IsNullOrEmpty(AssetsIndex))
            {
                return(AssetsIndex);
            }
            VersionManifest manifest = InheritableVersionManifest;

            while (true)
            {
                if (manifest?.InheritsFrom == null)
                {
                    if (manifest?.AssetsIndex != null)
                    {
                        return(manifest.AssetsIndex);
                    }
                    break;
                }
                manifest = manifest.InheritableVersionManifest;
            }
            return("legacy");
        }