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)); }
/// <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"); }
/// <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"); }
public NodeJSTypeReferenceCollector(ConfigMapping configurationContext, CppSharp.Types.ITypeMapDatabase typeMapDatabase, DriverOptions driverOptions) { ConfigurationContext = configurationContext; TypeMapDatabase = typeMapDatabase; DriverOptions = driverOptions; typeReferences = new Dictionary <Declaration, NodeJSTypeReference>(); }
public ASTConverter(BindingContext bindingContext, ConfigMapping configurationContext, CppModule moduleContext) { this.configurationContext = configurationContext; this.bindingContext = bindingContext; this.moduleContext = moduleContext; cppElementToDeclarationMapping = new Dictionary <CppElement, Declaration>(); }
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(); }
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); }
/// <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); }
public NodeJSGenerator(ConfigMapping config, DriverOptions driverOptions, CppModule mainModule) : base(new BindingContext(config, driverOptions, mainModule)) { // Setup generator type Context.Options.GeneratorKind = GeneratorType.NodeJS; }
// 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() ); }
/// <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(); } } }