class Ruboty::Handlers::Bundler

Constants

NAMESPACE

Public Instance Methods

add(message) click to toggle source
# File lib/ruboty/handlers/bundler.rb, line 26
def add(message)
  if client = client_for(message.from_name)
    message.reply("Bundler started")
    gems = Gems.new(
      gemfile_content: Base64.decode64(client.get("Gemfile")[:content]),
      gemfile_lock_content: Base64.decode64(client.get("Gemfile.lock")[:content]),
    )
    gems.add(message[:gem_name], version: message[:version])
    gemfile_content = GemfileView.new(gems).to_s
    gemfile_lock_content = Install.new(gemfile_content).call
    client.update("Gemfile", gemfile_content)
    client.update("Gemfile.lock", gemfile_lock_content)
    message.reply("Bundler finished")
  else
    message.reply("I don't know your GitHub access token")
  end
rescue Errno::ENOENT
  message.reply("Failed to add gem")
end
delete(message) click to toggle source
# File lib/ruboty/handlers/bundler.rb, line 46
def delete(message)
  if client = client_for(message.from_name)
    message.reply("Bundler started")
    gems = Gems.new(
      gemfile_content: Base64.decode64(client.get("Gemfile")[:content]),
      gemfile_lock_content: Base64.decode64(client.get("Gemfile.lock")[:content]),
    )
    gems.delete(message[:gem_name])
    gemfile_content = GemfileView.new(gems).to_s
    gemfile_lock_content = Install.new(gemfile_content).call
    client.update("Gemfile", gemfile_content)
    client.update("Gemfile.lock", gemfile_lock_content)
    message.reply("Bundler finished")
  else
    message.reply("I don't know your GitHub access token")
  end
rescue GemNotFound
  message.reply("Gem not found")
rescue Errno::ENOENT
  message.reply("Failed to delete gem")
end

Private Instance Methods

access_tokens_table() click to toggle source

@return [Hash]

# File lib/ruboty/handlers/bundler.rb, line 71
def access_tokens_table
  robot.brain.data[NAMESPACE] ||= {}
end
client_for(username) click to toggle source

@param username [String, nil] @return [Ruboty::Bundler::Client, nil]

# File lib/ruboty/handlers/bundler.rb, line 77
def client_for(username)
  if access_token = access_tokens_table[username]
    Client.new(access_token: access_token)
  end
end