示例#1
0
        private static string GetInstalledExtensionsString()
        {
            var extensions = IntegrationMetadata
                             .FindIntegrations()
                             .Select(a => string.Format("{0}={1}", a.Id, a.Version))
                             .ToArray();

            return("?" + string.Join("&", extensions));
        }
示例#2
0
        private static bool TryParse(string path, [CanBeNull] out IntegrationMetadata metadata)
        {
            try
            {
                metadata      = JsonUtility.FromJson <IntegrationMetadata>(File.ReadAllText(path));
                metadata.Path = path;

                //If any of the values are the default this hasn't parsed correctly.
                if (metadata.Id == null || metadata.Version == -1)
                {
                    throw new FormatException("Encountered default value after parsing");
                }

                return(true);
            }
            catch (Exception e)
            {
                Debug.LogWarning(string.Format("Failed to Parse Dissonance integration metadata at '{0}' - {1}", path, e));

                metadata = null;
                return(false);
            }
        }
示例#3
0
        public static IEnumerable <IntegrationMetadata> FindIntegrations()
        {
            if (!Directory.Exists(IntegrationsDirectoryPath))
            {
                yield break;
            }

            //Assume each directory in Dissonance/Integrations is an integration
            var directories = Directory.GetDirectories(IntegrationsDirectoryPath);

            foreach (var directory in directories)
            {
                var mdPath = System.IO.Path.Combine(directory, "dissonance-integration-metadata.json");

                //If the file doesn't exist, or it fails to parse, return a default value
                IntegrationMetadata metadata;
                if (!File.Exists(mdPath) || !TryParse(mdPath, out metadata))
                {
                    metadata = new IntegrationMetadata(System.IO.Path.GetFileName(directory), 0, mdPath);
                }

                yield return(metadata);
            }
        }