comboy-autumn 3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+