taskbot 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +12 -0
- data/Gemfile.lock +37 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +83 -0
- data/Rakefile +37 -0
- data/VERSION +1 -0
- data/bin/taskbot +69 -0
- data/lib/cinch/plugins/taskbot.rb +9 -0
- data/lib/cinch/plugins/taskbot/task.rb +14 -0
- data/lib/cinch/plugins/taskbot/tasks.rb +117 -0
- data/lib/cinch/plugins/taskbot/user.rb +13 -0
- data/lib/taskbot.rb +30 -0
- data/taskbot.gemspec +73 -0
- metadata +181 -0
data/Gemfile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "cinch", "~> 1.1.2"
|
4
|
+
gem "mongo_mapper", "~> 0.8.6"
|
5
|
+
gem "bson_ext", "~> 1.2.4"
|
6
|
+
gem "daemons", "~> 1.1.0"
|
7
|
+
gem "optiflag", "~> 0.7"
|
8
|
+
|
9
|
+
group :development do
|
10
|
+
gem "bundler", "~> 1.0.0"
|
11
|
+
gem "jeweler", "~> 1.5.2"
|
12
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activesupport (3.0.5)
|
5
|
+
bson (1.2.4)
|
6
|
+
bson_ext (1.2.4)
|
7
|
+
cinch (1.1.2)
|
8
|
+
daemons (1.1.0)
|
9
|
+
git (1.2.5)
|
10
|
+
jeweler (1.5.2)
|
11
|
+
bundler (~> 1.0.0)
|
12
|
+
git (>= 1.2.5)
|
13
|
+
rake
|
14
|
+
jnunemaker-validatable (1.8.4)
|
15
|
+
activesupport (>= 2.3.4)
|
16
|
+
mongo (1.2.4)
|
17
|
+
bson (>= 1.2.4)
|
18
|
+
mongo_mapper (0.8.6)
|
19
|
+
activesupport (>= 2.3.4)
|
20
|
+
jnunemaker-validatable (~> 1.8.4)
|
21
|
+
plucky (~> 0.3.6)
|
22
|
+
optiflag (0.7)
|
23
|
+
plucky (0.3.7)
|
24
|
+
mongo (~> 1.1)
|
25
|
+
rake (0.8.7)
|
26
|
+
|
27
|
+
PLATFORMS
|
28
|
+
ruby
|
29
|
+
|
30
|
+
DEPENDENCIES
|
31
|
+
bson_ext (~> 1.2.4)
|
32
|
+
bundler (~> 1.0.0)
|
33
|
+
cinch (~> 1.1.2)
|
34
|
+
daemons (~> 1.1.0)
|
35
|
+
jeweler (~> 1.5.2)
|
36
|
+
mongo_mapper (~> 0.8.6)
|
37
|
+
optiflag (~> 0.7)
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Logan Koester
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
= taskbot
|
2
|
+
|
3
|
+
Simple to-do lists implemented as an IRC robot
|
4
|
+
|
5
|
+
It is distributed as a Ruby gem and based on Cinch and MongoDB.
|
6
|
+
|
7
|
+
== Usage
|
8
|
+
|
9
|
+
<&logankoester> !task help
|
10
|
+
< TaskBot> Simple to-do lists implemented as an IRC robot
|
11
|
+
< TaskBot> !task add "Take out the trash" - Add a task for yourself
|
12
|
+
< TaskBot> !task add <nick> "Take out the trash" - Add a task for <nick>
|
13
|
+
< TaskBot> !task complete|finish #<task_id> - Mark a task completed
|
14
|
+
< TaskBot> !task rm|delete|remove #<task_id> - Remove a task
|
15
|
+
< TaskBot> !task list - Get a list of your uncompleted tasks
|
16
|
+
< TaskBot> !task list <nick> - Get a list of <nick>'s uncompleted tasks
|
17
|
+
< TaskBot> Author: Logan Koester <logan@logankoester.com>
|
18
|
+
< TaskBot> Fork me at https://github.com/logankoester/taskbot>
|
19
|
+
|
20
|
+
== Installation & Setup
|
21
|
+
|
22
|
+
1. Install Ruby 1.9 and rubygems if you don't already have it.
|
23
|
+
|
24
|
+
2. Install taskbot
|
25
|
+
|
26
|
+
$ gem install taskbot
|
27
|
+
Successfully installed taskbot-0.1.0
|
28
|
+
1 gem installed
|
29
|
+
|
30
|
+
3. Set up a MongoDB database to store users information in. I recommend creating a free account at https://mongohq.com
|
31
|
+
|
32
|
+
4. Create a configuration file
|
33
|
+
|
34
|
+
$ taskbot --setup ~/.taskbot
|
35
|
+
taskbot v0.1.0 - Simple to-do lists implemented as an IRC robot
|
36
|
+
|
37
|
+
IRC Configuration
|
38
|
+
-----------------
|
39
|
+
IRC Nick: TaskBot
|
40
|
+
IRC Server: irc.myserver.net
|
41
|
+
For password protected channels, type "#channel PASSWORD"
|
42
|
+
Channel: #mychannel
|
43
|
+
Database Configuration
|
44
|
+
----------------------
|
45
|
+
You can get free MongoDB hosting from http://mongohq.com
|
46
|
+
MongoDB Host: dbhost
|
47
|
+
MongoDB Port: 6000
|
48
|
+
MongoDB Database: taskbot
|
49
|
+
MongoDB Username: taskbot
|
50
|
+
MongoDB Password: taskbot
|
51
|
+
|
52
|
+
File written.
|
53
|
+
Use taskbot -f ~/.taskbot to launch your bot.
|
54
|
+
|
55
|
+
5. Launch your new IRC bot!
|
56
|
+
|
57
|
+
$ taskbot -f ~/.taskbot
|
58
|
+
|
59
|
+
Use --daemonize if you want to run it in the background.
|
60
|
+
|
61
|
+
== Usage
|
62
|
+
|
63
|
+
Explore the options and features available with !task help
|
64
|
+
|
65
|
+
== Getting Help
|
66
|
+
|
67
|
+
When all else fails, read the code!
|
68
|
+
|
69
|
+
== Contributing to taskbot
|
70
|
+
|
71
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
72
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
73
|
+
* Fork the project
|
74
|
+
* Start a feature/bugfix branch
|
75
|
+
* Commit and push until you are happy with your contribution
|
76
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
77
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
78
|
+
|
79
|
+
== Copyright
|
80
|
+
|
81
|
+
Copyright (c) 2011 Logan Koester. See LICENSE.txt for
|
82
|
+
further details.
|
83
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'rake'
|
11
|
+
|
12
|
+
require 'jeweler'
|
13
|
+
Jeweler::Tasks.new do |gem|
|
14
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
15
|
+
gem.name = "taskbot"
|
16
|
+
gem.homepage = "http://github.com/logankoester/taskbot"
|
17
|
+
gem.license = "MIT"
|
18
|
+
gem.summary = %Q{Simple to-do lists implemented as an IRC robot}
|
19
|
+
gem.description = %Q{Simple to-do lists implemented as an IRC robot}
|
20
|
+
gem.email = "logan@logankoester.com"
|
21
|
+
gem.authors = ["Logan Koester"]
|
22
|
+
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
23
|
+
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
24
|
+
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
25
|
+
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
26
|
+
end
|
27
|
+
Jeweler::RubygemsDotOrgTasks.new
|
28
|
+
|
29
|
+
require 'rake/rdoctask'
|
30
|
+
Rake::RDocTask.new do |rdoc|
|
31
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
32
|
+
|
33
|
+
rdoc.rdoc_dir = 'rdoc'
|
34
|
+
rdoc.title = "taskbot #{version}"
|
35
|
+
rdoc.rdoc_files.include('README*')
|
36
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
37
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/bin/taskbot
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'daemons'
|
5
|
+
require 'optiflag'
|
6
|
+
require 'yaml'
|
7
|
+
|
8
|
+
APP_VERSION = File.read("#{File.dirname(__FILE__)}/../VERSION")
|
9
|
+
|
10
|
+
def ask(q)
|
11
|
+
print q
|
12
|
+
a = STDIN.gets.chomp
|
13
|
+
return a
|
14
|
+
end
|
15
|
+
|
16
|
+
module App extend OptiFlagSet
|
17
|
+
optional_flag "file" do
|
18
|
+
alternate_forms "f"
|
19
|
+
description "Path to a configuration file"
|
20
|
+
end
|
21
|
+
|
22
|
+
optional_flag "setup" do
|
23
|
+
description "Generate a configuration file"
|
24
|
+
end
|
25
|
+
|
26
|
+
optional_switch_flag "daemonize" do
|
27
|
+
alternate_forms "d"
|
28
|
+
description "Run this process in the background"
|
29
|
+
end
|
30
|
+
|
31
|
+
and_process!
|
32
|
+
end
|
33
|
+
|
34
|
+
puts "taskbot v#{APP_VERSION} - Simple to-do lists implemented as an IRC robot"
|
35
|
+
|
36
|
+
flag = App.flags
|
37
|
+
|
38
|
+
if flag.file
|
39
|
+
Daemons.daemonize if flag.daemonize?
|
40
|
+
puts "Using configuration at #{flag.file}"
|
41
|
+
$config = YAML.load_file(flag.file)
|
42
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../lib/taskbot.rb")
|
43
|
+
elsif flag.setup
|
44
|
+
$config = {'mongodb' => {}}
|
45
|
+
|
46
|
+
puts
|
47
|
+
puts "IRC Configuration"
|
48
|
+
puts "-----------------"
|
49
|
+
$config['nick'] = ask "IRC Nick: "
|
50
|
+
$config['server'] = ask "IRC Server: "
|
51
|
+
puts "For password protected channels, type \"#channel PASSWORD\""
|
52
|
+
$config['channels'] = [ask("Channel: ")]
|
53
|
+
|
54
|
+
puts "Database Configuration"
|
55
|
+
puts "----------------------"
|
56
|
+
puts "You can get free MongoDB hosting from http://mongohq.com"
|
57
|
+
$config['mongodb']['host'] = ask "MongoDB Host: "
|
58
|
+
$config['mongodb']['port'] = ask "MongoDB Port: "
|
59
|
+
$config['mongodb']['database'] = ask "MongoDB Database: "
|
60
|
+
$config['mongodb']['username'] = ask "MongoDB Username: "
|
61
|
+
$config['mongodb']['password'] = ask "MongoDB Password: "
|
62
|
+
|
63
|
+
File.open(flag.setup, 'w+') { |f| f << $config.to_yaml }
|
64
|
+
puts
|
65
|
+
puts "File written."
|
66
|
+
puts "Use taskbot -f #{flag.setup} to launch your bot."
|
67
|
+
else
|
68
|
+
puts "Use taskbot --help for usage"
|
69
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
module Cinch
|
2
|
+
module Plugins
|
3
|
+
module TaskBot
|
4
|
+
class Tasks
|
5
|
+
include Cinch::Plugin
|
6
|
+
|
7
|
+
match /add "(.+)"/, :method => :add_task
|
8
|
+
match /add (.+) "(.+)"/, :method => :add_task_for
|
9
|
+
|
10
|
+
match /complete|finish #(.+)/, :method => :complete_task
|
11
|
+
match /rm|delete|remove #(.+)/, :method => :remove_task
|
12
|
+
|
13
|
+
match /list$/, :method => :get_list
|
14
|
+
match /list (.+)/, :method => :get_list_for
|
15
|
+
|
16
|
+
match /help$/, :method => :help
|
17
|
+
|
18
|
+
listen_to :channel
|
19
|
+
prefix /^!task /
|
20
|
+
|
21
|
+
def initialize(*args)
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
def help(m)
|
26
|
+
m.reply "Simple to-do lists implemented as an IRC robot"
|
27
|
+
|
28
|
+
m.reply "!task add \"Take out the trash\" - Add a task for yourself"
|
29
|
+
m.reply "!task add <nick> \"Take out the trash\" - Add a task for <nick>"
|
30
|
+
|
31
|
+
m.reply "!task complete|finish #<task_id> - Mark a task completed"
|
32
|
+
m.reply "!task rm|delete|remove #<task_id> - Remove a task"
|
33
|
+
|
34
|
+
m.reply "!task list - Get a list of your uncompleted tasks"
|
35
|
+
m.reply "!task list <nick> - Get a list of <nick>'s uncompleted tasks"
|
36
|
+
|
37
|
+
m.reply "Author: Logan Koester <logan@logankoester.com>"
|
38
|
+
m.reply "Fork me at https://github.com/logankoester/taskbot>"
|
39
|
+
end
|
40
|
+
|
41
|
+
# Add a task for yourself
|
42
|
+
def add_task(m, content)
|
43
|
+
add_task_for_user(m, m.user.nick, content)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Add a task for <nick>
|
47
|
+
def add_task_for(m, nick, content)
|
48
|
+
add_task_for_user(m, nick, content)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Mark a task completed
|
52
|
+
def complete_task(m, task_id)
|
53
|
+
set_task_status(m, task_id, :completed)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Remove a task
|
57
|
+
def remove_task(m, task_id)
|
58
|
+
task = Task.find(task_id)
|
59
|
+
if task
|
60
|
+
Task.destroy(task_id)
|
61
|
+
m.reply "Task ##{task_id} has been removed."
|
62
|
+
else
|
63
|
+
m.reply "Task ##{task_id} not found."
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# Get a list of your uncompleted tasks
|
68
|
+
def get_list(m)
|
69
|
+
get_list_for_user(m, m.user.nick)
|
70
|
+
end
|
71
|
+
|
72
|
+
# Get a list of <nick>'s uncompleted tasks
|
73
|
+
def get_list_for(m, nick)
|
74
|
+
get_list_for_user(m, nick)
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
def add_task_for_user(m, nick, content)
|
79
|
+
nick.downcase!
|
80
|
+
user = User.find_by_nick(nick)
|
81
|
+
user_status = (user.nil?) ? "New user '#{nick}' created" : "Existing user '#{nick}' found"
|
82
|
+
user ||= User.create( :nick => nick )
|
83
|
+
task = user.tasks.create( :content => content )
|
84
|
+
m.reply "#{user_status}, task added as #{task.id}"
|
85
|
+
return task
|
86
|
+
end
|
87
|
+
|
88
|
+
def get_list_for_user(m, nick)
|
89
|
+
nick.downcase!
|
90
|
+
user = User.find_by_nick(nick)
|
91
|
+
user_status = (user.nil?) ? "New user '#{nick}' created" : "Existing user '#{nick}' found"
|
92
|
+
user ||= User.create( :nick => nick )
|
93
|
+
open_tasks = user.tasks.map { |t| t if t.status == :open }
|
94
|
+
if open_tasks.empty?
|
95
|
+
m.reply "#{user_status}, no open tasks."
|
96
|
+
else
|
97
|
+
m.reply "#{user_status}, open tasks:"
|
98
|
+
open_tasks.each { |t| m.reply "##{t._id} #{t.content}" }
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def set_task_status(m, task_id, new_status)
|
103
|
+
task = Task.find(task_id)
|
104
|
+
if task
|
105
|
+
old_status = task.status
|
106
|
+
task.status = new_status
|
107
|
+
task.save
|
108
|
+
m.reply "Task ##{task.id} status changed from #{old_status} to #{task.status}"
|
109
|
+
else
|
110
|
+
m.reply "Task ##{task_id} not found."
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
data/lib/taskbot.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
%w{rubygems cinch mongo_mapper}.each { |d| require d }
|
2
|
+
|
3
|
+
require "#{File.dirname(__FILE__)}/cinch/plugins/taskbot"
|
4
|
+
|
5
|
+
begin
|
6
|
+
MongoMapper.connection = Mongo::Connection.new($config['mongodb']['host'], $config['mongodb']['port'])
|
7
|
+
MongoMapper.database = $config['mongodb']['database']
|
8
|
+
MongoMapper.database.authenticate($config['mongodb']['username'], $config['mongodb']['password'])
|
9
|
+
rescue Mongo::AuthenticationError => e
|
10
|
+
puts e
|
11
|
+
puts "Host: " + $config['mongodb']['host']
|
12
|
+
puts "Port: " + $config['mongodb']['port']
|
13
|
+
puts "Database: " + $config['mongodb']['database']
|
14
|
+
puts "Username: " + $config['mongodb']['username']
|
15
|
+
puts "Password: " + $config['mongodb']['password']
|
16
|
+
exit
|
17
|
+
rescue Exception => e
|
18
|
+
"Failed to connect to database: #{e}"
|
19
|
+
end
|
20
|
+
|
21
|
+
$bot = Cinch::Bot.new do
|
22
|
+
configure do |c|
|
23
|
+
c.server = $config['server']
|
24
|
+
c.nick = $config['nick']
|
25
|
+
c.channels = $config['channels']
|
26
|
+
c.plugins.plugins = [Cinch::Plugins::TaskBot::Tasks]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
$bot.start
|
data/taskbot.gemspec
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{taskbot}
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Logan Koester"]
|
12
|
+
s.date = %q{2011-03-21}
|
13
|
+
s.default_executable = %q{taskbot}
|
14
|
+
s.description = %q{Simple to-do lists implemented as an IRC robot}
|
15
|
+
s.email = %q{logan@logankoester.com}
|
16
|
+
s.executables = ["taskbot"]
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"LICENSE.txt",
|
19
|
+
"README.rdoc"
|
20
|
+
]
|
21
|
+
s.files = [
|
22
|
+
"Gemfile",
|
23
|
+
"Gemfile.lock",
|
24
|
+
"LICENSE.txt",
|
25
|
+
"README.rdoc",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION",
|
28
|
+
"bin/taskbot",
|
29
|
+
"lib/cinch/plugins/taskbot.rb",
|
30
|
+
"lib/cinch/plugins/taskbot/task.rb",
|
31
|
+
"lib/cinch/plugins/taskbot/tasks.rb",
|
32
|
+
"lib/cinch/plugins/taskbot/user.rb",
|
33
|
+
"lib/taskbot.rb",
|
34
|
+
"taskbot.gemspec"
|
35
|
+
]
|
36
|
+
s.homepage = %q{http://github.com/logankoester/taskbot}
|
37
|
+
s.licenses = ["MIT"]
|
38
|
+
s.require_paths = ["lib"]
|
39
|
+
s.rubygems_version = %q{1.3.7}
|
40
|
+
s.summary = %q{Simple to-do lists implemented as an IRC robot}
|
41
|
+
|
42
|
+
if s.respond_to? :specification_version then
|
43
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
44
|
+
s.specification_version = 3
|
45
|
+
|
46
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
47
|
+
s.add_runtime_dependency(%q<cinch>, ["~> 1.1.2"])
|
48
|
+
s.add_runtime_dependency(%q<mongo_mapper>, ["~> 0.8.6"])
|
49
|
+
s.add_runtime_dependency(%q<bson_ext>, ["~> 1.2.4"])
|
50
|
+
s.add_runtime_dependency(%q<daemons>, ["~> 1.1.0"])
|
51
|
+
s.add_runtime_dependency(%q<optiflag>, ["~> 0.7"])
|
52
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
53
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
54
|
+
else
|
55
|
+
s.add_dependency(%q<cinch>, ["~> 1.1.2"])
|
56
|
+
s.add_dependency(%q<mongo_mapper>, ["~> 0.8.6"])
|
57
|
+
s.add_dependency(%q<bson_ext>, ["~> 1.2.4"])
|
58
|
+
s.add_dependency(%q<daemons>, ["~> 1.1.0"])
|
59
|
+
s.add_dependency(%q<optiflag>, ["~> 0.7"])
|
60
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
61
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
62
|
+
end
|
63
|
+
else
|
64
|
+
s.add_dependency(%q<cinch>, ["~> 1.1.2"])
|
65
|
+
s.add_dependency(%q<mongo_mapper>, ["~> 0.8.6"])
|
66
|
+
s.add_dependency(%q<bson_ext>, ["~> 1.2.4"])
|
67
|
+
s.add_dependency(%q<daemons>, ["~> 1.1.0"])
|
68
|
+
s.add_dependency(%q<optiflag>, ["~> 0.7"])
|
69
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
70
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
metadata
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: taskbot
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Logan Koester
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-03-21 00:00:00 -04:00
|
18
|
+
default_executable: taskbot
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: cinch
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 1
|
30
|
+
- 2
|
31
|
+
version: 1.1.2
|
32
|
+
type: :runtime
|
33
|
+
prerelease: false
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: mongo_mapper
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ~>
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 0
|
44
|
+
- 8
|
45
|
+
- 6
|
46
|
+
version: 0.8.6
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: bson_ext
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ~>
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
segments:
|
58
|
+
- 1
|
59
|
+
- 2
|
60
|
+
- 4
|
61
|
+
version: 1.2.4
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: daemons
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ~>
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
segments:
|
73
|
+
- 1
|
74
|
+
- 1
|
75
|
+
- 0
|
76
|
+
version: 1.1.0
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *id004
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: optiflag
|
82
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
- 7
|
90
|
+
version: "0.7"
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: *id005
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: bundler
|
96
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
segments:
|
102
|
+
- 1
|
103
|
+
- 0
|
104
|
+
- 0
|
105
|
+
version: 1.0.0
|
106
|
+
type: :development
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: *id006
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: jeweler
|
111
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
112
|
+
none: false
|
113
|
+
requirements:
|
114
|
+
- - ~>
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
segments:
|
117
|
+
- 1
|
118
|
+
- 5
|
119
|
+
- 2
|
120
|
+
version: 1.5.2
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *id007
|
124
|
+
description: Simple to-do lists implemented as an IRC robot
|
125
|
+
email: logan@logankoester.com
|
126
|
+
executables:
|
127
|
+
- taskbot
|
128
|
+
extensions: []
|
129
|
+
|
130
|
+
extra_rdoc_files:
|
131
|
+
- LICENSE.txt
|
132
|
+
- README.rdoc
|
133
|
+
files:
|
134
|
+
- Gemfile
|
135
|
+
- Gemfile.lock
|
136
|
+
- LICENSE.txt
|
137
|
+
- README.rdoc
|
138
|
+
- Rakefile
|
139
|
+
- VERSION
|
140
|
+
- bin/taskbot
|
141
|
+
- lib/cinch/plugins/taskbot.rb
|
142
|
+
- lib/cinch/plugins/taskbot/task.rb
|
143
|
+
- lib/cinch/plugins/taskbot/tasks.rb
|
144
|
+
- lib/cinch/plugins/taskbot/user.rb
|
145
|
+
- lib/taskbot.rb
|
146
|
+
- taskbot.gemspec
|
147
|
+
has_rdoc: true
|
148
|
+
homepage: http://github.com/logankoester/taskbot
|
149
|
+
licenses:
|
150
|
+
- MIT
|
151
|
+
post_install_message:
|
152
|
+
rdoc_options: []
|
153
|
+
|
154
|
+
require_paths:
|
155
|
+
- lib
|
156
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
157
|
+
none: false
|
158
|
+
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
hash: 88891898656538276
|
162
|
+
segments:
|
163
|
+
- 0
|
164
|
+
version: "0"
|
165
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
|
+
none: false
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
segments:
|
171
|
+
- 0
|
172
|
+
version: "0"
|
173
|
+
requirements: []
|
174
|
+
|
175
|
+
rubyforge_project:
|
176
|
+
rubygems_version: 1.3.7
|
177
|
+
signing_key:
|
178
|
+
specification_version: 3
|
179
|
+
summary: Simple to-do lists implemented as an IRC robot
|
180
|
+
test_files: []
|
181
|
+
|