public override void Execute(ListOptions options, ILogger logger) { var stacks = AppDirectory.GetStacks().OrderBy(s => s).ToArray(); var runningStacks = Docker.GetComposeStacks().ToArray(); foreach (var stack in stacks) { var color = runningStacks.Contains(stack) ? Color.Success : Color.Danger; Output.Fancy.WriteLine(stack, color); } logger.Info("stack list", new { stack_count = stacks.Length, stacks = string.Join(",", stacks), running_stacks = string.Join(",", runningStacks) }); }
public override void Execute(DownOptions options, ILogger logger) { var stacks = options.Stacks.Any() ? options.Stacks : Docker.GetComposeStacks(); if (!stacks.Any()) { logger.Error("no running stacks found"); ErrorPrinter.Error("There are no running stacks."); return; } logger.Trace("stopping stacks in parallel", new { stack_count = stacks.Count(), stacks = string.Join(",", stacks) }); new ParallelTaskManager <string, TaskState>(stacks, GetRow, (stack, progress) => Execute(stack, progress, options, logger), HandleProgress, new[] { 0, 5 }) .Execute(Settings.UserConfig.Parallelism); }
public override void Execute(UpdateOptions options, ILogger logger) { var stacks = options.Stack.Any() ? options.Stack : Docker.GetComposeStacks(); if (!stacks.Any()) { logger.Error("no running stacks found"); ErrorPrinter.Error("There are no running stacks."); return; } logger.Trace("updating stacks in parallel", new { stack_count = stacks.Count(), stacks = string.Join(",", stacks) }); new ParallelTaskManager <string, (TaskState, TaskState)>(stacks, GetRow, (stack, progress) => Execute(stack, progress, options, logger), HandleProgress, new[] { 0, 5, 0 }, new[] { "Stack", "Pull", "Restart" }) .Execute(Settings.UserConfig.Parallelism); if (options.RemoveDanglingImages) { RemoveDanglingImages(logger); } }