Beispiel #1
0
        void CompileFiles(ExtensionEntity ext, UxlEntity uxl)
        {
            foreach (var e in uxl.CopyFiles)
            {
                if (!Test(e.Condition))
                {
                    continue;
                }

                if (e.Type != null)
                {
                    string newType;
                    if (!_deprecated.TryGetValue(e.Type.Value.String, out newType))
                    {
                        newType = e.Type.Value.String;
                    }

                    ext.CopyFiles.Add(new CopyFile(e.SourceName, e.Flags, e.TargetName, e.Condition, new SourceValue(e.Type.Value.Source, newType)));
                }
                else
                {
                    ext.CopyFiles.Add(e);
                }
            }

            foreach (var e in uxl.ImageFiles)
            {
                if (Test(e.Condition))
                {
                    ext.ImageFiles.Add(e);
                }
            }
        }
Beispiel #2
0
        // TODO: Deprecated method
        bool TryParseTypeEntity(string elmName, UxlEntity parent)
        {
            switch (elmName)
            {
            case "TypeElement":
                Log.Warning(GetSource(), ErrorCode.W0000, "<TypeElement> is deprecated, replace with <Require>");
                ParseRequire(elmName, parent.Elements);
                return(true);

            default:
                return(TryParseEntity(elmName, parent));
            }
        }
Beispiel #3
0
        bool TryParseEntity(string elmName, UxlEntity parent)
        {
            switch (elmName)
            {
            case "Set":
                ParseSet(elmName, parent.Elements);
                return(true);

            case "Require":
                ParseRequire(elmName, parent.Elements);
                return(true);

            case "CopyFile":
                ParseCopyFile(elmName, parent, false);
                return(true);

            case "ProcessFile":
                ParseCopyFile(elmName, parent, true);
                return(true);

            case "CopyDirectory":
                ParseCopyDirectory(elmName, parent.CopyFiles);
                return(true);

            case "ImageFile":
                ParseImageFile(elmName, parent.ImageFiles);
                return(true);

            // TODO: Remove deprecated stuff below
            case "Element":
                Log.Warning(GetSource(), ErrorCode.W0000, "<Element> is deprecated, replace with <Require>");
                ParseRequire(elmName, parent.Elements);
                return(true);

            case "LinkLibrary":
                Log.Warning(GetSource(), ErrorCode.W0000, "<LinkLibrary> is deprecated, replace with <Require Template=\"$(Name)\">");
                ParseLinkLibrary(elmName, parent.Elements);
                return(true);

            case "UnoReference":
                Log.Warning(GetSource(), ErrorCode.W0000, "<UnoReference> is deprecated, replace with <Require Entity=\"$(Entity)\">");
                ParseUnoReference(parent.Elements);
                return(true);

            default:
                return(false);
            }
        }
Beispiel #4
0
        void ParseCopyFile(string elmName, UxlEntity parent, bool process)
        {
            SourceValue?sourceName   = null;
            SourceValue?targetName   = null;
            var         isExecutable = false;
            var         overwrite    = true;
            SourceValue?cond         = null;
            SourceValue?type         = null;

            ParseAttributes(
                name =>
            {
                switch (name)
                {
                case "Name":
                    sourceName = GetValue();
                    return(true);

                case "TargetName":
                    targetName = GetValue();
                    return(true);

                case "IsExecutable":
                    isExecutable = GetBool();
                    return(true);

                case "Overwrite":
                    overwrite = GetBool();
                    return(true);

                case "Condition":
                    cond = GetValue();
                    return(true);

                case "Type":
                    type = GetValue();
                    return(true);

                default:
                    if (type != null || sourceName != null)
                    {
                        Log.Error(GetSource(), ErrorCode.E0000, "A (Type)=\"(Name)\" was already found on <" + elmName + ">");
                    }

                    type       = new SourceValue(GetSource(), name);
                    sourceName = GetValue();
                    return(true);
                }
            });

            if (sourceName == null)
            {
                Log.Error(GetSource(), ErrorCode.E0000, "Expected a 'Name' attribute on <" + elmName + ">");
            }
            else
            {
                CopyFileFlags flags = 0;
                if (process)
                {
                    flags |= CopyFileFlags.ProcessFile;
                }
                if (isExecutable)
                {
                    flags |= CopyFileFlags.IsExecutable;
                }
                if (!overwrite)
                {
                    flags |= CopyFileFlags.NoOverwrite;
                }

                parent.CopyFiles.Add(new CopyFile(sourceName.Value, flags, targetName, cond, type));

                if (type != null)
                {
                    parent.Elements.Add(new UxlElement(UxlElementType.Require, type.Value, sourceName.Value, cond, false));
                }
            }

            ParseEmptyElement();
        }