示例#1
0
        public static string WriteFile(string content, string fileName)
        {
            string file = userDirectory + "\\" + fileName + ".sfk";

            FileCondition condition = CheckFile(userDirectory, file);

            if (condition == FileCondition.DirectoryNotExist)
            {
                Directory.CreateDirectory(userDirectory);
                FileStream fs = File.Create(file);
                fs.Close();
            }
            else if (condition == FileCondition.FileNotExist)
            {
                FileStream fs = File.Create(file);
                fs.Close();
            }

            StreamWriter sw = new StreamWriter(file);

            sw.Write(content);
            sw.Close();

            return(file);
        }
示例#2
0
        public static string ReadFile(string fileName)
        {
            string file = userDirectory + "\\" + fileName + ".sfk";

            FileCondition condition = CheckFile(userDirectory, file);

            if (condition == FileCondition.FileExist)
            {
                string text = File.ReadAllText(file);
                return(text);
            }

            return(null);
        }
        private static bool VerifyFile(File document, FileCondition condition)
        {
            if (condition?.Null == null)
            {
                return(true);
            }
            if (condition.Null.Value)
            {
                if (!(string.IsNullOrEmpty(document?.FilePath) || document.FileSize == 0 || document.FileStream != null))
                {
                    return(false);
                }
            }

            if (condition.Null.Value)
            {
                return(true);
            }
            return(document != null && document.FileSize > 0);
        }
示例#4
0
        private void GetAllFiles()
        {
            var fileSearch  = new SearchConditionLists();
            var fileNumCond = new FileCondition(-1, "", FileAttribute.fsaFileNumber, CustomAttributeTarget.catSelf,
                                                CompareOperation.coNotNull);

            fileSearch.FileConditions = new ArrayList();
            fileSearch.FileConditions.Add(fileNumCond);
            FileDataTransportObject filesObj = _conn.DocumentServer.FindFile(fileSearch);

            if (!filesObj.objects.Any())
            {
                return;
            }

            for (int i = 0; i < filesObj.objects.Count() && i < 10; i++)
            {
                ImgrFiles item = new ImgrFiles();
                item.Text  = filesObj.objects[i].fileNumber1;
                item.Value = filesObj.objects[i].id;
                comboBox2.Items.Add(item);
            }
            comboBox2.SelectedIndex = 0;
        }
示例#5
0
        private void GenerateConditionsForPrebuiltLibraries(FamilyDefinition family, Framework fw, CopyJob job)
        {
            var srcDir       = Path.GetFullPath(_Builder.ExpandVariables(job.SourceFolder));
            var allLibraries = Directory.GetFiles(srcDir, "*.a", SearchOption.AllDirectories)
                               .Select(l => l.Substring(srcDir.Length).TrimStart('\\')).ToArray();

            var conditions = new[]
            {
                new PrebuiltLibraryCondition("hard-float", "com.sysprogs.bspoptions.arm.floatmode", "-mfloat-abi=hard", "soft-float"),
                new PrebuiltLibraryCondition("no-interrupts", "com.sysprogs.bspoptions.nrf5x.interrupts", "no"),
                new PrebuiltLibraryCondition("short-wchar", "com.sysprogs.bspoptions.nrf5x.wchar", "-fshort-wchar"),
            };

            Dictionary <string, PrebuiltLibraryCondition> conditionsByFolder = new Dictionary <string, PrebuiltLibraryCondition>();

            foreach (var cond in conditions)
            {
                conditionsByFolder[cond.Folder] = cond;
                if (cond.InverseFolder != null)
                {
                    conditionsByFolder[cond.InverseFolder] = cond;
                }
            }

            foreach (var grp in allLibraries.GroupBy(l => l.Substring(0, l.IndexOf('\\')), StringComparer.InvariantCultureIgnoreCase))
            {
                HashSet <PrebuiltLibraryCondition> allConditionsInGroup = new HashSet <PrebuiltLibraryCondition>();
                List <ConstructedLibraryCondition> libs = new List <ConstructedLibraryCondition>();

                foreach (var lib in grp)
                {
                    List <string> components   = lib.Split('\\').ToList();
                    int           libComponent = components.IndexOf("lib");
                    if (libComponent < 0)
                    {
                        throw new Exception($"Cannot build a list of conditional folders. {lib} does not contain 'lib' in the path.");
                    }

                    components.RemoveRange(0, libComponent + 1);

                    string cortexPrefix = "cortex-";
                    if (!components[0].StartsWith(cortexPrefix))
                    {
                        throw new Exception($"Relative path to {lib} does not start with 'cortex-'");
                    }

                    string cortexCore = components[0].Substring(cortexPrefix.Length);

                    components.RemoveAt(0);
                    components.RemoveAt(components.Count - 1);

                    foreach (var cmp in components)
                    {
                        if (!conditionsByFolder.TryGetValue(cmp, out var cond))
                        {
                            throw new Exception($"Don't know how to map '{cmp}' to a prebuilt library condition");
                        }

                        allConditionsInGroup.Add(cond);
                    }

                    libs.Add(new ConstructedLibraryCondition {
                        Library = $"$$SYS:BSP_ROOT$$/{family.FamilySubdirectory}/{job.TargetFolder}/" + lib.Replace('\\', '/'), PathComponents = components.ToArray(), Core = cortexCore
                    });
                }

                foreach (var lib in libs)
                {
                    List <Condition> finalConditions = new List <Condition>();
                    finalConditions.Add(new Condition.Equals {
                        Expression = "$$com.sysprogs.bspoptions.nrf5x.cortex$$", ExpectedValue = lib.Core
                    });
                    foreach (var usedCond in allConditionsInGroup)
                    {
                        var eqCond = new Condition.Equals {
                            Expression = $"$${usedCond.Variable}$$", ExpectedValue = usedCond.Value
                        };
                        if (lib.PathComponents.Contains(usedCond.Folder))
                        {
                            finalConditions.Add(eqCond);
                        }
                        else
                        {
                            finalConditions.Add(new Condition.Not {
                                Argument = eqCond
                            });
                        }
                    }

                    FileCondition cond = new FileCondition
                    {
                        FilePath           = lib.Library,
                        ConditionToInclude = new Condition.And
                        {
                            Arguments = finalConditions.ToArray()
                        }
                    };

                    _Builder.AddFileCondition(cond);
                }
            }
        }