Sha256: d875733f45bd0d41f59297c5801f9995f1ae93cdb31bd2af2e983365684c9430

Contents?: true

Size: 1.6 KB

Versions: 1

Compression:

Stored size: 1.6 KB

Contents

class Bot
  attr_reader :organization
  
  def initialize(organization, gh_token)
    @organization = organization
    @gh_client = Octokit::Client.new(access_token: gh_token)
  end

  def clonar_entrega!(nombre)
    result = @gh_client.search_repositories "org:#{@organization} #{nombre} in:name", {per_page: 200}
    puts "Encontrados #{result.total_count} repositorios."
    FileUtils.mkdir_p nombre
    Dir.chdir(nombre) do
      result.items.each do |repo|
        puts "Clonando #{repo.name}..."
        Git.clone repo.ssh_url, repo.name
      end
    end
  end

  def preparar_correccion!(entrega, commit_base)
    entrega.crear_branch! 'base', commit_base
    entrega.crear_branch! 'entrega', 'master'
    renombrar_proyecto_wollok! entrega
    publicar_cambios! entrega
    crear_pull_request! entrega
  end

  def nombre
    'Yanapiri Bot'
  end

  def email
    'bot@yanapiri.org'
  end

  def git_author
    "#{nombre} <#{email}>"
  end

  def github_user
    @gh_client.user
  end

  private

  def crear_pull_request!(entrega)
    @gh_client.create_pull_request("#{@organization}/#{entrega.id}", "base", "entrega", "Corrección", entrega.mensaje_pull_request) rescue nil
  end

  def renombrar_proyecto_wollok!(entrega)
    entrega.repo.chdir do
      xml = File.read proyecto_wollok
      File.open(proyecto_wollok, "w") {|file| file.puts xml.sub(/<name>.*<\/name>/, "<name>#{entrega.id}</name>") }
    end

    entrega.repo.commit_all 'Renombrado proyecto Wollok', author: git_author
  end

  def publicar_cambios!(entrega)
    entrega.repo.push 'origin', '--all'
  end

  def proyecto_wollok
    '.project'
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
yanapiri-0.1.0 lib/yanapiri/bot.rb