require 'asana'
access_token = '12345678'
project_id = 12345678 # find this in your URL
user_id = 12345678 # found this by right clicking on my avatar in asana and inspecting element - it's in the URL there
COMMENT_CHAR = '#' # replace with your editor's comment character(s)
client = Asana::Client.new do |c|
c.authentication :access_token, access_token
end
tasks = client.tasks.find_by_project(projectId: project_id, options: { fields: ['name', 'id', 'assignee'] })
gitmsg = "\n\n"
first = true
tasks.each do |task|
# only find tasks starting with a number in square brackets, that isn't set to zero
if (task.name =~ /[\d]/) && (!task.name.include? "[0]")
if task.assignee && task.assignee['id'] == user_id
# the first task (top most in Asana UI) is prefixed with a dot so it's not commented out (I use vim for commit messages)
if first
first = false
gitmsg += "."
end
gitmsg += COMMENT_CHAR + task.id.to_s + " " + COMMENT_CHAR + task.name + "\n"
end
end
end
File.open('.git/.gitmsg', 'w') { |file|
file.write(gitmsg)
}