Ejemplo n.º 1
0
        public static void WriteUninstall(ModuleProcessor moduleProcessor, string path)
        {
            Console.WriteLine("Generating {0}", FrameworkOutputMode.Uninstall);
            var commands = GetUninstallCommands(moduleProcessor);
            var output   = ReplaceParameters(commands, moduleProcessor);

            WriteToFile(output, path, FrameworkOutputMode.Uninstall);
        }
Ejemplo n.º 2
0
        public AccountService(BPFinanceContext context, IOptions <AppSettings> appSettingsAccessor, IOptions <AppParams> appParamsAccessor)
        {
            _context = context;
            var repository = new BPFinanceRepository(_context, appParamsAccessor.Value.EditUserId);

            _businessUnitIds = appParamsAccessor.Value.BusinessUnitIds;

            var basketBusinessUnitIdProvider = new BasketBusinessUnitIdProvider(_context);

            _paymentInTimeDiscountProvider = new PaymentInTimeDiscountProvider(appParamsAccessor.Value.BusinessUnitSettings);

            _clientAccountProcessor = new ClientAccountProcessor(
                _context,
                repository);
            _accountSettingsProcessor = new AccountSettingsProcessor(
                _context,
                repository);
            _orderProcessor = new OrderProcesor(
                _context,
                repository,
                appParamsAccessor.Value.BasketOrderDescription,
                appParamsAccessor.Value.ManagerId,
                basketBusinessUnitIdProvider);
            var rubricProcessor = new RubricProcessor(
                _context,
                repository);
            var graphicProcessor = new GraphicProcessor(
                _context,
                repository);

            _orderImProcessor = new OrderImProcessor(
                _context,
                repository);
            var stringProcessor = new StringProcessor(
                _context,
                repository);
            var moduleProcessor = new ModuleProcessor(
                _context,
                repository);
            var moduleMaketProcessor = new ModuleMaketProcessor(
                appSettingsAccessor.Value.OrderImFolderTemplate,
                appSettingsAccessor.Value.DatabaseName);

            _positionImProcessor = new PositionImProcessor(
                _context,
                repository,
                _orderImProcessor,
                stringProcessor,
                moduleProcessor,
                moduleMaketProcessor);
            _orderPositionProcessor = new OrderPositionProcessor(
                _context,
                repository,
                rubricProcessor,
                graphicProcessor,
                _positionImProcessor,
                appParamsAccessor.Value.BasketOrderDescription);
        }
Ejemplo n.º 3
0
        public OrderPositionService(BPFinanceContext context, IOptions <AppSettings> appSettingsAccessor, IOptions <AppParams> appParamsAccessor)
        {
            _context = context;
            var repository = new BPFinanceRepository(_context, appParamsAccessor.Value.EditUserId);

            var orderImFolderTemplate = appSettingsAccessor.Value.OrderImFolderTemplate;
            var dbName = appSettingsAccessor.Value.DatabaseName;

            var basketBusinessUnitIdProvider = new BasketBusinessUnitIdProvider(_context);

            _orderPositionDataProcessor = new OrderPositionDataProcessor(
                _context,
                orderImFolderTemplate,
                dbName);
            _clientProcessor = new ClientProcessor(
                _context);
            _orderProcessor = new OrderProcesor(
                _context,
                repository,
                appParamsAccessor.Value.BasketOrderDescription,
                appParamsAccessor.Value.ManagerId,
                basketBusinessUnitIdProvider);
            var rubricProcessor = new RubricProcessor(
                _context,
                repository);
            var graphicProcessor = new GraphicProcessor(
                _context,
                repository);
            var orderImProcessor = new OrderImProcessor(
                _context,
                repository);
            var stringProcessor = new StringProcessor(
                _context,
                repository);
            var moduleProcessor = new ModuleProcessor(
                _context,
                repository);
            var moduleMaketProcessor = new ModuleMaketProcessor(
                appSettingsAccessor.Value.OrderImFolderTemplate,
                appSettingsAccessor.Value.DatabaseName);
            var positionImProcessor = new PositionImProcessor(
                _context,
                repository,
                orderImProcessor,
                stringProcessor,
                moduleProcessor,
                moduleMaketProcessor);

            _orderPositionProcessor = new OrderPositionProcessor(
                _context,
                repository,
                rubricProcessor,
                graphicProcessor,
                positionImProcessor,
                appParamsAccessor.Value.BasketOrderDescription);
        }
Ejemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context">
        /// The <see cref="ModuleProcessor"/> context to get <see cref="ImpWiz.Import"/> types and methods.
        /// </param>
        /// <param name="libLoaderTypeDef">
        /// The library loader<see cref="TypeDefinition"/> to use for library and symbol resolving.
        /// <c>null</c> for fallback to the default <see cref="LibLoader"/>
        /// </param>
        /// <param name="loaderCookie">The <see cref="LoaderCookie"/>.</param>
        public ImportLoaderCecil(ModuleProcessor context, TypeDefinition libLoaderTypeDef = null, string loaderCookie = null)
        {
            LoaderCookie = loaderCookie;
            libLoaderTypeDef ??= context.AssemblyContext.ImportAssemblyLibLoader;

            var methodInfo = libLoaderTypeDef.Methods.First(x =>
                                                            x.Name == "GetInstance" && x.IsStatic && x.IsPublic && x.Parameters.Count == 1 &&
                                                            x.Parameters[0].ParameterType.FullName == "System.String");

            GetInstanceMethod = methodInfo;


            LibraryLoaderTypeDefinition = libLoaderTypeDef;
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            var searchPath = args[0];

            Console.WriteLine("CoreLayerADC Framework Compiler");
            Console.WriteLine("-------------------------------");

            Console.WriteLine("Search path: {0}", searchPath);

            try
            {
                _moduleProcessor =
                    ModuleProcessor.GetModuleProcessor(ModuleLoader.LoadModulesFromDirectory(searchPath));
                FileOutput.WriteAll(_moduleProcessor, searchPath);
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine("Terminating application: {0}", ex.Message);
            }
        }
Ejemplo n.º 6
0
        private static IEnumerable <string> GetInstallCommands(ModuleProcessor moduleProcessor)
        {
            var commands = new List <string>();
            var tempDict = new Dictionary <string, string>();

            // Load commands in Temporary dict
            foreach (var moduleName in moduleProcessor.InstallModuleNames)
            {
                var module = moduleProcessor.Modules[moduleName];
                foreach (var element in module.Sections.SelectMany(section => section.Elements))
                {
                    tempDict.Add(element.Name, element.Expressions.Install);
                }

                // Fill commands based on order
                commands.AddRange(GetModuleOutputPrefix(moduleName));
                commands.AddRange(moduleProcessor.SortedModuleExpressions[moduleName].Select(name => tempDict[name]));
                commands.AddRange(GetModuleOutputSuffix(moduleName));
            }
            return(commands);
        }
Ejemplo n.º 7
0
 public FileProcessor(ILogger logger, ModuleProcessor moduleProcessor, Configuration configuration)
 {
     ModuleProcessor = moduleProcessor ?? throw new ArgumentNullException(nameof(moduleProcessor));
     Configuration   = configuration ?? throw new ArgumentNullException(nameof(configuration));
     Logger          = logger ?? throw new ArgumentNullException(nameof(logger));
 }
Ejemplo n.º 8
0
 private Task <string> ProcessAssembly(ModuleDefinition module)
 {
     return(ModuleProcessor.ReadModule(module));
 }
Ejemplo n.º 9
0
        private IList<ModuleProcessor> GatherModulesNeedingProcessing()
        {
            var processors = new List<ModuleProcessor>();

            if (!IsModuleProcessable(ModuleDefinition))
            {
                return processors;
            }

            var moduleReaders = new List<ModuleReader>();
            var stilettoReferences = StilettoReferences.Create(AssemblyResolver);
            var references = new References(ModuleDefinition, stilettoReferences);

            var copyLocalAssemblies = new Dictionary<string, bool>(StringComparer.Ordinal);
            var localDebugFiles = new Queue<string>();

            foreach (var copyLocal in ReferenceCopyLocalPaths)
            {
                if (copyLocal.EndsWith(".pdb") || copyLocal.EndsWith(".mdb"))
                {
                    // We'll come back to the debug files after we have a complete
                    // list of local assemblies.
                    localDebugFiles.Enqueue(copyLocal);
                    continue;
                }

                if (copyLocal.EndsWith(".exe") || copyLocal.EndsWith(".dll"))
                {
                    copyLocalAssemblies[copyLocal] = false;
                }
            }

            // Check which assemblies have debug symbols and, consequently,
            // for which assemblies we will attempt to read and write such symbols.
            while (localDebugFiles.Count > 0)
            {
                var pdb = localDebugFiles.Dequeue();
                var rawPath = Path.Combine(Path.GetDirectoryName(pdb), Path.GetFileNameWithoutExtension(pdb));
                var dll = rawPath + ".dll";
                var exe = rawPath + ".exe";

                if (copyLocalAssemblies.ContainsKey(dll))
                {
                    copyLocalAssemblies[dll] = true;
                }

                if (copyLocalAssemblies.ContainsKey(exe))
                {
                    copyLocalAssemblies[exe] = true;
                }
            }

            foreach (var pathAndHasPdb in copyLocalAssemblies)
            {
                var path = pathAndHasPdb.Key;
                var hasPdb = pathAndHasPdb.Value;
                var assembly = AssemblyDefinition.ReadAssembly(path, new ReaderParameters { ReadSymbols = hasPdb });

                // TODO: Figure out how to differentiate between third-party libs and client code.
                if (assembly.Name.HasPublicKey)
                {
                    LogWarning("Assembly " + assembly.Name + " is strong-named and will not be processed.");
                    continue;
                }

                dependencies[path] = Tuple.Create(assembly, hasPdb);

                foreach (var module in assembly.Modules)
                {
                    if (!IsModuleProcessable(module))
                    {
                        continue;
                    }

                    if (module.IsMain)
                    {
                        var importedCtor = module.Import(references.InternalsVisibleToAttribute);
                        var internalsVisibleTo = new CustomAttribute(importedCtor);
                        internalsVisibleTo.ConstructorArguments.Add(new CustomAttributeArgument(module.TypeSystem.String, ModuleDefinition.Assembly.Name.Name));
                        module.Assembly.CustomAttributes.Add(internalsVisibleTo);
                    }

                    moduleReaders.Add(ModuleReader.Read(module));
                    AddModuleToAssemblyDictionary(module, null);
                }
            }

            AddModuleToAssemblyDictionary(ModuleDefinition, null);
            var mainModuleProcessor = new ModuleProcessor(
                errorReporter,
                ModuleDefinition,
                references,
                moduleReaders);

            processors.Add(mainModuleProcessor);

            return processors;
        }
Ejemplo n.º 10
0
 private void AddModuleToAssemblyDictionary(ModuleDefinition module, ModuleProcessor moduleProcessor)
 {
     modulesByAssembly[GetModuleKey(module)] = moduleProcessor;
 }
Ejemplo n.º 11
0
        private static IEnumerable <string> ReplaceParameters(IEnumerable <string> commands, ModuleProcessor moduleProcessor)
        {
            Console.WriteLine("\tReplacing parameters");
            var output = commands;

            output = ReplacePlaceholders(output, moduleProcessor.Placeholders);
            output = ReplaceVersion(output, moduleProcessor.Version);

            return(output);
        }
Ejemplo n.º 12
0
 public static void WriteAll(ModuleProcessor moduleProcessor, string path)
 {
     WriteInstall(moduleProcessor, path);
     WriteUninstall(moduleProcessor, path);
 }