Ejemplo n.º 1
0
		public bool Process(ILogger logger, IEnumerable<string> args, MetaProjectPersistence metaProject, ComponentsList components, string packagesOutputDirectory)
		{
			var destination = args.ParseStringParameter("to", metaProject.LastPublishedTo);
			if (string.IsNullOrWhiteSpace(destination))
				return true;
			if (!Directory.Exists(destination)) {
				logger.Error("Could not find destination folder: '{0}'", destination);
				return true;
			}
			metaProject.LastPublishedTo = destination;
			var componentNamePattern = args.FirstOrDefault(s => !s.StartsWith("-")) ?? ".*";
			var list = components.FilterBy(componentNamePattern, nugets: true);
			var listIsOk = true;
			foreach (var component in list)
				if (component is INugetSpec)
					if (!BuildHelper.PackageExists(component as INugetSpec, packagesOutputDirectory)) {
						listIsOk = false;
						logger.ErrorDetail("There is no built package for nuget '{0}'", component.Name);
					}
			if (listIsOk)
				foreach (var component in list)
					if (component is INugetSpec)
						BuildHelper.CopyIfNew(logger, component as INugetSpec, packagesOutputDirectory, destination);
			return true;
		}
Ejemplo n.º 2
0
		private IEnumerable<IVersionable> GetPendingForPublishingComponents(ILogger logger, ComponentsList components, string packagesOutputDirectory)
		{
			var list = new List<IVersionable>();
			foreach (var component in components.FilterBy(".*", nugets: true))
				if (component is INugetSpec && component is IVersionable)
					if (!BuildHelper.PackageExists(component as INugetSpec, packagesOutputDirectory))
						list.Add((IVersionable)component);
			foreach (var versionable in list) {
				var isRoot = true;
				foreach (var other in list)
					if (versionable.Dependencies.Contains(other))
						isRoot = false;
				if (isRoot)
					yield return versionable;
			}
		}
Ejemplo n.º 3
0
		public bool Process(ILogger logger, IEnumerable<string> args, MetaProjectPersistence metaProject, ComponentsList components, string packagesOutputDirectory)
		{
			var pattern = args.FirstOrDefault(s => !s.StartsWith("-"));
			bool full = args.Contains("-full") || args.Contains("-f");
			bool nugets = args.Contains("-nugets") || args.Contains("-n");
			bool orphans = args.Contains("-orphans");
			bool solutions = args.Contains("-solutions") || args.Contains("-s");
			bool orderByTreeDepth = args.Contains("-orderbytree") || args.Contains("-o");
			bool groupByType = (args.Contains("-groupbytype") || args.Contains("-g")) && !nugets;
			var i = 0;
			if (solutions) {
				logger.Info("=========== [Solutions]");
				foreach (var solution in components.Solutions) {
					logger.Info("[{0:0000}] {1}", ++i, solution.ToString());
					if (full)
						using (logger.Block) {
							int j = 0;
							foreach (var project in solution.Projects.OrderBy(p => p.Name)) {
								var component = components.FindMatchingComponent(project);
								if (component == null)
									logger.Info("[{0:0000}] Missing project '{1}'", ++j, project.Name);
								else
									logger.Info("[{0:0000}] {1}", ++j, component.ToString());
							}
						}
				}
			} else {
				if (string.IsNullOrWhiteSpace(pattern)) {
					logger.Info("Listing all {0}...", nugets ? "nugets" : "components");
				} else {
					logger.Info("Listing {1} filtered by '{0}' ...", pattern, nugets ? "nugets" : "components");
					pattern = pattern.ToLowerInvariant();
				}
				if (orphans)
					logger.Info("-- only orphan projects");
				if (orderByTreeDepth)
					logger.Info("-- ordered by dependents components tree depth (most referenced first)");
				if (groupByType)
					logger.Info("-- grouped by type");
				var lastGroup = "";
				foreach (var component in components.FilterBy(pattern, nugets, orderByTreeDepth, groupByType, orphans)) {
					if (groupByType && component.Type != lastGroup) {
						lastGroup = component.Type;
						logger.Info("=========== [{0}]", lastGroup);
					}
					logger.Info("[{0:0000}] {1}", ++i, (full ? component.ToLongString() : component.ToString()));
				}
			}
			return true;
		}