Commit 66e7be0
Changed files (19)
bin/console
@@ -1,7 +1,7 @@
#!/usr/bin/env ruby
-require "bundler/setup"
-require "del"
+require 'bundler/setup'
+require 'del'
# You can add fixtures and/or initialization code here to make experimenting
# with your gem easier. You can also use a different console, if you like.
@@ -10,9 +10,9 @@ require "del"
# require "pry"
# Pry.start
-require "irb"
+require 'irb'
-settings = YAML.load(IO.read(Pathname.new(Dir.home).join(".delrc")))
-settings.merge!(start_server: false)
+settings = YAML.safe_load(IO.read(Pathname.new(Dir.home).join('.delrc')))
+settings[:start_server] = false
Del.start(settings)
IRB.start(__FILE__)
exe/del
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require "del/cli"
+require 'del/cli'
Del::CLI.start(ARGV)
lib/del/examples/routes.rb
@@ -1,17 +1,17 @@
Del.configure do |x|
- puts "Registering custom routes."
+ puts 'Registering custom routes.'
x.router.register(/.*/) do |message|
- Del.logger.info("Backwards!")
+ Del.logger.info('Backwards!')
message.reply(message.text.reverse)
end
x.router.register(/^cowsay (.*)/) do |message, match_data|
- Del.logger.info("COWSAY!")
+ Del.logger.info('COWSAY!')
message.execute_shell(['cowsay', match_data[1]])
end
x.router.register(/^[Hh]ello/) do |message|
- message.reply("Hi!")
+ message.reply('Hi!')
end
end
lib/del/configuration.rb
@@ -1,6 +1,6 @@
module Del
class Configuration
- SOCKET_FILE="/tmp/del.sock"
+ SOCKET_FILE = '/tmp/del.sock'.freeze
attr_accessor :default_rooms
attr_accessor :host
attr_accessor :jid
@@ -19,7 +19,7 @@ module Del
@jid = settings.fetch(:jid)
@logger = Logger.new(STDOUT)
@logger.level = settings.fetch(:log_level, Logger::INFO).to_i
- @muc_domain = settings.fetch(:muc_domain, "conf.hipchat.com")
+ @muc_domain = settings.fetch(:muc_domain, 'conf.hipchat.com')
@name = settings.fetch(:full_name)
@password = settings.fetch(:password)
@router = DefaultRouter.new
lib/del/connection.rb
@@ -8,7 +8,7 @@ module Del
end
def connect(robot)
- client.on_exception do |error, connection, error_source|
+ client.on_exception do |error, _connection, _error_source|
Del.logger.error(error)
disconnect
end
@@ -16,7 +16,7 @@ module Del
sleep 0.0001 until client.is_connected?
client.auth(configuration.password)
roster = Jabber::Roster::Helper.new(client, false)
- roster.add_update_callback do |old_item, item|
+ roster.add_update_callback do |_old_item, item|
configuration.users.upsert(item['jid'], item.attributes) if item
end
roster.get_roster
@@ -37,14 +37,14 @@ module Del
@mucs[stripped_jid] = muc
muc.on_message do |_, nickname, message|
Del.logger.debug([nickname, message].inspect)
- other_jid = roster.items.find { |jid, item| item.iname == nickname }
+ other_jid = roster.items.find { |_jid, item| item.iname == nickname }
robot.receive(message, source: Source.new(user: User.new(other_jid[0], other_jid[1]), room: stripped_jid))
end
muc.join(room_jid)
end
- #list_rooms(configuration.muc_domain).each do |room|
- #rooms.upsert(room)
- #end
+ # list_rooms(configuration.muc_domain).each do |room|
+ # rooms.upsert(room)
+ # end
end
def deliver(jid, message)
@@ -59,7 +59,7 @@ module Del
end
def disconnect
- Del.logger.info("byte me!")
+ Del.logger.info('byte me!')
client.close
rescue IOError, SystemCallError => error
Del.logger.error(error)
@@ -72,17 +72,17 @@ module Del
end
def jid
- @jid ||= jid_for(configuration.jid, "chat.hipchat.com", "bot")
+ @jid ||= jid_for(configuration.jid, 'chat.hipchat.com', 'bot')
end
- #def list_rooms(muc_domain)
- #Jabber::MUC::MUCBrowser.new(client).muc_rooms(muc_domain).map do |jid, name|
- #jid.to_s
- #end
- #end
+ # def list_rooms(muc_domain)
+ # Jabber::MUC::MUCBrowser.new(client).muc_rooms(muc_domain).map do |jid, name|
+ # jid.to_s
+ # end
+ # end
def encode_string(s)
- s.to_s.encode("UTF-8", invalid: :replace, undef: :replace)
+ s.to_s.encode('UTF-8', invalid: :replace, undef: :replace)
end
def jid_for(jid, domain, resource)
lib/del/default_router.rb
@@ -10,12 +10,11 @@ module Del
def route(message)
@routes.each do |route|
- if matches = route[:pattern].match(message.text)
- begin
- route[:command].call(message, matches)
- rescue StandardError => error
- Del.logger.error(error)
- end
+ next unless matches = route[:pattern].match(message.text)
+ begin
+ route[:command].call(message, matches)
+ rescue StandardError => error
+ Del.logger.error(error)
end
end
end
lib/del/message.rb
@@ -1,6 +1,6 @@
module Del
class Message
- PREFIX = "/code"
+ PREFIX = '/code'.freeze
attr_reader :text, :robot, :source
def initialize(text, robot:, source:)
lib/del/robot.rb
@@ -9,7 +9,7 @@ module Del
end
def get_funky!(start_server: true)
- Del.logger.info("๐ฅ๐ฅ๐ฅ")
+ Del.logger.info('๐ฅ๐ฅ๐ฅ')
xmpp_connection.connect(self)
socket_server.run(self) if start_server
rescue Interrupt
@@ -33,9 +33,9 @@ module Del
case request['command']
when 'send_message'
send_message(request['jid'], request['message'])
- "Sent!"
+ 'Sent!'
else
- "Unknown"
+ 'Unknown'
end
end
lib/del/shell_command.rb
@@ -5,7 +5,7 @@ module Del
end
def run
- Open3.popen3(@command) do |stdin, stdout, stderr, wait_thr|
+ Open3.popen3(@command) do |_stdin, stdout, stderr, wait_thr|
stdout.each_line { |line| yield line }
stderr.each_line { |line| yield line }
wait_thr.value.success?
lib/del/version.rb
@@ -1,3 +1,3 @@
module Del
- VERSION = "0.1.16"
+ VERSION = '0.1.16'.freeze
end
lib/del.rb
@@ -1,26 +1,26 @@
-require "json"
-require "logger"
-require "net/hippie"
-require "open3"
-require "socket"
-require "xmpp4r"
-require "xmpp4r/muc/helper/mucbrowser"
-require "xmpp4r/muc/helper/simplemucclient"
-require "xmpp4r/roster/helper/roster"
-require "yaml"
+require 'json'
+require 'logger'
+require 'net/hippie'
+require 'open3'
+require 'socket'
+require 'xmpp4r'
+require 'xmpp4r/muc/helper/mucbrowser'
+require 'xmpp4r/muc/helper/simplemucclient'
+require 'xmpp4r/roster/helper/roster'
+require 'yaml'
-require "del/configuration"
-require "del/connection"
-require "del/default_router"
-require "del/message"
-require "del/repository"
-require "del/robot"
-require "del/shell_command"
-require "del/socket_connection"
-require "del/socket_server"
-require "del/source"
-require "del/user"
-require "del/version"
+require 'del/configuration'
+require 'del/connection'
+require 'del/default_router'
+require 'del/message'
+require 'del/repository'
+require 'del/robot'
+require 'del/shell_command'
+require 'del/socket_connection'
+require 'del/socket_server'
+require 'del/source'
+require 'del/user'
+require 'del/version'
module Del
def self.start(settings)
spec/default_router_spec.rb
@@ -1,7 +1,7 @@
RSpec.describe Del::DefaultRouter do
subject { described_class.new }
- describe "#route" do
+ describe '#route' do
let(:recorder) { [] }
before :each do
subject.register(/^Hello World!$/) do |message|
@@ -24,8 +24,8 @@ RSpec.describe Del::DefaultRouter do
end
it 'passes captures to the block' do
- subject.route(double(text: "cowsay HELLO"))
- matches = /^cowsay (.*)$/.match("cowsay HELLO")
+ subject.route(double(text: 'cowsay HELLO'))
+ matches = /^cowsay (.*)$/.match('cowsay HELLO')
expect(recorder).to match_array([text: 'cowsay HELLO', match_data: matches])
end
end
spec/message_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe Del::Message do
let(:source) { instance_double(Del::Source) }
let(:text) { SecureRandom.hex(16) }
- describe "#reply" do
+ describe '#reply' do
before { allow(source).to receive(:reply) }
it 'delegates to the source to reply' do
@@ -15,7 +15,7 @@ RSpec.describe Del::Message do
end
end
- describe "#execute_shell" do
+ describe '#execute_shell' do
before { allow(source).to receive(:reply) }
it 'executes the command' do
@@ -24,17 +24,17 @@ RSpec.describe Del::Message do
end
it 'returns false when the shell command fails' do
- expect(subject.execute_shell(['exit', '1'])).to be_falsey
+ expect(subject.execute_shell(%w[exit 1])).to be_falsey
end
it 'replies with the stdout content' do
- subject.execute_shell(['echo', 'hello'])
+ subject.execute_shell(%w[echo hello])
expect(source).to have_received(:reply).with(robot, "/code hello\n")
end
it 'yields each line to stdout' do
@called = false
- subject.execute_shell(['echo', 'hello']) do |line|
+ subject.execute_shell(%w[echo hello]) do |line|
@called = true
expect(line).to eql("hello\n")
end
@@ -56,7 +56,7 @@ RSpec.describe Del::Message do
end
end
- describe "#to_s" do
+ describe '#to_s' do
specify { expect(subject.to_s).to include(source.to_s) }
specify { expect(subject.to_s).to include(text) }
end
spec/repository_spec.rb
@@ -2,10 +2,10 @@ require 'spec_helper'
RSpec.describe Del::Repository do
subject { described_class.new(storage: storage, mapper: mapper) }
- let(:storage) { Hash.new }
+ let(:storage) { {} }
let(:mapper) { double(:mapper, map_from: nil) }
- describe "#[]" do
+ describe '#[]' do
let(:jid) { SecureRandom.uuid }
let(:attributes) { { 'jid' => jid, 'name' => 'Teren Delvon Jones' } }
let(:user) { instance_double(Del::User) }
@@ -20,7 +20,7 @@ RSpec.describe Del::Repository do
specify { expect(subject.find(SecureRandom.uuid)).to be_nil }
end
- describe "#all" do
+ describe '#all' do
let(:del_attributes) { { 'name' => 'Teren Delvon Jones' } }
let(:ice_cube_attributes) { { 'name' => "O'Shea Jackson Sr." } }
let(:del) { instance_double(Del::User) }
@@ -32,7 +32,7 @@ RSpec.describe Del::Repository do
allow(mapper).to receive(:map_from).with(del_attributes).and_return(del)
allow(mapper).to receive(:map_from).with(ice_cube_attributes).and_return(cube)
- expect(subject.all).to match_array([ del, cube ])
+ expect(subject.all).to match_array([del, cube])
end
end
end
spec/spec_helper.rb
@@ -1,9 +1,9 @@
-require "bundler/setup"
-require "del"
+require 'bundler/setup'
+require 'del'
RSpec.configure do |config|
# Enable flags like --only-failures and --next-failure
- config.example_status_persistence_file_path = ".rspec_status"
+ config.example_status_persistence_file_path = '.rspec_status'
# Disable RSpec exposing methods globally on `Module` and `main`
config.disable_monkey_patching!
spec/user_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
RSpec.describe Del::User do
- describe ".map_from" do
+ describe '.map_from' do
subject { described_class }
let(:attributes) { { 'jid' => SecureRandom.uuid } }
del.gemspec
@@ -1,32 +1,32 @@
-lib = File.expand_path("../lib", __FILE__)
+lib = File.expand_path('lib', __dir__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
-require "del/version"
+require 'del/version'
Gem::Specification.new do |spec|
- spec.name = "del"
+ spec.name = 'del'
spec.version = Del::VERSION
- spec.authors = ["mo"]
- spec.email = ["mo@mokhan.ca"]
+ spec.authors = ['mo']
+ spec.email = ['mo@mokhan.ca']
- spec.summary = %q{Del is a funky robosapien.}
- spec.description = %q{Del is a funky robosapien.}
- spec.homepage = "https://www.mokhan.ca"
- spec.license = "MIT"
+ spec.summary = 'Del is a funky robosapien.'
+ spec.description = 'Del is a funky robosapien.'
+ spec.homepage = 'https://www.mokhan.ca'
+ spec.license = 'MIT'
spec.files = `git ls-files -z`.split("\x0").reject do |f|
f.match(%r{^(test|spec|features)/})
end
- spec.bindir = "exe"
+ spec.bindir = 'exe'
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
- spec.require_paths = ["lib"]
+ spec.require_paths = ['lib']
- spec.add_dependency "bundler-audit", "~> 0.6"
- spec.add_dependency "net-hippie", "~> 0.1"
- spec.add_dependency "rubocop", "~> 0.55"
- spec.add_dependency "thor", "~> 0.20"
- spec.add_dependency "xmpp4r", "~> 0.5"
- spec.add_development_dependency "bundler", "~> 1.16"
- spec.add_development_dependency "rake", "~> 10.0"
- spec.add_development_dependency "rspec", "~> 3.0"
+ spec.add_dependency 'bundler-audit', '~> 0.6'
+ spec.add_dependency 'net-hippie', '~> 0.1'
+ spec.add_dependency 'rubocop', '~> 0.55'
+ spec.add_dependency 'thor', '~> 0.20'
+ spec.add_dependency 'xmpp4r', '~> 0.5'
+ spec.add_development_dependency 'bundler', '~> 1.16'
+ spec.add_development_dependency 'rake', '~> 10.0'
+ spec.add_development_dependency 'rspec', '~> 3.0'
end
Gemfile
@@ -1,6 +1,6 @@
-source "https://rubygems.org"
+source 'https://rubygems.org'
-git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
+git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
# Specify your gem's dependencies in del.gemspec
gemspec
Rakefile
@@ -1,7 +1,7 @@
# frozen_string_literal: true
-require "bundler/gem_tasks"
-require "rspec/core/rake_task"
+require 'bundler/gem_tasks'
+require 'rspec/core/rake_task'
require 'rubocop/rake_task'
require 'bundler/audit/task'