示例#1
0
        public static DubSubPackage ReadAndAdd(DubProject superProject, JsonReader r, IProgressMonitor monitor)
        {
            if (r.TokenType != JsonToken.StartObject)
            {
                throw new JsonReaderException("Illegal token on subpackage definition beginning");
            }

            var sub = new DubSubPackage();

            sub.FileName = superProject.FileName;

            sub.OriginalBasePath = superProject is DubSubPackage ? (superProject as DubSubPackage).OriginalBasePath :
                                   superProject.BaseDirectory;
            sub.VirtualBasePath = sub.OriginalBasePath;

            sub.BeginLoad();

            sub.AddProjectAndSolutionConfiguration(new DubProjectConfiguration {
                Name = GettextCatalog.GetString("Default"), Id = DubProjectConfiguration.DefaultConfigId
            });

            superProject.packagesToAdd.Add(sub);

            while (r.Read())
            {
                if (r.TokenType == JsonToken.PropertyName)
                {
                    sub.TryPopulateProperty(r.Value as string, r, monitor);
                }
                else if (r.TokenType == JsonToken.EndObject)
                {
                    break;
                }
            }

            sub.packageName = superProject.packageName + ":" + (sub.packageName ?? string.Empty);

            var sourcePaths = sub.GetSourcePaths().ToArray();

            if (sourcePaths.Length > 0 && !string.IsNullOrWhiteSpace(sourcePaths[0]))
            {
                sub.VirtualBasePath = new FilePath(sourcePaths [0]);
            }

            PackageJsonParser.LoadDubProjectReferences(sub, monitor);

            // TODO: What to do with new configurations that were declared in this sub package? Add them to all other packages as well?
            sub.EndLoad();

            if (r.TokenType != JsonToken.EndObject)
            {
                throw new JsonReaderException("Illegal token on subpackage definition end");
            }
            return(sub);
        }
示例#2
0
        public static DubSubPackage ReadAndAdd(DubProject superProject,JsonReader r, IProgressMonitor monitor)
        {
            DubSubPackage sub;
            switch (r.TokenType) {
                case JsonToken.StartObject:
                    break;
                case JsonToken.String:

                    sub = PackageJsonParser.ReadPackageInformation (PackageJsonParser.GetDubJsonFilePath (superProject, r.Value as string), monitor, null, superProject) as DubSubPackage;
                    return sub;
                default:
                    throw new JsonReaderException ("Illegal token on subpackage definition beginning");
            }

            sub = new DubSubPackage ();
            sub.FileName = superProject.FileName;

            sub.OriginalBasePath = superProject is DubSubPackage ? (superProject as DubSubPackage).OriginalBasePath :
                superProject.BaseDirectory;
            sub.VirtualBasePath = sub.OriginalBasePath;

            sub.BeginLoad ();

            sub.AddProjectAndSolutionConfiguration(new DubProjectConfiguration { Name = GettextCatalog.GetString("Default"), Id = DubProjectConfiguration.DefaultConfigId });

            superProject.packagesToAdd.Add(sub);

            while (r.Read ()) {
                if (r.TokenType == JsonToken.PropertyName)
                    sub.TryPopulateProperty (r.Value as string, r, monitor);
                else if (r.TokenType == JsonToken.EndObject)
                    break;
            }

            sub.packageName = superProject.packageName + ":" + (sub.packageName ?? string.Empty);

            var sourcePaths = sub.GetSourcePaths ().ToArray();
            if (sourcePaths.Length > 0 && !string.IsNullOrWhiteSpace(sourcePaths[0]))
                sub.VirtualBasePath = new FilePath(sourcePaths [0]);

            PackageJsonParser.LoadDubProjectReferences (sub, monitor);

            // TODO: What to do with new configurations that were declared in this sub package? Add them to all other packages as well?
            sub.EndLoad ();

            if (r.TokenType != JsonToken.EndObject)
                throw new JsonReaderException ("Illegal token on subpackage definition end");
            return sub;
        }
示例#3
0
        public bool TryPopulateProperty(string propName, JsonReader j, IProgressMonitor monitor)
        {
            switch (propName.ToLowerInvariant())
            {
            case "displayname":
                displayName = j.ReadAsString();
                break;

            case "name":
                packageName = j.ReadAsString();
                break;

            case "description":
                Description = j.ReadAsString();
                break;

            case "copyright":
                Copyright = j.ReadAsString();
                break;

            case "homepage":
                Homepage = j.ReadAsString();
                break;

            case "authors":
                if (!j.Read() || j.TokenType != JsonToken.StartArray)
                {
                    throw new JsonReaderException("Expected [ when parsing Authors");
                }
                authors.Clear();
                while (j.Read() && j.TokenType != JsonToken.EndArray)
                {
                    if (j.TokenType == JsonToken.String)
                    {
                        authors.Add(j.Value as string);
                    }
                }
                break;

            case "dependencies":
                if (!j.Read() || j.TokenType != JsonToken.StartObject)
                {
                    throw new JsonReaderException("Expected { when parsing Authors");
                }

                DubReferences.DeserializeDubPrjDependencies(j, monitor);
                break;

            case "configurations":
                if (!j.Read() || j.TokenType != JsonToken.StartArray)
                {
                    throw new JsonReaderException("Expected [ when parsing Configurations");
                }

                if (ParentSolution != null && ParentSolution.Configurations.Count == 1 && ParentSolution.Configurations[0].Id == DubProjectConfiguration.DefaultConfigId)
                {
                    ParentSolution.Configurations.Clear();
                }
                if (Configurations.Count == 1 && Configurations[0].Id == DubProjectConfiguration.DefaultConfigId)
                {
                    Configurations.Clear();
                }

                while (j.Read() && j.TokenType != JsonToken.EndArray)
                {
                    AddProjectAndSolutionConfiguration(DubProjectConfiguration.DeserializeFromPackageJson(j));
                }
                break;

            case "subpackages":
                if (!j.Read() || j.TokenType != JsonToken.StartArray)
                {
                    throw new JsonReaderException("Expected [ when parsing subpackages");
                }

                while (j.Read() && j.TokenType != JsonToken.EndArray)
                {
                    DubSubPackage.ReadAndAdd(this, j, monitor);
                }
                break;

            default:
                return(CommonBuildSettings.TryDeserializeBuildSetting(j));
            }

            return(true);
        }