Exemple #1
0
        public void TestRepositoryImporterCSV()
        {
            //ARRANGE
            IRepositoryImporter repositoryImporter = new RepositoryImporter(new DBContext());

            var item = new Item()
            {
                PointOfSale = "ERES",
                Product     = "3123F",
                Date        = DateTime.Now,
                Stock       = 2
            };

            List <Item> items = new List <Item>();

            items.Add(item);

            //ACT
            repositoryImporter.ImporterFileHelper(items);
        }
Exemple #2
0
        static void RunRepoImporter()
        {
            var targetIndexName = AnalysisServices.GetTargetIndexName(repoName);

            string[] file = new string[0];

            bool requireProjectsExist = true;

            string assembly = null;

            if (File.Exists(rootDirectory))
            {
                if (rootDirectory.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) ||
                    rootDirectory.EndsWith(".exe", StringComparison.OrdinalIgnoreCase))
                {
                    assembly = rootDirectory;
                }

                file                 = new[] { rootDirectory };
                rootDirectory        = Path.GetDirectoryName(rootDirectory);
                requireProjectsExist = false;
            }
            Directory.CreateDirectory("output");
            using (StreamWriter writer = new StreamWriter(@"output\log.txt"))
            {
                Logger logger = new MultiLogger(
                    new ConsoleLogger(),
                    new TextLogger(TextWriter.Synchronized(writer)));



                FileSystem fileSystem = new CachingFileSystem(
                    new UnionFileSystem(file.Union(Enumerable.Repeat(solutionPath, String.IsNullOrEmpty(solutionPath) ? 0 : 1)),
                                        new RootFileSystem(rootDirectory,
                                                           new MultiFileSystemFilter(
                                                               new DirectoryFileSystemFilter(@"\.", ".sln"),
                                                               new GitIgnoreFilter(),
                                                               new BinaryFileSystemFilter(new string[] { ".exe", ".dll", "*.blob", ".db" })
                                                               ))
                {
                    DisableEnumeration = file.Length != 0
                }));

                List <RepoProjectAnalyzer> projectAnalyzers = new List <RepoProjectAnalyzer>()
                {
                    //new MSBuildSolutionProjectAnalyzer()
                    new BinLogSolutionProjectAnalyzer()
                    {
                        RequireProjectFilesExist = requireProjectsExist
                    }
                };


                if (assembly != null)
                {
                    fileSystem = new FileSystem();

                    projectAnalyzers.Clear();
                    projectAnalyzers.Add(new MetadataAsSourceProjectAnalyzer(file));
                }

                IAnalysisTarget analysisTarget = null;
                if (analysisOnly)
                {
                    analysisTarget = new NullAnalysisTarget();
                }
                else
                {
                    ElasticsearchStorage storage = GetStorage();

                    logger.WriteLine("Removing repository");
                    ((IStorage)storage).RemoveRepository(targetIndexName).GetAwaiter().GetResult();

                    logger.WriteLine("Removed repository");

                    analysisTarget = storage;
                }

                RepositoryImporter importer = new RepositoryImporter(repoName,
                                                                     rootDirectory,
                                                                     new AnalysisServices(
                                                                         targetIndexName,
                                                                         fileSystem,
                                                                         analyzers: new RepoFileAnalyzer[]
                {
                    new SolutionFileAnalyzer(),
                    new MSBuildFileAnalyzer(),
                    new XmlFileAnalyzer(
                        ".ds",
                        ".xml",
                        ".config",
                        ".settings"),
                })
                                                                     //new ExternalRepoFileAnalyzer(new[] { @"d:\temp\Codex" }), // This indexer allows an external tool to write out codex spans for importing. We sill need to add support for a 'marker' file so we don't have to pass a folder.
                {
                    AnalysisTarget = analysisTarget,
                    Logger         = logger,
                })
                {
                    AnalyzerDatas = projectAnalyzers.Select(a => new AnalyzerData()
                    {
                        Analyzer = a
                    }).ToList()
                };

                importer.Import(finalizeImport: finalize).GetAwaiter().GetResult();
            }
        }
        private static async Task Main(string[] args)
        {
            // 0. Bootstraping
            Log.Logger = new LoggerConfiguration()
                         .WriteTo.Console()
                         .CreateLogger();

            var appConfig = await new AppConfigurationProvider().Get();

            var repositoryImportStrategies = new IRepositoryImportStrategy[]
            {
                new SvnRepositoryStrategy()
            };

            var buildStrategies = new ISourceCodeBuilderStrategy[]
            {
                new DotNetCoreSourceBuilderStrategy()
            };

            var deployStrategies = new IDeployStrategy[]
            {
                new InternetInformationServerDeploymentStrategy()
            };

            // 1. Source Repo
            // 1.1 Type (SVN, GIT)
            // 1.2 Central Credentials
            // Moved to settings.

            // 3. Project Name
            // Moved to settings.

            var fetchResult = await RepositoryImporter.ImportAsync(Settings.ProjectName, Settings.SourceRepoUrl, SourceCodeRepositoryType.Svn, appConfig, new SvnAuthInfo(Settings.Username, Settings.Password),
                                                                   new ReadOnlyCollection <IRepositoryImportStrategy>(repositoryImportStrategies));

            if (fetchResult.HasErrors)
            {
                goto end;
            }

            Log.Information(fetchResult.CheckOutDirectory);

            // 4. Targets to build.
            var buildTargets = new[]
            {
                new BuildTarget("Web", @"Trunk\Nrea.Web", BuildTargetType.DotNetCore),
                //new BuildTarget("Migration", @"Trunk\Nrea.Migration", BuildTargetType.DotNetCore)
            };

            var buildResult = await SourceCodeBuilder.BuildTargetsAsync(fetchResult.CheckOutDirectory, buildTargets,
                                                                        new ReadOnlyCollection <ISourceCodeBuilderStrategy>(buildStrategies));

            if (buildResult.Any(x => x.HasErrors))
            {
                goto end;
            }

            // 5. Targets to deploy.
            var deployTargets = new[]
            {
                new DeployTarget(buildResult[0], DeployTargetType.IIS, new IISDeployTargetExtraInfo("Nrea", 54007)),
                //new DeployTarget(buildTargets[1], DeployTargetType.DotNetCoreRun, new IISDeployTargetExtraInfo("Nrea"))
            };

            var deployResult = await DeployManager.DeployTargetsAsync(deployTargets, new ReadOnlyCollection <IDeployStrategy>(deployStrategies));

            foreach (var item in deployResult)
            {
                Log.Information($"Deployment result: {item.Target.BuildTarget.Target.Name}, IsError: {item.HasErrors}");
            }

end:
            Log.Information("End.");
            Console.ReadLine();
        }
Exemple #4
0
        static void RunRepoImporter(params string[] args)
        {
            string repoName        = args[0];
            string rootDirectory   = args[1];
            var    targetIndexName = AnalysisServices.GetTargetIndexName(repoName);

            string[] file = new string[0];

            bool requireProjectsExist = true;

            string assembly = null;

            if (File.Exists(rootDirectory))
            {
                if (rootDirectory.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) ||
                    rootDirectory.EndsWith(".exe", StringComparison.OrdinalIgnoreCase))
                {
                    assembly = rootDirectory;
                }

                file                 = new[] { rootDirectory };
                rootDirectory        = Path.GetDirectoryName(rootDirectory);
                requireProjectsExist = false;
            }
            Directory.CreateDirectory("output");
            using (StreamWriter writer = new StreamWriter(@"output\log.txt"))
            {
                Logger logger = new MultiLogger(
                    new ConsoleLogger(),
                    new TextLogger(TextWriter.Synchronized(writer)));



                FileSystem fileSystem = new CachingFileSystem(
                    new UnionFileSystem(file.Union(args.Skip(2)),
                                        new RootFileSystem(rootDirectory,
                                                           new MultiFileSystemFilter(
                                                               new DirectoryFileSystemFilter(@"\.", ".sln"),
                                                               new GitIgnoreFilter(),
                                                               new BinaryFileSystemFilter(new string[] { ".exe", ".dll", "*.blob", ".db" })
                                                               ))
                {
                    DisableEnumeration = file.Length != 0
                }));

                List <RepoProjectAnalyzer> projectAnalyzers = new List <RepoProjectAnalyzer>()
                {
                    new MSBuildSolutionProjectAnalyzer()
                    //new ManagedSolutionProjectAnalyzer()
                    {
                        RequireProjectFilesExist = requireProjectsExist
                    }
                };


                if (assembly != null)
                {
                    fileSystem = new FileSystem();

                    projectAnalyzers.Clear();
                    projectAnalyzers.Add(new MetadataAsSourceProjectAnalyzer(file));
                }

                IAnalysisTarget analysisTarget = null;
                if (analysisOnly)
                {
                    analysisTarget = new NullAnalysisTarget();
                }
                else
                {
                    ElasticsearchStorage storage = new ElasticsearchStorage(url);

                    logger.WriteLine("Removing repository");
                    ((IStorage)storage).RemoveRepository(targetIndexName).GetAwaiter().GetResult();

                    logger.WriteLine("Removed repository");

                    analysisTarget = storage;
                }

                RepositoryImporter importer = new RepositoryImporter(repoName,
                                                                     rootDirectory,
                                                                     new AnalysisServices(
                                                                         targetIndexName,
                                                                         fileSystem,
                                                                         analyzers: new RepoFileAnalyzer[]
                {
                    new SolutionFileAnalyzer(),
                    new MSBuildFileAnalyzer(),
                    new XmlFileAnalyzer(
                        ".ds",
                        ".xml",
                        ".config",
                        ".settings"),
                })
                {
                    AnalysisTarget = analysisTarget,
                    Logger         = logger,
                })
                {
                    AnalyzerDatas = projectAnalyzers.Select(a => new AnalyzerData()
                    {
                        Analyzer = a
                    }).ToList()
                };

                importer.Import(finalizeImport: finalize).GetAwaiter().GetResult();
            }
        }