public virtual bool Initialize(string text)
        {
            var parts = text.Split(' ', StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length != 3)
            {
                Logger.Error($"Couldn't parse assembly constraint '{text}'");

                return(false);
            }

            if (!VersionedText.TryParseSemanticVersion(parts[2], out var version, Logger))
            {
                return(false);
            }

            Assembly   = parts[0];
            Version    = version;
            Constraint = parts[1] switch
            {
                "==" => VersionConstraint.EqualTo,
                "<=" => VersionConstraint.Maximum,
                ">=" => VersionConstraint.Minimum,
                ">" => VersionConstraint.GreaterThan,
                "<" => VersionConstraint.LessThan,
                _ => VersionConstraint.Undefined
            };

            return(true);
        }
Example #2
0
        public bool Initialize(string rawName, ExpandoObject container, ProjectAssetsContext context)
        {
            if (!ValidateInitializationArguments(rawName, container, context))
            {
                return(false);
            }

            if (!VersionedText.CreateVersionedText(rawName, out var verText, Logger))
            {
                return(false);
            }

            Assembly     = verText.TextComponent;
            Version      = verText.Version;
            Dependencies = new List <DependencyInfo>();

            var asDict = (IDictionary <string, object>)container;

            // dependencies are optional
            if (!asDict.ContainsKey("dependencies"))
            {
                return(true);
            }

            var depDict = asDict["dependencies"] as ExpandoObject;

            if (depDict == null)
            {
                Logger.Error(
                    $"{nameof( container )} does not have a 'dependencies' property which is an {nameof( ExpandoObject )}");

                return(false);
            }

            var retVal = true;

            foreach (var kvp in depDict)
            {
                if (kvp.Value is string versionText)
                {
                    if (VersionedText.TryParseSemanticVersion(versionText, out var version, Logger))
                    {
                        var newItem = _diCreator();

                        newItem.Assembly = kvp.Key;
                        newItem.Version  = version;

                        Dependencies.Add(newItem);
                    }
                    else
                    {
                        retVal = false;
                    }
                }
            }
Example #3
0
        public bool Initialize(ExpandoObject container, ProjectAssetsContext context)
        {
            if (!ValidateInitializationArguments(container, context))
            {
                return(false);
            }

            var okay = GetProperty <string>(container, "version", context, out var versionText);

            okay &= GetProperty <ExpandoObject>(container, "restore", context, out var restoreContainer);
            okay &= GetProperty <ExpandoObject>(container, "frameworks", context, out var frameContainer);
            okay &= GetProperty <ExpandoObject>(container, "warningProperties", context, out var warnContainer,
                                                optional: true);

            if (!okay)
            {
                return(false);
            }

            if (!VersionedText.TryParseSemanticVersion(versionText, out var version, Logger))
            {
                return(false);
            }

            var restore = _restoreCreator();

            if (!restore.Initialize(restoreContainer, context))
            {
                return(false);
            }

            if (!LoadFromContainer <FrameworkReferences, ExpandoObject>(frameContainer, _fwCreator, context,
                                                                        out var fwList))
            {
                return(false);
            }

            LoadFromContainer <WarningProperty, List <string> >(warnContainer, _wpCreator, context, out var warnList,
                                                                containerCanBeNull: true);

            Version           = version;
            Restore           = restore;
            Frameworks        = fwList;
            WarningProperties = warnList;

            return(true);
        }
Example #4
0
        public virtual bool Initialize(string rawName, ExpandoObject container, ProjectAssetsContext context)
        {
            if (!ValidateInitializationArguments(rawName, container, context))
            {
                return(false);
            }

            if (!GetProperty <string>(container, "target", context, out var tgtTypeText))
            {
                return(false);
            }

            if (!Enum.TryParse <ReferenceType>(tgtTypeText, true, out var tgtType))
            {
                Logger.Error($"Couldn't parse '{tgtTypeText}' to a {nameof(ReferenceType)}");

                return(false);
            }

            Assembly   = rawName;
            TargetType = tgtType;

            // parse into individual version strings
            rawName = rawName.Replace("[", "")
                      .Replace(")", "")
                      .Replace(" ", "");

            var versionTexts = rawName.Split(',', StringSplitOptions.RemoveEmptyEntries);

            Versions = new List <SemanticVersion>();

            var retVal = true;

            foreach (var versionText in versionTexts)
            {
                if (VersionedText.TryParseSemanticVersion(versionText, out var version, Logger))
                {
                    Versions.Add(version);
                }