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); }
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; } } }
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); }
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); }