Exemplo n.º 1
0
        public async Task RunAsync()
        {
            _Log.Info("(+) => included references");
            _Log.Info("(-) => ignored references");
            _Log.Info("(~) => identified package rerferences");

            _Log.Info("");

            _Log.Info($"analyzing assemblies in");

            foreach (var path in _Config.Assemblies.SourcePaths)
            {
                _Log.Info($"  {path}");
            }



            var folder     = new AssemblySource(_Config.Assemblies.Sources, _Config.Assemblies.ExcludePatterns);
            var assemblies = await folder.GetAssembliesAsync();

            var orderedByLeastReferences = assemblies.OrderBy(x => x.KnownReferences.Count());

            _Log.Info("");
            Echo(orderedByLeastReferences);

            _Log.Info("");
            _Log.Info("deriving bundles / pacakges");
            _Log.Info("");

            var bundler = new Bundler(_Config);
            var bundles = bundler.GetBundles(orderedByLeastReferences);

            Echo(bundles);

            _Config.NuSpecDirectory.Create();

            var writer = new NuSpecWriter(_Config);

            _Log.Info($"writing nuspec files to : {_Config.NuSpecDirectory}");

            foreach (var bundle in bundles)
            {
                var target        = new FileInfo(Path.Combine(_Config.NuSpecDirectory.FullName, $"{bundle.PackageFullName}.nuspec"));
                var nuspecContent = writer.GetNuSpec(bundle);

                _Log.Info($"  {target.Name}");
                File.WriteAllText(target.FullName, nuspecContent);
            }

            _Log.Info($"created {bundles.Count()} nuspec(s)");
        }