Ejemplo n.º 1
0
        private static void InitializeTransformer(IEnumerable<string> args)
        {
            var showHelp = false;
              var globalOptions = new OptionSet { { "h|?", "Show this help message and exit.", v => showHelp = v != null } };
              globalOptions.Add ("d|targetDir=", "The (root) directory containing the targeted assemblies.", dir => _workingDirectory = dir);

              var fileSystem = new FileSystem.FileSystem();
              Dictionary<string, OptionSet> options = new Dictionary<string, OptionSet>();
              globalOptions.Parse (args);

              // -- create AppDomainInfoBroker
              _workingDirectory = _workingDirectory.Replace ("\"", "");
              _workingDirectory = _workingDirectory.TrimEnd (new[] { '\\' });
              _infoBroker = new AppDomainInfoBroker (_workingDirectory);

              ((DefaultAssemblyResolver) GlobalAssemblyResolver.Instance).RemoveSearchDirectory (".");
              ((DefaultAssemblyResolver) GlobalAssemblyResolver.Instance).RemoveSearchDirectory ("bin");
              ((DefaultAssemblyResolver) GlobalAssemblyResolver.Instance).AddSearchDirectory (_workingDirectory);

              // -- create all the transformations
              var transformationFactoryFactory = new DLLBasedTransformationFactoryFactory (fileSystem, _workingDirectory);
              transformationFactoryFactory.TransformationsDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
              transformationFactoryFactory.AddOptions (globalOptions);

              // -- add the assembly tracker
              var trackerFactory = new DirectoryBasedAssemblyTrackerFactory (fileSystem, _workingDirectory);
              trackerFactory.AddOptions (globalOptions);

              // -- add the assembly signer
              _signerFactory = new AssemblySignerFactory (fileSystem);
              _signerFactory.AddOptions (globalOptions);

              // load the given transformations
              globalOptions.Parse (args);

              _transformationFactories = transformationFactoryFactory.CreateTrackerFactories ();
              // -- add options of the transformations
              foreach (var factory in _transformationFactories)
              {
            var tempOptions = new OptionSet();
            factory.AddOptions (tempOptions);
            options[factory.GetType().Name] = tempOptions;
              }

              try
              {
            var allOptions = new OptionSet();
            foreach (var option in globalOptions)
              allOptions.Add (option);
            foreach (var set in options.Values)
              foreach (var option in set)
            allOptions.Add (option);

            var leftOver = allOptions.Parse (args);
            trackerFactory.IncludeFiles = leftOver.Where (s => (!s.StartsWith ("-") || !s.StartsWith ("\\"))).ToList();
            _targetFiles = trackerFactory.IncludeFiles;
            leftOver.RemoveAll (s => (!s.StartsWith ("-") || !s.StartsWith ("\\")));

            if (showHelp || leftOver.Count != 0)
              ShowHelp (globalOptions, options, leftOver);
              }
              catch (OptionException e)
              {
            Console.WriteLine (e.Message);
            ShowHelp (globalOptions, options, new string[0]);
              }
              _trackerFactory = trackerFactory;
        }
Ejemplo n.º 2
0
        private static void InitializeTransformer(IEnumerable <string> args)
        {
            var showHelp      = false;
            var globalOptions = new OptionSet {
                { "h|?", "Show this help message and exit.", v => showHelp = v != null }
            };

            globalOptions.Add("d|targetDir=", "The (root) directory containing the targeted assemblies.", dir => _workingDirectory = dir);

            var fileSystem = new FileSystem.FileSystem();
            Dictionary <string, OptionSet> options = new Dictionary <string, OptionSet>();

            globalOptions.Parse(args);

            // -- create AppDomainInfoBroker
            _workingDirectory = _workingDirectory.Replace("\"", "");
            _workingDirectory = _workingDirectory.TrimEnd(new[] { '\\' });
            _infoBroker       = new AppDomainInfoBroker(_workingDirectory);

            ((DefaultAssemblyResolver)GlobalAssemblyResolver.Instance).RemoveSearchDirectory(".");
            ((DefaultAssemblyResolver)GlobalAssemblyResolver.Instance).RemoveSearchDirectory("bin");
            ((DefaultAssemblyResolver)GlobalAssemblyResolver.Instance).AddSearchDirectory(_workingDirectory);

            // -- create all the transformations
            var transformationFactoryFactory = new DLLBasedTransformationFactoryFactory(fileSystem, _workingDirectory);

            transformationFactoryFactory.TransformationsDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            transformationFactoryFactory.AddOptions(globalOptions);

            // -- add the assembly tracker
            var trackerFactory = new DirectoryBasedAssemblyTrackerFactory(fileSystem, _workingDirectory);

            trackerFactory.AddOptions(globalOptions);

            // -- add the assembly signer
            _signerFactory = new AssemblySignerFactory(fileSystem);
            _signerFactory.AddOptions(globalOptions);

            // load the given transformations
            globalOptions.Parse(args);

            _transformationFactories = transformationFactoryFactory.CreateTrackerFactories();
            // -- add options of the transformations
            foreach (var factory in _transformationFactories)
            {
                var tempOptions = new OptionSet();
                factory.AddOptions(tempOptions);
                options[factory.GetType().Name] = tempOptions;
            }

            try
            {
                var allOptions = new OptionSet();
                foreach (var option in globalOptions)
                {
                    allOptions.Add(option);
                }
                foreach (var set in options.Values)
                {
                    foreach (var option in set)
                    {
                        allOptions.Add(option);
                    }
                }

                var leftOver = allOptions.Parse(args);
                trackerFactory.IncludeFiles = leftOver.Where(s => (!s.StartsWith("-") || !s.StartsWith("\\"))).ToList();
                _targetFiles = trackerFactory.IncludeFiles;
                leftOver.RemoveAll(s => (!s.StartsWith("-") || !s.StartsWith("\\")));

                if (showHelp || leftOver.Count != 0)
                {
                    ShowHelp(globalOptions, options, leftOver);
                }
            }
            catch (OptionException e)
            {
                Console.WriteLine(e.Message);
                ShowHelp(globalOptions, options, new string[0]);
            }
            _trackerFactory = trackerFactory;
        }