kirby 4 → 4.1
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +2 -0
- data/README +13 -4
- data/kirby.gemspec +25 -22
- data/lib/kirby.rb +14 -1
- metadata +76 -48
- metadata.gz.sig +2 -0
data.tar.gz.sig
ADDED
Binary file
|
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -7,11 +7,13 @@ A super-clean IRC bot.
|
|
7
7
|
|
8
8
|
Copyright 2007 Cloudburst, LLC. See included LICENSE file.
|
9
9
|
|
10
|
+
The public certificate for this gem is at http://rubyforge.org/frs/download.php/25331/evan_weaver-original-public_cert.pem.
|
11
|
+
|
10
12
|
== Features
|
11
13
|
|
12
14
|
* <tt>irb</tt>-like interface
|
13
15
|
* safe, sandboxed Ruby environment
|
14
|
-
* svn
|
16
|
+
* svn and git-atom commit watching
|
15
17
|
* silent del.icio.us link saving
|
16
18
|
* tolerable channel fault recovery
|
17
19
|
|
@@ -36,9 +38,16 @@ See the Kirby class for commands.
|
|
36
38
|
|
37
39
|
You can use a crontask to keep Kirby alive at all times.
|
38
40
|
|
39
|
-
* * * * * /
|
41
|
+
* * * * * bash -c 'cd /working/directory; kirby -d [options...] &> /dev/null'
|
40
42
|
|
41
|
-
==
|
43
|
+
== Reporting problems
|
42
44
|
|
43
|
-
* http://blog.evanweaver.com/pages/code#kirby
|
44
45
|
* http://rubyforge.org/forum/forum.php?forum_id=13984
|
46
|
+
|
47
|
+
Patches and contributions are very welcome. Please note that contributors are required to assign copyright for their additions to Cloudburst, LLC.
|
48
|
+
|
49
|
+
== Further resources
|
50
|
+
|
51
|
+
* http://blog.evanweaver.com/articles/2007/01/04/kirby-spies-your-svn
|
52
|
+
* http://blog.evanweaver.com/articles/2007/01/06/kirby-gets-a-del-icio-us-account
|
53
|
+
* http://blog.evanweaver.com/articles/2007/01/02/a-ruby-eval-bot-for-irc-kirby
|
data/kirby.gemspec
CHANGED
@@ -1,23 +1,30 @@
|
|
1
1
|
|
2
|
-
# Gem::Specification for Kirby-4
|
2
|
+
# Gem::Specification for Kirby-4.1
|
3
3
|
# Originally generated by Echoe
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = %q{kirby}
|
7
|
-
s.version = "4"
|
8
|
-
|
9
|
-
s.
|
10
|
-
|
11
|
-
s.
|
12
|
-
s.rubyforge_project = %q{fauna}
|
13
|
-
s.description = %q{A super-clean IRC bot with sandboxed Ruby evaluation, svn watching, and link-logging to del.icio.us.}
|
14
|
-
s.default_executable = %q{kirby}
|
15
|
-
s.has_rdoc = true
|
7
|
+
s.version = "4.1"
|
8
|
+
|
9
|
+
s.specification_version = 2 if s.respond_to? :specification_version=
|
10
|
+
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
16
12
|
s.authors = [""]
|
17
|
-
s.
|
13
|
+
s.date = %q{2007-12-15}
|
14
|
+
s.default_executable = %q{kirby}
|
15
|
+
s.description = %q{A super-clean IRC bot with sandboxed Ruby evaluation, svn watching, and link-logging to del.icio.us.}
|
16
|
+
s.email = %q{}
|
18
17
|
s.executables = ["kirby"]
|
19
|
-
s.
|
20
|
-
s.
|
18
|
+
s.files = ["lib/kirby.rb", "bin/kirby", "README", "LICENSE", "CHANGELOG", "kirby.gemspec"]
|
19
|
+
s.has_rdoc = true
|
20
|
+
s.homepage = %q{http://blog.evanweaver.com/files/doc/fauna/kirby/}
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
s.rubyforge_project = %q{fauna}
|
23
|
+
s.rubygems_version = %q{0.9.5}
|
24
|
+
s.summary = %q{A super-clean IRC bot with sandboxed Ruby evaluation, svn watching, and link-logging to del.icio.us.}
|
25
|
+
|
26
|
+
s.add_dependency(%q<hpricot>, [">= 0"])
|
27
|
+
s.add_dependency(%q<daemons>, [">= 0"])
|
21
28
|
end
|
22
29
|
|
23
30
|
|
@@ -27,19 +34,15 @@ end
|
|
27
34
|
# require 'rubygems'
|
28
35
|
# require 'echoe'
|
29
36
|
#
|
30
|
-
# Echoe.new("kirby", `cat CHANGELOG`[/^v([\d\.]+)\. /, 1]) do |p|
|
31
|
-
#
|
37
|
+
# Echoe.new("kirby", `cat CHANGELOG`[/^v([\d\.]+)\. /, 1]) do |p|
|
32
38
|
# p.name = "kirby"
|
33
39
|
# p.rubyforge_name = "fauna"
|
34
40
|
# p.description = p.summary = "A super-clean IRC bot with sandboxed Ruby evaluation, svn watching, and link-logging to del.icio.us."
|
35
|
-
# p.url = "http://blog.evanweaver.com/
|
36
|
-
# p.docs_host = "blog.evanweaver.com:~/www/
|
41
|
+
# p.url = "http://blog.evanweaver.com/files/doc/fauna/kirby/"
|
42
|
+
# p.docs_host = "blog.evanweaver.com:~/www/bax/public/files/doc/"
|
37
43
|
# p.changes = `cat CHANGELOG`[/^v([\d\.]+\. .*)/, 1]
|
38
44
|
#
|
39
45
|
# p.extra_deps = ["hpricot", "daemons"]
|
40
|
-
# p.
|
41
|
-
# p.
|
42
|
-
#
|
43
|
-
# p.rdoc_pattern = /bin|lib|README|CHANGELOG|LICENSE/
|
44
|
-
#
|
46
|
+
# p.rdoc_pattern = /bin|lib|README|CHANGELOG|LICENSE/
|
47
|
+
# p.require_signed = true
|
45
48
|
# end
|
data/lib/kirby.rb
CHANGED
@@ -12,6 +12,7 @@ class Kirby
|
|
12
12
|
|
13
13
|
PATH = Pathname.new(".").dirname.realpath.to_s
|
14
14
|
STORE = PATH + '/kirby.repositories'
|
15
|
+
ATOM = PATH + '/kirby.atoms'
|
15
16
|
PIDFILE = PATH + '/kirby.pid'
|
16
17
|
|
17
18
|
NICK = (ARGV[1] or "kirby-dev")
|
@@ -23,6 +24,7 @@ class Kirby
|
|
23
24
|
# Connect and reconnect to the server
|
24
25
|
def restart
|
25
26
|
$store = (YAML.load_file STORE rescue {})
|
27
|
+
$atom = (YAML.load_file ATOM rescue {})
|
26
28
|
@socket.close if @socket
|
27
29
|
connect
|
28
30
|
listen
|
@@ -48,9 +50,10 @@ class Kirby
|
|
48
50
|
if msg = line[/ PRIVMSG #{CHANNEL} \:(.+)/, 1]
|
49
51
|
case msg
|
50
52
|
when /^>>\s*(.+)/ then try $1.chop
|
51
|
-
when /^#{NICK}/ then say "Usage: '>> CODE'. Say 'reset_irb' for a clean session. Say 'add_svn [repository_url]' to watch an svn repository
|
53
|
+
when /^#{NICK}/ then say "Usage: '>> CODE'. Say 'reset_irb' for a clean session. Say 'add_svn [repository_url]' to watch an svn repository and add_atom [atom_feed_url] to watch an atom feed"
|
52
54
|
when /^reset_irb/ then reset_irb
|
53
55
|
when /^add_svn (.+?)(\s|\r|\n|$)/ then $store[$1] = 0 and say $store.inspect
|
56
|
+
when /^add_atom (.+?)(\s|\r|\n|$)/ then $atom[$1] = '' and say $atom.inspect
|
54
57
|
end unless SILENT
|
55
58
|
post($1) if DELICIOUS_PASS and msg =~ /(http:\/\/.*?)(\s|\r|\n|$)/
|
56
59
|
end
|
@@ -102,6 +105,16 @@ class Kirby
|
|
102
105
|
end rescue nil
|
103
106
|
end
|
104
107
|
File.open(STORE, 'w') {|f| f.puts YAML.dump($store)}
|
108
|
+
|
109
|
+
$atom.each do |feed, last|
|
110
|
+
begin
|
111
|
+
e = (Hpricot(open(feed))/:entry).first
|
112
|
+
$atom[feed] = link = e.at("link")['href']
|
113
|
+
say "#{(e/:title).text} by #{((e/:author)/:name).text} : #{link}" unless link == last
|
114
|
+
rescue
|
115
|
+
end
|
116
|
+
end
|
117
|
+
File.open(ATOM, 'w') {|f| f.puts YAML.dump($atom)}
|
105
118
|
end
|
106
119
|
|
107
120
|
# Post a url to the del.icio.us account.
|
metadata
CHANGED
@@ -1,68 +1,96 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: kirby
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "4"
|
7
|
-
date: 2007-08-12 00:00:00 -04:00
|
8
|
-
summary: A super-clean IRC bot with sandboxed Ruby evaluation, svn watching, and link-logging to del.icio.us.
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: ""
|
12
|
-
homepage: http://blog.evanweaver.com/pages/code#kirby
|
13
|
-
rubyforge_project: fauna
|
14
|
-
description: A super-clean IRC bot with sandboxed Ruby evaluation, svn watching, and link-logging to del.icio.us.
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: "4.1"
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- ""
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDLjCCAhagAwIBAgIBADANBgkqhkiG9w0BAQUFADA9MQ0wCwYDVQQDDARldmFu
|
14
|
+
MRgwFgYKCZImiZPyLGQBGRYIY2xvdWRidXIxEjAQBgoJkiaJk/IsZAEZFgJzdDAe
|
15
|
+
Fw0wNzA5MTYxMDMzMDBaFw0wODA5MTUxMDMzMDBaMD0xDTALBgNVBAMMBGV2YW4x
|
16
|
+
GDAWBgoJkiaJk/IsZAEZFghjbG91ZGJ1cjESMBAGCgmSJomT8ixkARkWAnN0MIIB
|
17
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5C0Io89nyApnr+PvbNFge9Vs
|
18
|
+
yRWAlGBUEMahpXp28VrrfXZT0rAW7JBo4PlCE3jl4nE4dzE6gAdItSycjTosrw7A
|
19
|
+
Ir5+xoyl4Vb35adv56TIQQXvNz+BzlqnkAY5JN0CSBRTQb6mxS3hFyD/h4qgDosj
|
20
|
+
R2RFVzHqSxCS8xq4Ny8uzOwOi+Xyu4w67fI5JvnPvMxqrlR1eaIQHmxnf76RzC46
|
21
|
+
QO5QhufjAYGGXd960XzbQsQyTDUYJzrvT7AdOfiyZzKQykKt8dEpDn+QPjFTnGnT
|
22
|
+
QmgJBX5WJN0lHF2l1sbv3gh4Kn1tZu+kTUqeXY6ShAoDTyvZRiFqQdwh8w2lTQID
|
23
|
+
AQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU+WqJz3xQ
|
24
|
+
XSea1hRvvHWcIMgeeC4wDQYJKoZIhvcNAQEFBQADggEBAGLZ75jfOEW8Nsl26CTt
|
25
|
+
JFrWxQTcQT/UljeefVE3xYr7lc9oQjbqO3FOyued3qW7TaNEtZfSHoYeUSMYbpw1
|
26
|
+
XAwocIPuSRFDGM4B+hgQGVDx8PMGiJKom4qLXjO40UZsR7QyN/u869Vj45LURm6h
|
27
|
+
MBcPeqCASI+WNprj9+uZa2kmHiitrFqqfMBNlm5IFbn9XeYSta9AHVvs5QQqV2m5
|
28
|
+
hIPfLqCyxsn/YgOGvo6iwyQTWyTswamaAC3HRWZxIS1sfn/Ssqa7E7oQMkv5FAXr
|
29
|
+
x5rKePfXINf8XTJczkl9OBEYdE9aNdJsJpXD0asLgGVwBICS5Bjohp6mizJcDC1+
|
30
|
+
yZ0=
|
31
|
+
-----END CERTIFICATE-----
|
49
32
|
|
33
|
+
date: 2007-12-15 00:00:00 -05:00
|
34
|
+
default_executable:
|
50
35
|
dependencies:
|
51
36
|
- !ruby/object:Gem::Dependency
|
52
37
|
name: hpricot
|
53
38
|
version_requirement:
|
54
|
-
version_requirements: !ruby/object:Gem::
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
55
40
|
requirements:
|
56
|
-
- - "
|
41
|
+
- - ">="
|
57
42
|
- !ruby/object:Gem::Version
|
58
|
-
version: 0
|
43
|
+
version: "0"
|
59
44
|
version:
|
60
45
|
- !ruby/object:Gem::Dependency
|
61
46
|
name: daemons
|
62
47
|
version_requirement:
|
63
|
-
version_requirements: !ruby/object:Gem::
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
49
|
requirements:
|
65
|
-
- - "
|
50
|
+
- - ">="
|
66
51
|
- !ruby/object:Gem::Version
|
67
|
-
version: 0
|
52
|
+
version: "0"
|
68
53
|
version:
|
54
|
+
description: A super-clean IRC bot with sandboxed Ruby evaluation, svn watching, and link-logging to del.icio.us.
|
55
|
+
email: ""
|
56
|
+
executables:
|
57
|
+
- kirby
|
58
|
+
extensions: []
|
59
|
+
|
60
|
+
extra_rdoc_files: []
|
61
|
+
|
62
|
+
files:
|
63
|
+
- lib/kirby.rb
|
64
|
+
- bin/kirby
|
65
|
+
- README
|
66
|
+
- LICENSE
|
67
|
+
- CHANGELOG
|
68
|
+
- kirby.gemspec
|
69
|
+
has_rdoc: true
|
70
|
+
homepage: http://blog.evanweaver.com/files/doc/fauna/kirby/
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
|
74
|
+
require_paths:
|
75
|
+
- lib
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: "0"
|
81
|
+
version:
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: "0"
|
87
|
+
version:
|
88
|
+
requirements: []
|
89
|
+
|
90
|
+
rubyforge_project: fauna
|
91
|
+
rubygems_version: 0.9.5
|
92
|
+
signing_key:
|
93
|
+
specification_version: 2
|
94
|
+
summary: A super-clean IRC bot with sandboxed Ruby evaluation, svn watching, and link-logging to del.icio.us.
|
95
|
+
test_files: []
|
96
|
+
|
metadata.gz.sig
ADDED