Beispiel #1
0
        /*
         * 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));
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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;
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        /// <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;
            }
        }