Ejemplo n.º 1
0
 /// <summary>
 /// Add default capabilities if none are provided.
 /// </summary>
 public static void AddDefaultCapabilities(FeedRequirements requirements)
 {
     // Infer default schema from Sleet 2.2.x if none is provided.
     if (requirements.RequiredCapabilities.Count < 1)
     {
         if (requirements.CreatorSleetVersion < new SemanticVersion(2, 2, 0))
         {
             requirements.RequiredCapabilities.Add(FeedCapability.Parse("schema:0.1.0"));
         }
         else
         {
             requirements.RequiredCapabilities.Add(FeedCapability.Parse("schema:1.0.0"));
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Read the assembly version.
        /// </summary>
        public static async Task <FeedRequirements> GetFeedRequirementsAsync(ISleetFileSystem fileSystem, ILogger log, CancellationToken token)
        {
            var requirements = new FeedRequirements();

            // Read feed index.json data
            var indexPath = fileSystem.Get("index.json");
            var json      = await indexPath.GetJson(log, token);

            var sleetVersion = json.GetValue("sleet:version")?.ToString();

            if (!string.IsNullOrEmpty(sleetVersion))
            {
                if (!SemanticVersion.TryParse(sleetVersion, out var version))
                {
                    throw new InvalidOperationException("Invalid sleet:version in index.json");
                }

                requirements.CreatorSleetVersion = version;
            }

            var requiredVersion = json.GetValue("sleet:requiredVersion")?.ToString();

            if (!string.IsNullOrEmpty(requiredVersion))
            {
                if (!VersionRange.TryParse(requiredVersion, out var range))
                {
                    throw new InvalidOperationException("Invalid sleet:requiredVersion in index.json");
                }

                requirements.RequiredVersion = range;
            }

            var requiredCaps = json.GetValue("sleet:capabilities")?.ToString();

            if (!string.IsNullOrEmpty(requiredCaps))
            {
                // Space delimited list of caps
                foreach (var s in requiredCaps.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    requirements.RequiredCapabilities.Add(FeedCapability.Parse(s));
                }
            }

            return(requirements);
        }