module Metafrazo

Constants

VERSION

Attributes

config[W]

Public Class Methods

config() click to toggle source
# File lib/metafrazo.rb, line 35
def self.config
  @config ||= Config.new
end
configure() { |config| ... } click to toggle source
# File lib/metafrazo.rb, line 39
def self.configure
  yield(config)
end
run(payload) click to toggle source

returns true if your files

# File lib/metafrazo.rb, line 14
def self.run(payload)
  token = config.token
  repo = subject_repo(payload)

  git = Git.new(token, payload, repo)
  diff = GitDiffGenerator.new(git).generate
  changes = local_changes(diff, diff_paths(repo))

  unless changes.empty?
    if slack_enabled?
      m = message(changes, git.pull_request_url, git.issue_id)
      Slack.send_message(m, config.slack_webhook_url)
    else
      git.comment(message(changes))
    end
    # git.add_label("bug")
  end

  !changes.empty?
end

Private Class Methods

diff_paths(repo) click to toggle source
# File lib/metafrazo.rb, line 58
def self.diff_paths(repo)
  paths = config.paths || []
  paths = [config.path] if config.path
  paths = [repo[:path]] if repo && repo[:path]
  paths = repo[:paths] if repo && repo[:paths]
  paths
end
local_changes(diffs, paths) click to toggle source
# File lib/metafrazo.rb, line 45
def self.local_changes(diffs, paths)
  changes = []
  paths.each do |path|
    diffs.each do |diff|
      if diff.match(/^#{path}/)
        changes << diff
      end
    end
  end

  return changes
end
message(changes, url = nil, number = nil) click to toggle source
# File lib/metafrazo.rb, line 80
def self.message(changes, url = nil, number = nil)
  messages = [
    "ci sono nuove stringhe que sono in disperato bisogno di traduzione",
    "hay nuevas cadenas que están en desesperada necesidad de una traducción",
    "Que há novas cordas estão em necessidade desesperada de tradução",
    "il y a des nouvelles chaînes Que sont dans le besoin désespéré de la traduction",
    "gibt es neue Saiten que sind in einer verzweifelten Notwendigkeit Übersetzung"
  ]

  message = "#{config.usernames.join(' ')}: #{messages.sample} – "
  message += changes.map { |change| "`#{change}`" }.join(' ')
  message += " \n\n<#{url}| ##{number} - 👉> \n" if url&& number
end
slack_enabled?() click to toggle source
# File lib/metafrazo.rb, line 96
def self.slack_enabled?
  config.slack_webhook_url.present?
end
subject_repo(payload) click to toggle source
# File lib/metafrazo.rb, line 66
def self.subject_repo(payload)
  return nil unless config.repos

  name = payload["pull_request"]["head"]["repo"]["full_name"].downcase
  parts = name.split('/')

  names = config.repos.keys.select do |key|
    key = key.downcase
    key == name || (parts.count > 1 && parts[1] == key)
  end

  config.repos[names.first]
end