#!/usr/bin/env ruby

require_relative '../lib/coconductor'

# Contributor Covenant
repo = 'ContributorCovenant/contributor_covenant'
vendorer = Coconductor::Vendorer.new('contributor-covenant', filename: 'code-of-conduct.md')
tar_args = "--include='*/content/version' --strip-components=2 -C #{vendorer.dir}"
`curl -L "https://api.github.com/repos/#{repo}/tarball" | tar xf - #{tar_args}`
Dir["#{vendorer.dir}/version/**/#{vendorer.filename}"].each do |path|
  vendorer.raw_content = File.read(path)
  File.write(path, vendorer.content)
end

# Citizen Code of Conduct
repo = 'stumpsyn/policies'
filename = 'citizen_code_of_conduct.md'
vendorer = Coconductor::Vendorer.new('citizen-code-of-conduct', repo: repo, filename: filename)
versions = {
  '2.0' => 'd0594789ea324a42e26b495034952b6ce08d9f51',
  '2.1' => 'b7705a4315a5e58fea58ae3d4b1de82bd564ac86',
  '2.2' => '93b7b06f52c9dd526d2395bfa9f5f1723deae32a',
  '2.3' => 'b1eb8deb5da073c2bd02a8e742e017edfc422554'
}
versions.each do |version, sha|
  vendorer.ref = sha
  vendorer.vendor(version: version)
end

# No Code of Conduct
Coconductor::Vendorer.new('no-code-of-conduct', repo: 'domgetter/NCoC').vendor

# Django
reporting_link = "[Reporting Guidelines]({% url 'conduct_reporting' %})"
faq_link = "[the FAQ]({% url 'conduct_faq' %})"
Coconductor::Vendorer.new('django',
                          repo: 'django/djangoproject.com',
                          source_path: 'djangoproject/templates/conduct/index.html',
                          html: true,
                          replacements: {
                            'Django Software Foundation' => '[GOVERNING_BODY]',
                            'Django' => '[COMMUNITY_NAME]',
                            'conduct@djangoproject.com' => '[EMAIL_ADDRESS]',
                            reporting_link => '[LINK_TO_REPORTING_GUIDELINES]',
                            faq_link => '[LINK_TO_FAQ]',
                            /([a-z])\[/i => '\1 ['
                          }).vendor

# Geek Feminism
url = 'http://geekfeminism.wikia.com/wiki/Community_anti-harassment/Policy?action=raw'
replacements = {
  '[give]' => '[LIST_OF_SPACES - e.g. "our mailing lists and IRC channel"]',
  '[list,]' => '[LIST_OF_SPACES - e.g. "our mailing lists and IRC channel"]'
}
vendorer = Coconductor::Vendorer.new('geek-feminism', url: url, wiki: true, replacements: replacements)
content = vendorer.content.split('## Anti-harassment policy text')[1]
versions = content.split('### Longer version')
versions = versions.map { |v| v.gsub('### Shorter version', '').strip }
vendorer.write_with_meta(versions.first, version: 'shorter')
vendorer.write_with_meta(versions.last, version: 'longer')

# Go
replacements = {
  '(“Gophers”)' => '',
  'Gopher' => 'Go',
  ' Go ' => ' [COMMUNITY_NAME] ',
  'conduct@golang.org' => '[EMAIL_ADDRESS]',
  'Cassandra Salisbury, ' => '',
  'the Open Source Programs Office' => '[GOVERNING_BODY]',
  'the Google Open Source Programs Office' => '[GOVERNING_BODY]',
  ' and the Google Open Source Strategy team' => '',
  'opensource@google.com' => '[GOVERNING_BODY_EMAIL_ADDRESS]'
}
Coconductor::Vendorer.new('go',
                          repo: 'golang/go',
                          source_path: 'doc/conduct.html',
                          html: true,
                          replacements: replacements).vendor