def run
      until @confirmed
        @namespace = capture_selection(
          title: 'Avalable Task Groups:',
          options: build_namespace_options
        )

        @task = capture_selection(
          title: "Available '#{@namespace}' commands:",
          options: build_task_options
        )

        unless @task.arg_names.empty?
          @task_arguments = @task.arg_names.each_with_object({}) { |arg, obj| obj[arg] = nil }
          capture_task_arguments while @task_arguments.values.any?(&:nil?)
        end

        @confirmed = capture_confirmation
      end

      # Invoke ensures that prerequirement tasks like rails :environment are run first.
      @task.invoke(*@task_arguments.values)
    end
def run
      until @confirmed
        @namespace = capture_selection(
          title: 'Avalable Task Groups:',
          options: build_namespace_options
        )

        @task = capture_selection(
          title: "Available '#{@namespace}' commands:",
          options: build_task_options
        )

        unless @task.arg_names.empty?
          @task_arguments = @task.arg_names.each_with_object({}) { |arg, obj| obj[arg] = nil }
          capture_task_arguments while @task_arguments.values.any?(&:nil?)
        end

        @confirmed = capture_confirmation
      end

      # Invoke ensures that prerequirement tasks like rails :environment are run first.
      @task.invoke(*@task_arguments.values)
    end
TODO: Some cascading condition set such that user can back up or go forward by 1 step