/* * Il formato delle dipendenze del file pubspec.yaml * * node_dipendenza: versione * node_dipendenza: * path: 'path/dipendenza/progetto' * nome_dipendenza: * sdk: nome_sdk * * * dependencies: * flutter: * sdk: flutter * dev_dependencies: * flutter_test: * sdk: flutter * build_runner: ^1.7.3 * json_serializable: ^3.2.5 * my_library: * path: '..\..\..\my_library' * */ public static KeyValuePair <YamlNode, YamlNode> ToYamlNode(this DartProjectDependency dependency) { YamlScalarNode key = new YamlScalarNode(dependency.Name); YamlNode value = null; switch (dependency.Type) { case DartProjectDependencyType.Version: value = new YamlScalarNode(dependency.Value); break; case DartProjectDependencyType.Path: YamlMappingNode pathNode = new YamlMappingNode(); pathNode.Children[new YamlScalarNode("path")] = new YamlScalarNode(dependency.Value); value = pathNode; break; case DartProjectDependencyType.Sdk: YamlMappingNode sdkNode = new YamlMappingNode(); sdkNode.Children[new YamlScalarNode("sdk")] = new YamlScalarNode(dependency.Value); value = sdkNode; break; default: throw new ArgumentException(); } return(new KeyValuePair <YamlNode, YamlNode>(key, value)); }
/// <summary> /// Find the current Dev Dependency Configured in the project with the same name and type. /// </summary> /// <param name="devDependency"></param> /// <returns></returns> public DartProjectDependency GetCurrentDevDependency(DartProjectDependency devDependency) { if (IsLoad == false) { Load(); } DartProjectDependency existingDependency = _devDependencies.FirstOrDefault(d => d.Name == devDependency.Name && devDependency.Type == d.Type); return(existingDependency); }
static void AddDevDependencyToDoc(YamlDocument doc, DartProjectDependency dependency, bool forceUpdate = false) { YamlMappingNode devDependencies = doc.GetMappingNode(new[] { _devDependeciesYaml }); if (devDependencies == null) { throw new DartProjectException($"Dart project error: missing '{_devDependeciesYaml}' section !!!", DartProjectError.PubspecInvalidFormat); } var dependecyNode = dependency.ToYamlNode(); if (devDependencies.Children.ContainsKey(dependecyNode.Key) == false || forceUpdate) { devDependencies.Children[dependecyNode.Key] = dependecyNode.Value; } }
static List <DartProjectDependency> GetDevDependencies(YamlDocument doc) { YamlMappingNode dependencies = doc.GetMappingNode(new[] { _devDependeciesYaml }); if (dependencies == null) { throw new DartProjectException($"Dart project error: missing '{_devDependeciesYaml}' section !!!", DartProjectError.PubspecInvalidFormat); } List <DartProjectDependency> dartDependencies = new List <DartProjectDependency>(); foreach (KeyValuePair <YamlNode, YamlNode> dependency in dependencies) { DartProjectDependency d = DartProjectDependencyExtension.FromYamlNode(dependency); if (d != null) { dartDependencies.Add(d); } } return(dartDependencies); }
/// <summary> /// Add a dart dev_dependecy into the project. /// To apply the depecency call /// </summary> /// <param name="dependency"></param> /// <param name="overrideVersion"></param> /// <exception cref = "DartProjectException" ></exception> public void AddDevDependency(DartProjectDependency dependency, bool overrideVersion = false) { if (IsLoad == false) { Load(); } DartProjectDependency existingDependency = _devDependencies.FirstOrDefault(d => d.Name == dependency.Name); if (existingDependency == null) { _devDependencies.Add(dependency); AddDevDependencyToDoc(_pubspecDocument, dependency); IsDirty = true; } else if (overrideVersion && (existingDependency.Type != dependency.Type || existingDependency.Value != dependency.Value)) { // Replace the different version _devDependencies.Remove(existingDependency); _devDependencies.Add(dependency); AddDevDependencyToDoc(_pubspecDocument, dependency, true); IsDirty = true; } }