class Abt::Providers::Asana::Commands::Finalize

Public Class Methods

description() click to toggle source
# File lib/abt/providers/asana/commands/finalize.rb, line 12
def self.description
  "Move current/specified task to section (column) for finalized tasks"
end
usage() click to toggle source
# File lib/abt/providers/asana/commands/finalize.rb, line 8
def self.usage
  "abt finalize asana[:<project-gid>/<task-gid>]"
end

Public Instance Methods

perform() click to toggle source
# File lib/abt/providers/asana/commands/finalize.rb, line 16
def perform
  abort("This is a no-op for tasks outside the current project") unless project_gid == config.path.project_gid
  require_task!
  print_task(project_gid, task)

  maybe_move_task
end

Private Instance Methods

current_task_section() click to toggle source
# File lib/abt/providers/asana/commands/finalize.rb, line 39
def current_task_section
  task_section_membership&.dig("section")
end
finalized_section() click to toggle source
# File lib/abt/providers/asana/commands/finalize.rb, line 49
def finalized_section
  @finalized_section ||= api.get("sections/#{config.finalized_section_gid}",
                                 opt_fields: "name")
end
maybe_move_task() click to toggle source
# File lib/abt/providers/asana/commands/finalize.rb, line 26
def maybe_move_task
  if task_already_in_finalized_section?
    warn("Task already in section: #{current_task_section['name']}")
  else
    warn("Moving task to section: #{finalized_section['name']}")
    move_task
  end
end
move_task() click to toggle source
# File lib/abt/providers/asana/commands/finalize.rb, line 54
def move_task
  body = { data: { task: task_gid } }
  body_json = Oj.dump(body, mode: :json)
  api.post("sections/#{config.finalized_section_gid}/addTask", body_json)
end
task() click to toggle source
# File lib/abt/providers/asana/commands/finalize.rb, line 60
def task
  @task ||= api.get("tasks/#{task_gid}",
                    opt_fields: "name,memberships.section.name,permalink_url")
end
task_already_in_finalized_section?() click to toggle source
# File lib/abt/providers/asana/commands/finalize.rb, line 35
def task_already_in_finalized_section?
  !task_section_membership.nil?
end
task_section_membership() click to toggle source
# File lib/abt/providers/asana/commands/finalize.rb, line 43
def task_section_membership
  task["memberships"].find do |membership|
    membership.dig("section", "gid") == config.finalized_section_gid
  end
end