コード例 #1
0
ファイル: DubJson.cs プロジェクト: lenoil98/Mono-D
        bool TryDeserializeBuildSetting(DubBuildSettings cfg, string propName, JSONThing j)
        {
            var settingIdentifier = propName.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries);

            if (settingIdentifier.Length < 1)
            {
                return(false);
            }

            propName = settingIdentifier[0] = settingIdentifier[0].ToLowerInvariant();
            DubBuildSetting sett;

            switch (propName)
            {
            case "dependencies":
                DeserializeDubPrjDependencies(ExpectJsonObject(j, propName), cfg);
                return(true);

            case "targettype":
            case "targetname":
            case "targetpath":
            case "workingdirectory":
            case "mainsourcefile":
                sett = new DubBuildSetting {
                    Name = propName, Values = new[] { ExpectJsonStringValue(j, propName) }
                };
                break;

            case "subconfigurations":
                foreach (var kv in ExpectJsonObject(j, propName).Properties)
                {
                    cfg.subConfigurations[kv.Key] = ExpectJsonStringValue(kv.Value, kv.Key);
                }
                return(true);

            case "sourcefiles":
            case "sourcepaths":
            case "excludedsourcefiles":
            case "versions":
            case "debugversions":
            case "importpaths":
            case "stringimportpaths":
                var values = new List <string> ();
                foreach (var i in ExpectJsonArray(j, propName).Items)
                {
                    values.Add(ExpectJsonStringValue(i, propName));
                }

                sett = new DubBuildSetting {
                    Name = propName, Values = values.ToArray()
                };

                for (int i = 1; i < settingIdentifier.Length; i++)
                {
                    var pn = settingIdentifier[i].ToLowerInvariant();
                    if (sett.OperatingSystem == null && DubBuildSettings.OsVersions.Contains(pn))
                    {
                        sett.OperatingSystem = pn;
                    }
                    else if (sett.Architecture == null && DubBuildSettings.Architectures.Contains(pn))
                    {
                        sett.Architecture = pn;
                    }
                    else
                    {
                        sett.Compiler = pn;
                    }
                }
                break;

            default:
                return(false);
            }

            List <DubBuildSetting> setts;

            if (!cfg.TryGetValue(settingIdentifier[0], out setts))
            {
                cfg.Add(settingIdentifier[0], setts = new List <DubBuildSetting>());
            }

            setts.Add(sett);

            return(true);
        }
コード例 #2
0
ファイル: DubSdl.cs プロジェクト: aBothe/Mono-D
        void InterpretBuildSetting(SDLDeclaration decl, DubBuildSettings settings)
        {
            var propName = decl.Name.ToLowerInvariant();
            DubBuildSetting sett = null;

            switch (propName)
            {
                case "dependency":
                    var depName = ExtractFirstAttribute(decl);
                    var depVersion = ExtractFirstAttribute(decl, "version");
                    var depPath = ExtractFirstAttribute(decl, "path");

                    if (!string.IsNullOrWhiteSpace(depName))
                        settings.dependencies[depName] = new DubProjectDependency
                        {
                            Name = depName,
                            Path = depPath,
                            Version = depVersion
                        };
                    break;
                case "targettype":
                case "targetname":
                case "targetpath":
                case "workingdirectory":
                case "mainsourcefile":
                    if (decl.Attributes.Length >= 1)
                    {
                        sett = new DubBuildSetting { Name = propName, Values = new[] { ExtractFirstAttribute(decl) } };
                    }
                    break;
                case "subconfiguration":
                    if (decl.Attributes.Length >= 2)
                    {
                        var subConfigName = decl.Attributes[0].Item2;
                        if (!string.IsNullOrWhiteSpace(subConfigName))
                            settings.subConfigurations[subConfigName] = decl.Attributes[1].Item2;
                    }
                    break;
                case "sourcefiles":
                case "sourcepaths":
                case "excludedsourcefiles":
                case "versions":
                case "debugversions":
                case "importpaths":
                case "stringimportpaths":
                    sett = new DubBuildSetting();
                    sett.Values = ExtractUnnamedAttributes(decl).ToArray();

                    var platformConstraints = ExtractFirstAttribute(decl, "platform").Split('-');
                    if (platformConstraints.Length > 0)
                    {
                        foreach (var constraint in platformConstraints)
                        {
                            var pn = constraint.ToLowerInvariant();
                            if (sett.OperatingSystem == null && DubBuildSettings.OsVersions.Contains(pn))
                                sett.OperatingSystem = pn;
                            else if (sett.Architecture == null && DubBuildSettings.Architectures.Contains(pn))
                                sett.Architecture = pn;
                            else
                                sett.Compiler = pn;
                        }
                    }
                    break;
            }

            if (sett != null)
            {
                List<DubBuildSetting> setts;
                if (!settings.TryGetValue(propName, out setts))
                    settings.Add(propName, setts = new List<DubBuildSetting>());

                setts.Add(sett);
            }
        }
コード例 #3
0
ファイル: DubProject.cs プロジェクト: DinrusGroup/Mono-D
		public bool BuildSettingMatchesConfiguration(DubBuildSetting sett, ConfigurationSelector config)
		{
			return true;
		}
コード例 #4
0
ファイル: DubJson.cs プロジェクト: DinrusGroup/Mono-D
		bool TryDeserializeBuildSetting(DubBuildSettings cfg, JsonReader j)
		{
			if (!(j.Value is string))
				return false;
			var settingIdentifier = (j.Value as string).Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
			if (settingIdentifier.Length < 1)
				return false;

			var propName = settingIdentifier[0] = settingIdentifier[0].ToLowerInvariant();
			DubBuildSetting sett = null;

			switch (propName)
			{
				case "dependencies":
					j.Read();
					DeserializeDubPrjDependencies(j, cfg);
					break;
				case "targettype":
				case "targetname":
				case "targetpath":
				case "workingdirectory":
				case "mainsourcefile":
					j.Read();
					if (j.TokenType == JsonToken.String)
					{
						sett = new DubBuildSetting { Name = propName, Values = new[] { j.Value as string } };
					}
					break;
				case "subconfigurations":
					j.Read();
					var configurations = (new JsonSerializer()).Deserialize<Dictionary<string, string>>(j);
					foreach (var kv in configurations)
						cfg.subConfigurations[kv.Key] = kv.Value;
					break;
				case "sourcefiles":
				case "sourcepaths":
				case "excludedsourcefiles":
				case "versions":
				case "debugversions":
				case "importpaths":
				case "stringimportpaths":
					j.Read();
					if (j.TokenType == JsonToken.StartArray)
					{
						sett = new DubBuildSetting { Name = propName, Values = (new JsonSerializer()).Deserialize<string[]>(j) };

						for (int i = 1; i < settingIdentifier.Length; i++)
						{
							var pn = settingIdentifier[i].ToLowerInvariant();
							if (sett.OperatingSystem == null && DubBuildSettings.OsVersions.Contains(pn))
								sett.OperatingSystem = pn;
							else if (sett.Architecture == null && DubBuildSettings.Architectures.Contains(pn))
								sett.Architecture = pn;
							else
								sett.Compiler = pn;
						}
					}
					break;
				default:
					j.Skip();
					return false;
			}

			if (sett != null)
			{
				List<DubBuildSetting> setts;
				if (!cfg.TryGetValue(settingIdentifier[0], out setts))
					cfg.Add(settingIdentifier[0], setts = new List<DubBuildSetting>());

				setts.Add(sett);
			}

			return true;
		}
コード例 #5
0
ファイル: DubJson.cs プロジェクト: aBothe/Mono-D
        bool TryDeserializeBuildSetting(DubBuildSettings cfg, string propName, JSONThing j)
        {
            var settingIdentifier = propName.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
            if (settingIdentifier.Length < 1)
                return false;

            propName = settingIdentifier[0] = settingIdentifier[0].ToLowerInvariant();
            DubBuildSetting sett;

            switch (propName)
            {
                case "dependencies":
                    DeserializeDubPrjDependencies(ExpectJsonObject(j, propName), cfg);
                    return true;
                case "targettype":
                case "targetname":
                case "targetpath":
                case "workingdirectory":
                case "mainsourcefile":
                    sett = new DubBuildSetting { Name = propName, Values = new[] { ExpectJsonStringValue(j, propName) } };
                    break;
                case "subconfigurations":
                    foreach (var kv in ExpectJsonObject(j, propName).Properties)
                        cfg.subConfigurations[kv.Key] = ExpectJsonStringValue(kv.Value, kv.Key);
                    return true;
                case "sourcefiles":
                case "sourcepaths":
                case "excludedsourcefiles":
                case "versions":
                case "debugversions":
                case "importpaths":
                case "stringimportpaths":
                    var values = new List<string> ();
                    foreach (var i in ExpectJsonArray(j, propName).Items)
                        values.Add (ExpectJsonStringValue(i, propName));

                    sett = new DubBuildSetting { Name = propName, Values = values.ToArray() };

                    for (int i = 1; i < settingIdentifier.Length; i++)
                    {
                        var pn = settingIdentifier[i].ToLowerInvariant();
                        if (sett.OperatingSystem == null && DubBuildSettings.OsVersions.Contains(pn))
                            sett.OperatingSystem = pn;
                        else if (sett.Architecture == null && DubBuildSettings.Architectures.Contains(pn))
                            sett.Architecture = pn;
                        else
                            sett.Compiler = pn;
                    }
                    break;
                default:
                    return false;
            }

            List<DubBuildSetting> setts;
            if (!cfg.TryGetValue(settingIdentifier[0], out setts))
                cfg.Add(settingIdentifier[0], setts = new List<DubBuildSetting>());

            setts.Add(sett);

            return true;
        }
コード例 #6
0
        void InterpretBuildSetting(SDLDeclaration decl, DubBuildSettings settings)
        {
            var             propName = decl.Name.ToLowerInvariant();
            DubBuildSetting sett     = null;

            switch (propName)
            {
            case "dependency":
                var depName    = ExtractFirstAttribute(decl);
                var depVersion = ExtractFirstAttribute(decl, "version");
                var depPath    = ExtractFirstAttribute(decl, "path");

                if (!string.IsNullOrWhiteSpace(depName))
                {
                    settings.dependencies[depName] = new DubProjectDependency
                    {
                        Name    = depName,
                        Path    = depPath,
                        Version = depVersion
                    }
                }
                ;
                break;

            case "targettype":
            case "targetname":
            case "targetpath":
            case "workingdirectory":
            case "mainsourcefile":
                if (decl.Attributes.Length >= 1)
                {
                    sett = new DubBuildSetting {
                        Name = propName, Values = new[] { ExtractFirstAttribute(decl) }
                    };
                }
                break;

            case "subconfiguration":
                if (decl.Attributes.Length >= 2)
                {
                    var subConfigName = decl.Attributes[0].Item2;
                    if (!string.IsNullOrWhiteSpace(subConfigName))
                    {
                        settings.subConfigurations[subConfigName] = decl.Attributes[1].Item2;
                    }
                }
                break;

            case "sourcefiles":
            case "sourcepaths":
            case "excludedsourcefiles":
            case "versions":
            case "debugversions":
            case "importpaths":
            case "stringimportpaths":
                sett        = new DubBuildSetting();
                sett.Values = ExtractUnnamedAttributes(decl).ToArray();

                var platformConstraints = ExtractFirstAttribute(decl, "platform").Split('-');
                if (platformConstraints.Length > 0)
                {
                    foreach (var constraint in platformConstraints)
                    {
                        var pn = constraint.ToLowerInvariant();
                        if (sett.OperatingSystem == null && DubBuildSettings.OsVersions.Contains(pn))
                        {
                            sett.OperatingSystem = pn;
                        }
                        else if (sett.Architecture == null && DubBuildSettings.Architectures.Contains(pn))
                        {
                            sett.Architecture = pn;
                        }
                        else
                        {
                            sett.Compiler = pn;
                        }
                    }
                }
                break;
            }

            if (sett != null)
            {
                List <DubBuildSetting> setts;
                if (!settings.TryGetValue(propName, out setts))
                {
                    settings.Add(propName, setts = new List <DubBuildSetting>());
                }

                setts.Add(sett);
            }
        }