Ejemplo n.º 1
0
        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) });
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
            }
        }