Пример #1
0
 private ProtoCore.VHDL.AST.ModuleNode CreateModule(string componentName, bool isBuiltIn = false)
 {
     ModuleName = componentName;
     if (!ModuleMap.ContainsKey(ModuleName))
     {
         ModuleMap[ModuleName] = new AST.ModuleNode(ModuleName, isBuiltIn);
         return(ModuleMap[ModuleName]);
     }
     return(null);
 }
Пример #2
0
        /// <summary>
        /// A default module contains only the following:
        ///     1. Default library list (IEEE)
        ///     2. Default use module list (IEEE numeric)
        ///     3. Reset signal
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public ProtoCore.VHDL.AST.ModuleNode CreateAndAppendDefaultModule(string name, bool isBuiltIn = false)
        {
            ModuleName = name;
            Validity.Assert(!ModuleMap.ContainsKey(ModuleName));

            ProtoCore.VHDL.AST.ModuleNode module = new AST.ModuleNode(ModuleName, isBuiltIn);
            ModuleMap[ModuleName] = module;


            // Library list
            List <string> libaryNameList = new List <string>();

            libaryNameList.Add("IEEE");
            module.LibraryList = ProtoCore.VHDL.Utils.GenerateLibraryNodeList(libaryNameList);

            // Module list
            List <string> moduleNameList = new List <string>();

            moduleNameList.Add("IEEE.STD_LOGIC_1164.ALL");
            moduleNameList.Add("IEEE.NUMERIC_STD.ALL");
            module.UseNodeList = ProtoCore.VHDL.Utils.GenerateUseNodeList(moduleNameList);

            return(module);
        }
Пример #3
0
        private static void ValidateCsProjFiles(string rmPath)
        {
            var projectFolders     = GetProjectFolderPaths(rmPath, true);
            var desktopFilePaths   = GetDesktopFilePaths(projectFolders);
            var desktopDefinitions = GetDesktopDefinitions(desktopFilePaths);

            foreach (var desktopDefinition in desktopDefinitions)
            {
                var netCorePath     = ConvertDesktopToNetCorePath(desktopDefinition.FilePath);
                var desktopFileName = Path.GetFileNameWithoutExtension(desktopDefinition.FilePath);
                var moduleName      = desktopFileName.Replace("Commands.", String.Empty);
                var netCoreFileName = Path.GetFileNameWithoutExtension(netCorePath);
                if (!File.Exists(netCorePath) || ModuleSkipList.Contains(moduleName))
                {
                    var priorColor = Console.ForegroundColor;
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine($"Skipping {netCoreFileName}");
                    Console.ForegroundColor = priorColor;
                    continue;
                }

                Console.WriteLine($"Validating {netCoreFileName}");
                var oldReferences          = desktopDefinition.ItemGroups.Where(ig => ig.References?.Any() ?? false).SelectMany(ig => ig.References).ToArray();
                var managementPackageNames = ModuleMap.ContainsKey(moduleName) ? ModuleMap[moduleName] : new List <string> {
                    $"Management.{moduleName}"
                };
                foreach (var managementPackageName in managementPackageNames)
                {
                    var oldManagementReference = oldReferences.FirstOrDefault(r => (r?.Include?.Contains(managementPackageName) ?? false) || (r?.HintPath?.Contains(managementPackageName) ?? false));
                    if (oldManagementReference == null)
                    {
                        var priorColor = Console.ForegroundColor;
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine($"{desktopFileName}: Could not locate management library containing {managementPackageName}");
                        Console.ForegroundColor = priorColor;
                        Environment.ExitCode    = 1;
                        continue;
                    }

                    var serializer = new XmlSerializer(typeof(NewProjectDefinition));
                    NewProjectDefinition netCoreDefinition;
                    using (var fileStream = new FileStream(netCorePath, FileMode.Open))
                    {
                        netCoreDefinition = (NewProjectDefinition)serializer.Deserialize(fileStream);
                    }

                    var newPackageReferences   = netCoreDefinition.ItemGroups.Where(ig => ig.PackageReferences?.Any() ?? false).SelectMany(ig => ig.PackageReferences);
                    var newManagementReference = newPackageReferences.FirstOrDefault(r => r?.Include?.Contains(managementPackageName) ?? false);
                    if (newManagementReference == null)
                    {
                        var priorColor = Console.ForegroundColor;
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine($"{netCoreFileName}: Could not locate management library containing {managementPackageName}");
                        Console.ForegroundColor = priorColor;
                        Environment.ExitCode    = 1;
                        continue;
                    }

                    var oldVersionString = GetVersionString(oldManagementReference);
                    var oldVersion       = StringToVersion(oldVersionString);
                    var newVersionString = newManagementReference.Version;
                    var newVersion       = StringToVersion(newVersionString);
                    // ReSharper disable once InvertIf
                    if (oldVersion > newVersion)
                    {
                        var priorColor = Console.ForegroundColor;
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine($"Version mismatch: {oldVersionString} > {newVersionString} : {managementPackageName}");
                        Console.ForegroundColor = priorColor;
                        Environment.ExitCode    = 1;
                    }
                }
            }
        }