comboy-autumn 3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/README.textile +1192 -0
  2. data/autumn.gemspec +25 -0
  3. data/bin/autumn +27 -0
  4. data/lib/autumn.rb +2 -0
  5. data/lib/autumn/authentication.rb +290 -0
  6. data/lib/autumn/channel_leaf.rb +107 -0
  7. data/lib/autumn/coder.rb +166 -0
  8. data/lib/autumn/console_boot.rb +9 -0
  9. data/lib/autumn/ctcp.rb +250 -0
  10. data/lib/autumn/daemon.rb +207 -0
  11. data/lib/autumn/datamapper_hacks.rb +290 -0
  12. data/lib/autumn/foliater.rb +231 -0
  13. data/lib/autumn/formatting.rb +236 -0
  14. data/lib/autumn/generator.rb +231 -0
  15. data/lib/autumn/genesis.rb +191 -0
  16. data/lib/autumn/inheritable_attributes.rb +162 -0
  17. data/lib/autumn/leaf.rb +738 -0
  18. data/lib/autumn/log_facade.rb +49 -0
  19. data/lib/autumn/misc.rb +87 -0
  20. data/lib/autumn/script.rb +74 -0
  21. data/lib/autumn/speciator.rb +165 -0
  22. data/lib/autumn/stem.rb +919 -0
  23. data/lib/autumn/stem_facade.rb +176 -0
  24. data/resources/daemons/Anothernet.yml +3 -0
  25. data/resources/daemons/AustHex.yml +29 -0
  26. data/resources/daemons/Bahamut.yml +67 -0
  27. data/resources/daemons/Dancer.yml +3 -0
  28. data/resources/daemons/GameSurge.yml +3 -0
  29. data/resources/daemons/IRCnet.yml +3 -0
  30. data/resources/daemons/Ithildin.yml +7 -0
  31. data/resources/daemons/KineIRCd.yml +56 -0
  32. data/resources/daemons/PTlink.yml +6 -0
  33. data/resources/daemons/QuakeNet.yml +20 -0
  34. data/resources/daemons/RFC1459.yml +158 -0
  35. data/resources/daemons/RFC2811.yml +16 -0
  36. data/resources/daemons/RFC2812.yml +36 -0
  37. data/resources/daemons/RatBox.yml +25 -0
  38. data/resources/daemons/Ultimate.yml +24 -0
  39. data/resources/daemons/Undernet.yml +6 -0
  40. data/resources/daemons/Unreal.yml +110 -0
  41. data/resources/daemons/_Other.yml +7 -0
  42. data/resources/daemons/aircd.yml +33 -0
  43. data/resources/daemons/bdq-ircd.yml +3 -0
  44. data/resources/daemons/hybrid.yml +38 -0
  45. data/resources/daemons/ircu.yml +67 -0
  46. data/resources/daemons/tr-ircd.yml +8 -0
  47. data/skel/Rakefile +135 -0
  48. data/skel/config/global.yml +2 -0
  49. data/skel/config/seasons/testing/database.yml +7 -0
  50. data/skel/config/seasons/testing/leaves.yml +7 -0
  51. data/skel/config/seasons/testing/season.yml +2 -0
  52. data/skel/config/seasons/testing/stems.yml +9 -0
  53. data/skel/leaves/administrator/README +20 -0
  54. data/skel/leaves/administrator/controller.rb +67 -0
  55. data/skel/leaves/administrator/views/autumn.txt.erb +1 -0
  56. data/skel/leaves/administrator/views/reload.txt.erb +11 -0
  57. data/skel/leaves/insulter/README +17 -0
  58. data/skel/leaves/insulter/controller.rb +65 -0
  59. data/skel/leaves/insulter/views/about.txt.erb +1 -0
  60. data/skel/leaves/insulter/views/help.txt.erb +1 -0
  61. data/skel/leaves/insulter/views/insult.txt.erb +1 -0
  62. data/skel/leaves/scorekeeper/README +34 -0
  63. data/skel/leaves/scorekeeper/config.yml +2 -0
  64. data/skel/leaves/scorekeeper/controller.rb +104 -0
  65. data/skel/leaves/scorekeeper/helpers/general.rb +64 -0
  66. data/skel/leaves/scorekeeper/models/channel.rb +12 -0
  67. data/skel/leaves/scorekeeper/models/person.rb +14 -0
  68. data/skel/leaves/scorekeeper/models/pseudonym.rb +11 -0
  69. data/skel/leaves/scorekeeper/models/score.rb +14 -0
  70. data/skel/leaves/scorekeeper/tasks/stats.rake +17 -0
  71. data/skel/leaves/scorekeeper/views/about.txt.erb +1 -0
  72. data/skel/leaves/scorekeeper/views/change.txt.erb +5 -0
  73. data/skel/leaves/scorekeeper/views/history.txt.erb +11 -0
  74. data/skel/leaves/scorekeeper/views/points.txt.erb +5 -0
  75. data/skel/leaves/scorekeeper/views/usage.txt.erb +1 -0
  76. data/skel/script/console +34 -0
  77. data/skel/script/daemon +29 -0
  78. data/skel/script/destroy +48 -0
  79. data/skel/script/generate +48 -0
  80. data/skel/script/server +15 -0
  81. metadata +170 -0
@@ -0,0 +1,12 @@
1
+ # An IRC server and channel. The server property is of the form
2
+ # "[address]:[port]".
3
+
4
+ class Channel
5
+ include DataMapper::Resource
6
+
7
+ property :id, Integer, :serial => true
8
+ property :server, String, :nullable => false
9
+ property :name, String, :nullable => false
10
+
11
+ has n, :scores
12
+ end
@@ -0,0 +1,14 @@
1
+ # An IRC member who can give or receive points.
2
+
3
+ class Person
4
+ include DataMapper::Resource
5
+
6
+ property :id, Integer, :serial => true
7
+ property :server, String, :nullable => false
8
+ property :name, String, :nullable => false
9
+ property :authorized, Boolean, :nullable => false, :default => true
10
+
11
+ has n, :scores, :child_key => [ :receiver_id ]
12
+ has n, :scores_awarded, :class_name => 'Score', :child_key => [ :giver_id ]
13
+ has n, :pseudonyms
14
+ end
@@ -0,0 +1,11 @@
1
+ # A person's nickname. If someone changes a person's points using this nickname,
2
+ # the correct Person instance has their points changed.
3
+
4
+ class Pseudonym
5
+ include DataMapper::Resource
6
+
7
+ property :id, Integer, :serial => true
8
+ property :name, String, :nullable => false
9
+
10
+ belongs_to :person
11
+ end
@@ -0,0 +1,14 @@
1
+ # A change to a person's score.
2
+
3
+ class Score
4
+ include DataMapper::Resource
5
+
6
+ property :id, Integer, :serial => true
7
+ property :change, Integer, :nullable => false, :default => 0
8
+ property :note, String
9
+ property :created_at, DateTime, :default => 'NOW()'
10
+
11
+ belongs_to :giver, :class_name => 'Person', :child_key => [ :giver_id ]
12
+ belongs_to :receiver, :class_name => 'Person', :child_key => [ :receiver_id ]
13
+ belongs_to :channel
14
+ end
@@ -0,0 +1,17 @@
1
+ desc "Display the current scores of every channel"
2
+ task :scores => :boot do
3
+ Autumn::Foliater.instance.leaves.select { |name, leaf| leaf.kind_of? Scorekeeper::Controller }.each do |name, leaf|
4
+ puts "Leaf #{name}"
5
+ leaf.database do
6
+ Scorekeeper::Channel.all.group_by { |chan| chan.server }.each do |server, channels|
7
+ puts " #{server}"
8
+ channels.each do |channel|
9
+ scores = channel.scores
10
+ vals = scores.inject(Hash.new(0)) { |hsh, score| hsh[score.receiver.name] += score.change; hsh }
11
+ print_scores = vals.sort { |a,b| b.last <=> a.last }.collect { |n,p| "#{n}: #{p}" }.join(', ')
12
+ puts " #{channel.name} - #{print_scores}"
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1 @@
1
+ Scorekeeper version 3.0 (7-4-08) by Tim Morgan: An Autumn Leaf.
@@ -0,0 +1,5 @@
1
+ <% if var(:unauthorized) %>
2
+ You can't change <%= var :receiver %>'s points.
3
+ <% else %>
4
+ <%= var(:giver).name %> <%= var(:delta) > 0 ? 'gave' : 'docked' %> <%= var(:receiver).name %> <%= var(:delta).abs.pluralize('point') %>.
5
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <% if var(:no_history) %>
2
+ <%= var :person %> is not a part of the scoring system.
3
+ <% elsif var(:no_giver_history) %>
4
+ <%= var :giver %> has not awarded any points to <%= var(:receiver).name %>.
5
+ <% elsif var(:scores).empty? %>
6
+ <%= var(:receiver).name %> has no points history.
7
+ <% else %>
8
+ <% var(:scores).each do |score| %>
9
+ [<%= score.created_at.strftime '%m/%d %I:%M %p' %>] <%= score.giver.name %> <%= score.change > 0 ? 'gave' : 'docked' %> <%= score.receiver.name %> <%= score.change.abs.pluralize('point') %><% if score.note %>: <%= score.note %><% end %>
10
+ <% end %>
11
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <% if var(:totals).empty? %>
2
+ No one has any points yet.
3
+ <% else %>
4
+ <%= var(:totals).collect { |person, score| "#{person}: #{score}" }.join(', ') %>
5
+ <% end %>
@@ -0,0 +1 @@
1
+ Examples: "!points", "!points Sancho +5", "!points Smith history", "!points Sancho history 2/27/08", "!points Sancho history Smith"
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Launches an IRb console with the Autumn environment loaded.
4
+
5
+ puts "setting APP_ROOT..."
6
+ APP_ROOT = File.expand_path("#{File.dirname(__FILE__)}/..")
7
+ $: << APP_ROOT
8
+
9
+ # Some code below is from Ruby on Rails and copyright (c) David Heinemeier
10
+ # Hansson.
11
+
12
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
13
+
14
+ require 'optparse'
15
+ #options = { :irb => irb }
16
+ options = {}
17
+ OptionParser.new do |opt|
18
+ opt.banner = "Usage: #{File.basename(__FILE__)} [options]"
19
+ opt.on("--irb=[#{irb}]", 'Invoke a different irb.') { |v| options[:irb] = v }
20
+ opt.parse!(ARGV)
21
+ end
22
+
23
+ require "irb"
24
+ require "irb/completion"
25
+ require "autumn/console_boot"
26
+
27
+ require 'autumn/genesis'
28
+ puts "Loading Autumn #{AUTUMN_VERSION}..."
29
+ if options[:irb]
30
+ #TODO: APP_ROOT wont be set here
31
+ raise "Ooops! only default irb for now (option)"
32
+ else
33
+ IRB.start
34
+ end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Controller for the Autumn daemon. Starts, stops, and manages the daemon. Must
4
+ # be run from the Autumn root directory.
5
+ #
6
+ # Usage: script/daemon <command> <options> -- <application options>
7
+ #
8
+ # * where <command> is one of:
9
+ # start start an instance of the application
10
+ # stop stop all instances of the application
11
+ # restart stop all instances and restart them afterwards
12
+ # run start the application and stay on top
13
+ # zap set the application to a stopped state
14
+ #
15
+ # * and where <options> may contain several of the following:
16
+ #
17
+ # -t, --ontop Stay on top (does not daemonize)
18
+ # -f, --force Force operation
19
+ #
20
+ # Common options:
21
+ # -h, --help Show this message
22
+ # --version Show version
23
+
24
+ require 'rubygems'
25
+ require 'daemons'
26
+
27
+ root = File.expand_path("#{File.dirname(__FILE__)}/..")
28
+
29
+ Daemons.run "#{root}/script/server", :app_name => 'autumn', :dir_mode => :normal, :dir => "#{root}/tmp", :multiple => false, :backtrace => true, :monitor => false, :log_output => true
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # == Synopsis
4
+ #
5
+ # Destroys the files for leaves, seasons, and other objects of the Autumn
6
+ # framework.
7
+ #
8
+ # == Usage
9
+ #
10
+ # script/destroy <options> <object> <name>
11
+ #
12
+ # <object>:: The object type to destroy. Valid types are "leaf" and "season".
13
+ # <name>:: The name of the object to destroy. For example, you can call
14
+ # "script/destroy leaf Scorekeeper" to remove a leaf named Scorekeeper.
15
+ #
16
+ # == Options
17
+ #
18
+ # --help, -h:: Displays this usage information.
19
+ # --vcs, -c:: Remove any created files or directories from the project's version
20
+ # control system. (Autodetects CVS and Subversion.)
21
+
22
+ require 'autumn/script'
23
+
24
+ opts = GetoptLong.new(
25
+ [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
26
+ [ '--vcs', '-c', GetoptLong::NO_ARGUMENT ]
27
+ )
28
+
29
+ script = Autumn::Script.new
30
+
31
+ begin
32
+ opts.each do |opt, arg|
33
+ case opt
34
+ when '--help' then RDoc::usage
35
+ when '--vcs' then script.use_vcs
36
+ end
37
+ end
38
+ rescue GetoptLong::InvalidOption
39
+ RDoc::usage
40
+ exit 0
41
+ end
42
+
43
+ exit(0) unless script.parse_argv(ARGV)
44
+
45
+ case script.object
46
+ when 'leaf' then script.call_generator(:unleaf)
47
+ when 'season' then script.call_generator(:unseason)
48
+ end
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # == Synopsis
4
+ #
5
+ # Generates template files for leaves, seasons, and other Autumn objects.
6
+ #
7
+ # == Usage
8
+ #
9
+ # script/generate <options> <template> <name>
10
+ #
11
+ # <template>:: The template to create. Valid templates are "leaf" and "season".
12
+ # <name>:: The name to give the created template. For example, you can call
13
+ # "script/generate leaf Scorekeeper" to create a leaf named
14
+ # Scorekeeper.
15
+ #
16
+ # == Options
17
+ #
18
+ # --help, -h:: Displays this usage information.
19
+ # --vcs, -c:: Add any created files or directories to the project's version
20
+ # control system. (Autodetects CVS and Subversion.)
21
+
22
+ require 'autumn/script'
23
+
24
+ opts = GetoptLong.new(
25
+ [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
26
+ [ '--vcs', '-c', GetoptLong::NO_ARGUMENT ]
27
+ )
28
+
29
+ script = Autumn::Script.new
30
+
31
+ begin
32
+ opts.each do |opt, arg|
33
+ case opt
34
+ when '--help' then RDoc::usage
35
+ when '--vcs' then script.use_vcs
36
+ end
37
+ end
38
+ rescue GetoptLong::InvalidOption
39
+ RDoc::usage
40
+ exit 0
41
+ end
42
+
43
+ exit(0) unless script.parse_argv(ARGV)
44
+
45
+ case script.object
46
+ when 'leaf' then script.call_generator(:leaf)
47
+ when 'season' then script.call_generator(:season)
48
+ end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Runs Autumn from the command line. This script will not exit until all leaves
4
+ # have exited. To use this script as a daemon, see the script/daemon script.
5
+
6
+ APP_ROOT = File.expand_path("#{File.dirname(__FILE__)}/..")
7
+ $: << APP_ROOT
8
+
9
+ require 'rubygems'
10
+ require 'autumn'
11
+
12
+ require 'autumn/genesis'
13
+
14
+ puts "Loading Autumn #{AUTUMN_VERSION}"
15
+ Autumn::Genesis.new.boot!
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: comboy-autumn
3
+ version: !ruby/object:Gem::Version
4
+ version: "3.1"
5
+ platform: ruby
6
+ authors:
7
+ - Tim Morgan
8
+ - "Kacper Cie\xC5\x9Bla"
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-04-04 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies: []
16
+
17
+ description:
18
+ email: ""
19
+ executables:
20
+ - autumn
21
+ extensions: []
22
+
23
+ extra_rdoc_files:
24
+ - README.textile
25
+ files:
26
+ - shared
27
+ - README.textile
28
+ - lib
29
+ - lib/autumn.rb
30
+ - lib/autumn
31
+ - lib/autumn/console_boot.rb
32
+ - lib/autumn/log_facade.rb
33
+ - lib/autumn/channel_leaf.rb
34
+ - lib/autumn/datamapper_hacks.rb
35
+ - lib/autumn/authentication.rb
36
+ - lib/autumn/daemon.rb
37
+ - lib/autumn/stem.rb
38
+ - lib/autumn/generator.rb
39
+ - lib/autumn/leaf.rb
40
+ - lib/autumn/coder.rb
41
+ - lib/autumn/misc.rb
42
+ - lib/autumn/ctcp.rb
43
+ - lib/autumn/formatting.rb
44
+ - lib/autumn/foliater.rb
45
+ - lib/autumn/stem_facade.rb
46
+ - lib/autumn/genesis.rb
47
+ - lib/autumn/script.rb
48
+ - lib/autumn/inheritable_attributes.rb
49
+ - lib/autumn/speciator.rb
50
+ - bin
51
+ - bin/autumn
52
+ - README
53
+ - skel
54
+ - skel/tmp
55
+ - skel/log
56
+ - skel/leaves
57
+ - skel/leaves/administrator
58
+ - skel/leaves/administrator/data
59
+ - skel/leaves/administrator/models
60
+ - skel/leaves/administrator/tasks
61
+ - skel/leaves/administrator/README
62
+ - skel/leaves/administrator/controller.rb
63
+ - skel/leaves/administrator/helpers
64
+ - skel/leaves/administrator/views
65
+ - skel/leaves/administrator/views/reload.txt.erb
66
+ - skel/leaves/administrator/views/autumn.txt.erb
67
+ - skel/leaves/insulter
68
+ - skel/leaves/insulter/data
69
+ - skel/leaves/insulter/models
70
+ - skel/leaves/insulter/tasks
71
+ - skel/leaves/insulter/README
72
+ - skel/leaves/insulter/controller.rb
73
+ - skel/leaves/insulter/helpers
74
+ - skel/leaves/insulter/views
75
+ - skel/leaves/insulter/views/help.txt.erb
76
+ - skel/leaves/insulter/views/about.txt.erb
77
+ - skel/leaves/insulter/views/insult.txt.erb
78
+ - skel/leaves/scorekeeper
79
+ - skel/leaves/scorekeeper/data
80
+ - skel/leaves/scorekeeper/models
81
+ - skel/leaves/scorekeeper/models/person.rb
82
+ - skel/leaves/scorekeeper/models/channel.rb
83
+ - skel/leaves/scorekeeper/models/pseudonym.rb
84
+ - skel/leaves/scorekeeper/models/score.rb
85
+ - skel/leaves/scorekeeper/tasks
86
+ - skel/leaves/scorekeeper/tasks/stats.rake
87
+ - skel/leaves/scorekeeper/README
88
+ - skel/leaves/scorekeeper/controller.rb
89
+ - skel/leaves/scorekeeper/helpers
90
+ - skel/leaves/scorekeeper/helpers/general.rb
91
+ - skel/leaves/scorekeeper/config.yml
92
+ - skel/leaves/scorekeeper/views
93
+ - skel/leaves/scorekeeper/views/about.txt.erb
94
+ - skel/leaves/scorekeeper/views/change.txt.erb
95
+ - skel/leaves/scorekeeper/views/history.txt.erb
96
+ - skel/leaves/scorekeeper/views/points.txt.erb
97
+ - skel/leaves/scorekeeper/views/usage.txt.erb
98
+ - skel/config
99
+ - skel/config/seasons
100
+ - skel/config/seasons/testing
101
+ - skel/config/seasons/testing/stems.yml
102
+ - skel/config/seasons/testing/database.yml
103
+ - skel/config/seasons/testing/leaves.yml
104
+ - skel/config/seasons/testing/season.yml
105
+ - skel/config/global.yml
106
+ - skel/Rakefile
107
+ - skel/script
108
+ - skel/script/server
109
+ - skel/script/console
110
+ - skel/script/destroy
111
+ - skel/script/generate
112
+ - skel/script/daemon
113
+ - autumn.gemspec
114
+ - doc
115
+ - resources
116
+ - resources/daemons
117
+ - resources/daemons/tr-ircd.yml
118
+ - resources/daemons/Dancer.yml
119
+ - resources/daemons/_Other.yml
120
+ - resources/daemons/Undernet.yml
121
+ - resources/daemons/QuakeNet.yml
122
+ - resources/daemons/aircd.yml
123
+ - resources/daemons/IRCnet.yml
124
+ - resources/daemons/KineIRCd.yml
125
+ - resources/daemons/RFC2811.yml
126
+ - resources/daemons/Ultimate.yml
127
+ - resources/daemons/hybrid.yml
128
+ - resources/daemons/GameSurge.yml
129
+ - resources/daemons/AustHex.yml
130
+ - resources/daemons/Unreal.yml
131
+ - resources/daemons/Ithildin.yml
132
+ - resources/daemons/bdq-ircd.yml
133
+ - resources/daemons/RFC1459.yml
134
+ - resources/daemons/RFC2812.yml
135
+ - resources/daemons/Anothernet.yml
136
+ - resources/daemons/Bahamut.yml
137
+ - resources/daemons/ircu.yml
138
+ - resources/daemons/RatBox.yml
139
+ - resources/daemons/PTlink.yml
140
+ has_rdoc: true
141
+ homepage: ""
142
+ post_install_message:
143
+ rdoc_options:
144
+ - --main
145
+ - README.textile
146
+ - --inline-source
147
+ - --charset=UTF-8
148
+ require_paths:
149
+ - lib
150
+ required_ruby_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: "0"
155
+ version:
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: "0"
161
+ version:
162
+ requirements: []
163
+
164
+ rubyforge_project:
165
+ rubygems_version: 1.2.0
166
+ signing_key:
167
+ specification_version: 2
168
+ summary: A Ruby IRC Bot Framework
169
+ test_files: []
170
+