Exemplo n.º 1
0
        private string GetMarshalHelperPath(string wrapperHeader)
        {
            ConfigMapping pylonNodeConfig          = Context.ConfigurationContext.ConfigFilesLoaded.Where(config => config.Id == "pylon-node").FirstOrDefault();
            string        relativNodePylonRootPath = PathHelpers.GetRelativePath(Path.GetDirectoryName(TranslationUnit.FilePath), Path.GetDirectoryName(pylonNodeConfig.AbsoluteFilePath));

            return(Path.Combine(relativNodePylonRootPath, wrapperHeader));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Get include path for cpp include
        /// </summary>
        private string GetIncludePathOfCppInclude(ConfigMapping configurationContext, CppInclude unit)
        {
            IncludeMapping includeOfUnit = null;

            IEnumerable <ConfigMapping> configFilesLoaded = configurationContext.ConfigFilesLoaded;

            foreach (ConfigMapping configFileLoad in configFilesLoaded)
            {
                foreach (IncludeMapping include in configFileLoad.Includes)
                {
                    if (include.Id == unit.Name)
                    {
                        includeOfUnit = include;
                        break;
                    }
                }

                if (includeOfUnit != null)
                {
                    break;
                }
            }

            return((includeOfUnit != null) ? includeOfUnit.File : "invalid");
        }
Exemplo n.º 3
0
        /// <summary>
        /// Get file path of cpp include
        /// </summary>
        private string GetFilePathOfCppInclude(ConfigMapping configurationContext, CppInclude unit)
        {
            ConfigMapping  configOfUnit  = null;
            IncludeMapping includeOfUnit = null;

            IEnumerable <ConfigMapping> configFilesLoaded = configurationContext.ConfigFilesLoaded;

            foreach (ConfigMapping configFileLoad in configFilesLoaded)
            {
                foreach (IncludeMapping include in configFileLoad.Includes)
                {
                    if (include.Id == unit.Name)
                    {
                        includeOfUnit = include;
                        configOfUnit  = configFileLoad;
                        break;
                    }

                    if ((configOfUnit != null) && (includeOfUnit != null))
                    {
                        break;
                    }
                }
            }

            return((((configOfUnit != null) && (includeOfUnit != null)) ? Path.Combine(Path.GetDirectoryName(configOfUnit.AbsoluteFilePath), (string.IsNullOrEmpty(includeOfUnit.Alias) ? unit.Name : includeOfUnit.Alias.ToLower())) : "invalid") + ".gen");
        }
Exemplo n.º 4
0
        public NodeJSTypeReferenceCollector(ConfigMapping configurationContext, CppSharp.Types.ITypeMapDatabase typeMapDatabase, DriverOptions driverOptions)
        {
            ConfigurationContext = configurationContext;
            TypeMapDatabase      = typeMapDatabase;
            DriverOptions        = driverOptions;

            typeReferences = new Dictionary <Declaration, NodeJSTypeReference>();
        }
Exemplo n.º 5
0
        public ASTConverter(BindingContext bindingContext, ConfigMapping configurationContext, CppModule moduleContext)
        {
            this.configurationContext = configurationContext;
            this.bindingContext       = bindingContext;
            this.moduleContext        = moduleContext;

            cppElementToDeclarationMapping = new Dictionary <CppElement, Declaration>();
        }
Exemplo n.º 6
0
        public BindingContext(ConfigMapping configurationContext, DriverOptions driverOptions, CppModule moduleContext)
            : base(driverOptions)
        {
            ConfigurationContext = configurationContext;
            ParserContext        = moduleContext;
            Options = driverOptions;

            FoundEnums = new SortedList();
            ASTConverter converter = new ASTConverter(this, configurationContext, moduleContext);

            ASTContext = converter.Convert();
        }
Exemplo n.º 7
0
        static async Task Main(string[] args)
        {
            ConfigMapping.Config();
            var configurationOption = GetConfiguration(args);
            var logger = GetLogger();

            logger.LogInformation("{datetime} operation {command} has started", DateTime.Now, configurationOption.Command);

            InitDatabase();

            await new CommandFactory().Execute(configurationOption, logger).ConfigureAwait(false);

            logger.LogInformation("{datetime} operation {command} has finished", DateTime.Now, configurationOption.Command);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Initializes the specified instance with a config root file.
        /// </summary>
        public bool Initialize()
        {
            generatorRootPath = Path.GetDirectoryName(configRootPath);

            log.Info("Loading config files...");
            config = ConfigMapping.Load(configRootPath, new VariableMapping("VC_TOOLS_PATH", VcToolsPath));

            DateTime configTimestamp = ConfigMapping.GetLatestTimestamp(config.ConfigFilesLoaded);

            configCheckFilePath = config.Id + "-" + "codegen.check";

            configHasChanged = !File.Exists(configCheckFilePath) || configTimestamp > File.GetLastWriteTime(configCheckFilePath);
            if (configHasChanged)
            {
                log.Info("Config files " + string.Join(", ", config.ConfigFilesLoaded.Select(file => Path.GetFileName(file.AbsoluteFilePath))) + " changed.");
            }

            return(configHasChanged);
        }
Exemplo n.º 9
0
 public NodeJSGenerator(ConfigMapping config, DriverOptions driverOptions, CppModule mainModule)
     : base(new BindingContext(config, driverOptions, mainModule))
 {
     // Setup generator type
     Context.Options.GeneratorKind = GeneratorType.NodeJS;
 }
Exemplo n.º 10
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            ConfigMapping.Run();

            services.AddDbContext <ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MyShopDb")));

            services.AddMvc(config =>
            {
                var policy = new AuthorizationPolicyBuilder()
                             .RequireAuthenticatedUser()
                             .Build();
                config.Filters.Add(new AuthorizeFilter(policy));
            })
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            services.AddCors(options =>
            {
                options.AddPolicy("AllowAll",
                                  builder =>
                {
                    builder
                    .AllowAnyOrigin()
                    .AllowAnyMethod()
                    .AllowAnyHeader();
                });
            });

            services.AddAuthorization(options =>
            {
                options.AddPolicy("Test", policy => policy.RequireRole("Admin"));
            });

            services.Configure <MvcOptions>(options =>
            {
                options.Filters.Add(new CorsAuthorizationFilterFactory("AllowAll"));
            });

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer           = true,
                    ValidateAudience         = true,
                    ValidateLifetime         = true,
                    ValidateIssuerSigningKey = true,
                    ValidIssuer      = Configuration["Jwt:Issuer"],
                    ValidAudience    = Configuration["Jwt:Issuer"],
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
                };
            });

            services.AddIdentity <AppUser, IdentityRole>()
            .AddEntityFrameworkStores <ApplicationDbContext>()
            .AddDefaultTokenProviders();

            services.ConfigureApplicationCookie(options =>
            {
                options.Events.OnRedirectToLogin = context =>
                {
                    context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                    return(Task.CompletedTask);
                };
            });

            services.Configure <IdentityOptions>(options =>
            {
                // Password settings
                options.Password.RequireDigit           = true;
                options.Password.RequiredLength         = 8;
                options.Password.RequireNonAlphanumeric = false;
                options.Password.RequireUppercase       = true;
                options.Password.RequireLowercase       = false;
                options.Password.RequiredUniqueChars    = 6;

                // Lockout settings
                options.Lockout.DefaultLockoutTimeSpan  = TimeSpan.FromMinutes(30);
                options.Lockout.MaxFailedAccessAttempts = 10;
                options.Lockout.AllowedForNewUsers      = true;

                // User settings
                options.User.RequireUniqueEmail = true;
            });

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info()
                {
                    Title = "API", Version = "v1"
                });
            });

            services.AddScoped <IApplicationDbContext, ApplicationDbContext>();

            services.Scan(s => s
                          .FromAssemblies(Assembly.Load("MyShop.Service"))
                          .AddClasses(c => c.Where(i => i.Name.EndsWith("Service")))
                          .AsImplementedInterfaces()
                          .WithScopedLifetime()
                          );

            services.Scan(s => s
                          .FromAssemblies(Assembly.Load("MyShop.Repository"))
                          .AddClasses(c => c.Where(i => i.Name.EndsWith("Repository")))
                          .AsImplementedInterfaces()
                          .WithScopedLifetime()
                          );
        }
Exemplo n.º 11
0
        /// <summary>
        /// Initialize this Parser from a config file.
        /// </summary>
        public void Initialize(ConfigMapping config)
        {
            masterConfig     = config;
            masterHeaderFile = masterConfig.Id + ".hpp";

            // Config is updated if ForceParsing is true
            masterConfigHasChanged = ForceParsing;

            // Create CppModule instance
            masterCppModule = new CppModule();

            // Create CastXml instance
            castXML = new CastXML();
            castXML.ExecutablePath = CastXmlExecutablePath;
            castXML.VcToolsPath    = VcToolsPath;

            // Add current directory for gccxml
            castXML.IncludeDirs.Add(new IncludeDirMapping(Environment.CurrentDirectory));

            // Configure gccxml with include directory
            foreach (ConfigMapping configFile in masterConfig.ConfigFilesLoaded)
            {
                // Add all include directories
                foreach (IncludeDirMapping includeDir in configFile.IncludeDirs)
                {
                    castXML.IncludeDirs.Add(includeDir);
                }
            }

            // Check if the file has any includes related config
            List <string> filesWithIncludes = new List <string>();

            foreach (ConfigMapping configFile in masterConfig.ConfigFilesLoaded)
            {
                bool isWithInclude = false;

                // Add this config file as an include to process
                includeToProcess.Add(configFile.Id, true);

                if (configFile.IncludeDirs.Count > 0)
                {
                    isWithInclude = true;
                }

                if (configFile.Includes.Count > 0)
                {
                    isWithInclude = true;
                }

                if (configFile.References.Count > 0)
                {
                    isWithInclude = true;
                }

                // If this config file has any include rules
                if (isWithInclude)
                {
                    filesWithIncludes.Add(configFile.Id);
                }
            }

            // Write include files
            foreach (ConfigMapping configFile in masterConfig.ConfigFilesLoaded)
            {
                // Check if config have includes
                if (!filesWithIncludes.Contains(configFile.Id))
                {
                    // Skip, process next config
                    continue;
                }

                var outputConfig = new StringWriter();
                outputConfig.WriteLine("// pylon-node include config for {0} - Version {1}", configFile.Id, Version);
                outputConfig.WriteLine("// Do not edit this file, is generated by pylon-node-gen");
                outputConfig.WriteLine("//");
                outputConfig.WriteLine();

                // Write includes
                foreach (IncludeMapping includeMapping in configFile.Includes)
                {
                    CppInclude cppInclude = masterCppModule.FindInclude(includeMapping.Id);
                    if (cppInclude == null)
                    {
                        includeToProcess.Add(includeMapping.Id, true);

                        cppInclude      = new CppInclude();
                        cppInclude.Name = includeMapping.Id;
                        masterCppModule.Add(cppInclude);
                    }

                    outputConfig.WriteLine("#include <{0}>", includeMapping.File);
                }

                // Write includes to references
                foreach (ConfigMapping reference in configFile.References)
                {
                    if (filesWithIncludes.Contains(reference.Id))
                    {
                        outputConfig.WriteLine("#include \"{0}\"", reference.Id + ".hpp");
                    }
                }

                outputConfig.Close();

                string outputConfigString = outputConfig.ToString();
                string outputConfigFile   = configFile.Id + ".hpp";

                // Test if Last config file was generated. If not, then we need to generate it
                // If it exists, then we need to test if it is the same than previous run
                configFile.IsConfigUpdated = ForceParsing;

                if (File.Exists(outputConfigFile) && !ForceParsing)
                {
                    configFile.IsConfigUpdated = outputConfigString != File.ReadAllText(outputConfigFile);
                }
                else
                {
                    configFile.IsConfigUpdated = true;
                }

                // Just write the header file when the file is updated or new
                if (configFile.IsConfigUpdated)
                {
                    log.Info("Config file changed for C++ headers (module: " + configFile.Id + ", config: " + configFile.FilePath + ")");
                    masterConfigHasChanged = true;

                    var fileWriter = new StreamWriter(outputConfigFile);
                    fileWriter.Write(outputConfigString);
                    fileWriter.Close();
                }
            }
        }