# frozen_string_literal: true

namespace :repo do
  desc 'Generate the authors.md file'
  task :authors do
    file = File.open('AUTHORS.md', 'w')
    file << <<~HEADER
      Mastodon is available on [GitHub](https://github.com/tootsuite/mastodon)
      and provided thanks to the work of the following contributors:

    HEADER

    url = 'https://api.github.com/repos/tootsuite/mastodon/contributors?anon=1'
    HttpLog.config.compact_log = true
    while url.present?
      response = HTTP.get(url)
      contributors = Oj.load(response.body)
      contributors.each do |c|
        file << "* [#{c['login']}](#{c['html_url']})\n" if c['login']
        file << "* [#{c['name']}](mailto:#{c['email']})\n" if c['name']
      end
      url = LinkHeader.parse(response.headers['Link']).find_link(%w(rel next))&.href
    end

    file << <<~FOOTER

      This document is provided for informational purposes only. Since it is only updated once per release, the version you are looking at may be currently out of date. To see the full list of contributors, consider looking at the [git history](https://github.com/tootsuite/mastodon/graphs/contributors) instead.
    FOOTER
  end
end