sportdb 0.9.7 → 1.0.0

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 (76) hide show
  1. data/Manifest.txt +12 -55
  2. data/Rakefile +11 -10
  3. data/bin/sportdb +1 -2
  4. data/config/fixtures.de.yml +42 -0
  5. data/config/fixtures.en.yml +52 -0
  6. data/config/fixtures.es.yml +44 -0
  7. data/config/fixtures.pt.yml +44 -0
  8. data/lib/sportdb/cli/main.rb +189 -0
  9. data/lib/sportdb/cli/opts.rb +15 -69
  10. data/lib/sportdb/data/fixtures.rb +205 -0
  11. data/lib/sportdb/{keys.rb → data/keys.rb} +9 -2
  12. data/lib/sportdb/data/models.rb +43 -0
  13. data/lib/sportdb/deleter.rb +27 -0
  14. data/lib/sportdb/lang.rb +265 -0
  15. data/lib/sportdb/models/event.rb +0 -34
  16. data/lib/sportdb/reader.rb +322 -78
  17. data/lib/sportdb/stats.rb +28 -0
  18. data/lib/sportdb/utils.rb +90 -13
  19. data/lib/sportdb/version.rb +1 -1
  20. data/lib/sportdb.rb +49 -198
  21. data/tasks/test.rb +163 -0
  22. metadata +46 -71
  23. data/data/america/2011.rb +0 -36
  24. data/data/america/2011.txt +0 -110
  25. data/data/america/2011.yml +0 -30
  26. data/data/america/teams.txt +0 -26
  27. data/data/at/2011_12/bl.rb +0 -30
  28. data/data/at/2011_12/bl.txt +0 -79
  29. data/data/at/2011_12/cup.rb +0 -66
  30. data/data/at/2012_13/bl.rb +0 -33
  31. data/data/at/2012_13/bl.txt +0 -198
  32. data/data/at/2012_13/cup.rb +0 -111
  33. data/data/at/2012_13/cup.txt +0 -89
  34. data/data/at/badges.rb +0 -22
  35. data/data/at/teams.txt +0 -88
  36. data/data/cl/2011_12/cl.rb +0 -88
  37. data/data/cl/2011_12/el.rb +0 -65
  38. data/data/cl/2012_13/cl.rb +0 -324
  39. data/data/cl/badges.rb +0 -68
  40. data/data/cl/teams.txt +0 -46
  41. data/data/copa/sud_2012_13.rb +0 -38
  42. data/data/copa/sud_2012_13.txt +0 -49
  43. data/data/copa/teams.txt +0 -35
  44. data/data/de/2012_13/bl.rb +0 -38
  45. data/data/de/2012_13/bl.txt +0 -216
  46. data/data/de/teams.txt +0 -23
  47. data/data/en/2012_13/pl.rb +0 -39
  48. data/data/en/2012_13/pl.txt +0 -291
  49. data/data/en/teams.txt +0 -26
  50. data/data/es/teams.txt +0 -8
  51. data/data/euro/2008.rb +0 -30
  52. data/data/euro/2008.txt +0 -114
  53. data/data/euro/2012.rb +0 -25
  54. data/data/euro/2012.txt +0 -114
  55. data/data/euro/teams.txt +0 -36
  56. data/data/leagues.rb +0 -68
  57. data/data/mx/apertura_2012.rb +0 -35
  58. data/data/mx/apertura_2012.txt +0 -106
  59. data/data/mx/teams.txt +0 -20
  60. data/data/nfl/teams.txt +0 -46
  61. data/data/nhl/teams.txt +0 -40
  62. data/data/ro/l1_2012_13.rb +0 -137
  63. data/data/ro/teams.txt +0 -26
  64. data/data/seasons.rb +0 -22
  65. data/data/world/2010.rb +0 -93
  66. data/data/world/2010.txt +0 -215
  67. data/data/world/quali_2012_13_america.rb +0 -25
  68. data/data/world/quali_2012_13_america.txt +0 -41
  69. data/data/world/quali_2012_13_europe.rb +0 -32
  70. data/data/world/quali_2012_13_europe_c.txt +0 -85
  71. data/data/world/quali_2012_13_europe_i.txt +0 -74
  72. data/data/world/teams.txt +0 -25
  73. data/lib/sportdb/cli/runner.rb +0 -147
  74. data/lib/sportdb/loader.rb +0 -82
  75. data/lib/sportdb/templater.rb +0 -81
  76. data/templates/fixtures.rb.erb +0 -51
data/lib/sportdb/utils.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
 
2
3
  ### some utils moved to worldbdb/utils for reuse
3
4
 
@@ -5,33 +6,43 @@
5
6
  module SportDB::FixtureHelpers
6
7
 
7
8
  def is_round?( line )
8
- line =~ /Spieltag|Runde|Achtelfinale|Viertelfinale|Halbfinale|Finale/
9
+ line =~ SportDB.lang.regex_round
9
10
  end
10
-
11
+
11
12
  def is_group?( line )
12
13
  # NB: check after is_round? (round may contain group reference!)
13
- line =~ /Gruppe|Group/
14
+ line =~ SportDB.lang.regex_group
14
15
  end
15
-
16
+
16
17
  def is_knockout_round?( line )
17
- if line =~ /Achtelfinale|Viertelfinale|Halbfinale|Spiel um Platz 3|Finale|K\.O\.|Knockout/
18
+
19
+ ## todo: check for adding ignore case for regex (e.g. 1st leg/1st Leg)
20
+
21
+ if line =~ SportDB.lang.regex_leg1
22
+ puts " two leg knockout; skip knockout flag on first leg"
23
+ false
24
+ elsif line =~ SportDB.lang.regex_knockout_round
18
25
  puts " setting knockout flag to true"
19
26
  true
27
+ elsif line =~ /K\.O\.|Knockout/
28
+ ## NB: add two language independent markers, that is, K.O. and Knockout
29
+ puts " setting knockout flag to true (lang independent marker)"
30
+ true
20
31
  else
21
32
  false
22
33
  end
23
34
  end
24
35
 
25
36
  def find_group_title_and_pos!( line )
26
- ## group pos - for now support single digit e.g 1,2,3 or letter e.g. A,B,C
37
+ ## group pos - for now support single digit e.g 1,2,3 or letter e.g. A,B,C or HEX
27
38
  ## nb: (?:) = is for non-capturing group(ing)
28
- regex = /(?:Group|Gruppe)\s+((?:\d{1}|[A-Z]{1}))\b/
39
+ regex = /(?:Group|Gruppe|Grupo)\s+((?:\d{1}|[A-Z]{1,3}))\b/
29
40
 
30
41
  match = regex.match( line )
31
42
 
32
43
  return [nil,nil] if match.nil?
33
44
 
34
- pos = case match[1]
45
+ pos = case match[1]
35
46
  when 'A' then 1
36
47
  when 'B' then 2
37
48
  when 'C' then 3
@@ -42,6 +53,9 @@ module SportDB::FixtureHelpers
42
53
  when 'H' then 8
43
54
  when 'I' then 9
44
55
  when 'J' then 10
56
+ when 'K' then 11
57
+ when 'L' then 12
58
+ when 'HEX' then 666 # HEX for Hexagonal - todo/check: map to something else ??
45
59
  else match[1].to_i
46
60
  end
47
61
 
@@ -56,9 +70,42 @@ module SportDB::FixtureHelpers
56
70
  end
57
71
 
58
72
  def find_round_pos!( line )
73
+
74
+ ## todo: let title2 go first to cut off //
75
+ ## todo: cut of end of line comments w/ # ???
76
+
59
77
  ## fix/todo:
60
78
  ## if no round found assume last_pos+1 ??? why? why not?
61
79
 
80
+ # extract optional round pos from line
81
+ # e.g. (1) - must start line
82
+ regex = /^[ \t]*\((\d{1,3})\)[ \t]+/
83
+ if line =~ regex
84
+ puts " pos: >#{$1}<"
85
+
86
+ line.sub!( regex, '[ROUND|POS] ' ) ## NB: add back trailing space that got swallowed w/ regex -> [ \t]+
87
+ return $1.to_i
88
+ end
89
+
90
+ # continue; try some other options
91
+
92
+ # NB: do not search string after free standing / or //
93
+ # cut-off optional trailing part w/ starting w/ / or //
94
+ #
95
+ # e.g. Viertelfinale // Di+Mi 10.+11. April 2012 becomes just
96
+ # Viertelfinale
97
+
98
+ cutoff_regex = /^(.+?)[ \t]\/{1,3}[ \t]/
99
+
100
+ if line =~ cutoff_regex
101
+ line = $1.to_s # cut off the rest if regex matches
102
+ end
103
+
104
+ ## fix/todo: use cutoff_line for search
105
+ ## and use line.sub! to change original string
106
+ # e.g. Jornada 3 // 1,2 y 3 febrero
107
+ # only replaces match in local string w/ [ROUND|POS]
108
+
62
109
  regex = /\b(\d+)\b/
63
110
 
64
111
  if line =~ regex
@@ -70,7 +117,7 @@ module SportDB::FixtureHelpers
70
117
  return value
71
118
  else
72
119
  return nil
73
- end
120
+ end
74
121
  end
75
122
 
76
123
  def find_date!( line )
@@ -80,9 +127,15 @@ module SportDB::FixtureHelpers
80
127
 
81
128
  # e.g. 2012-09-14 20:30 => YYYY-MM-DD HH:MM
82
129
  regex_db = /\b(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2})\b/
130
+
131
+ # e.g. 2012-09-14 w/ implied hours (set to 12:00)
132
+ regex_db2 = /\b(\d{4})-(\d{2})-(\d{2})\b/
83
133
 
84
134
  # e.g. 14.09. 20:30 => DD.MM. HH:MM
85
135
  regex_de = /\b(\d{2})\.(\d{2})\.\s+(\d{2}):(\d{2})\b/
136
+
137
+ # e.g. 14.09.2012 20:30 => DD.MM.YYYY HH:MM
138
+ regex_de2 = /\b(\d{2})\.(\d{2})\.(\d{4})\s+(\d{2}):(\d{2})\b/
86
139
 
87
140
  if line =~ regex_db
88
141
  value = "#{$1}-#{$2}-#{$3} #{$4}:#{$5}"
@@ -93,6 +146,23 @@ module SportDB::FixtureHelpers
93
146
 
94
147
  line.sub!( regex_db, '[DATE.DB]' )
95
148
 
149
+ return DateTime.strptime( value, '%Y-%m-%d %H:%M' )
150
+ elsif line =~ regex_db2
151
+ value = "#{$1}-#{$2}-#{$3} 12:00"
152
+ puts " date: >#{value}<"
153
+
154
+ line.sub!( regex_db2, '[DATE.DB2]' )
155
+
156
+ return DateTime.strptime( value, '%Y-%m-%d %H:%M' )
157
+ elsif line =~ regex_de2
158
+ value = "#{$3}-#{$2}-#{$1} #{$4}:#{$5}"
159
+ puts " date: >#{value}<"
160
+
161
+ ## todo: lets you configure year
162
+ ## and time zone (e.g. cet, eet, utc, etc.)
163
+
164
+ line.sub!( regex_de2, '[DATE.DE2]' )
165
+
96
166
  return DateTime.strptime( value, '%Y-%m-%d %H:%M' )
97
167
  elsif line =~ regex_de
98
168
  value = "2012-#{$2}-#{$1} #{$3}:#{$4}"
@@ -129,18 +199,25 @@ module SportDB::FixtureHelpers
129
199
  end
130
200
 
131
201
  def find_scores!( line )
202
+
203
+ ### fix: depending on language allow 1:1 or 1-1
204
+ ## do NOT allow mix and match
205
+ ## e.g. default to en is 1-1
206
+ ## de is 1:1 etc.
207
+
208
+
132
209
  # extract score from line
133
210
  # and return it
134
211
  # NB: side effect - removes date from line string
135
212
 
136
- # e.g. 1:2 or 0:2 or 3:3
137
- regex = /\b(\d):(\d)\b/
213
+ # e.g. 1:2 or 0:2 or 3:3 // 1-1 or 0-2 or 3-3
214
+ regex = /\b(\d)[:\-](\d)\b/
138
215
 
139
216
  # e.g. 1:2nV => overtime
140
- regex_ot = /\b(\d):(\d)[ \t]?[nN][vV]\b/
217
+ regex_ot = /\b(\d)[:\-](\d)[ \t]?[nN][vV]\b/
141
218
 
142
219
  # e.g. 5:4iE => penalty
143
- regex_p = /\b(\d):(\d)[ \t]?[iI][eE]\b/
220
+ regex_p = /\b(\d)[:\-](\d)[ \t]?[iI][eE]\b/
144
221
 
145
222
  scores = []
146
223
 
@@ -1,4 +1,4 @@
1
1
 
2
2
  module SportDB
3
- VERSION = '0.9.7'
3
+ VERSION = '1.0.0'
4
4
  end
data/lib/sportdb.rb CHANGED
@@ -1,3 +1,6 @@
1
+ # encoding: utf-8
2
+
3
+
1
4
  ###
2
5
  # NB: for local testing run like:
3
6
  #
@@ -7,14 +10,17 @@
7
10
 
8
11
  require 'yaml'
9
12
  require 'pp'
10
- require 'logger'
11
- require 'optparse'
13
+ require 'logger' ## todo/fix: no longer needed - replaced by logutils??
12
14
  require 'fileutils'
13
15
  require 'erb'
14
16
 
15
- # rubygems
17
+ # rubygems / 3rd party libs
16
18
 
17
19
  require 'active_record' ## todo: add sqlite3? etc.
20
+
21
+ require 'logutils'
22
+ require 'textutils'
23
+
18
24
  require 'worlddb'
19
25
 
20
26
 
@@ -22,7 +28,6 @@ require 'worlddb'
22
28
 
23
29
  require 'sportdb/version'
24
30
 
25
- require 'sportdb/keys'
26
31
  require 'sportdb/models/forward'
27
32
  require 'sportdb/models/badge'
28
33
  require 'sportdb/models/city'
@@ -40,11 +45,24 @@ require 'sportdb/models/season'
40
45
  require 'sportdb/models/team'
41
46
  require 'sportdb/schema' # NB: requires sportdb/models (include SportDB::Models)
42
47
  require 'sportdb/utils'
43
- require 'sportdb/loader'
44
48
  require 'sportdb/reader'
45
- require 'sportdb/templater'
46
- require 'sportdb/cli/opts'
47
- require 'sportdb/cli/runner'
49
+ require 'sportdb/lang'
50
+
51
+ require 'sportdb/deleter'
52
+ require 'sportdb/stats'
53
+
54
+ ###############
55
+ # optional: for convenience add some finders etc. for known fixtures
56
+ #
57
+ # only used for sportdb/console.rb
58
+ # and sportdb/tasks/test.rb -> rename to tasks.rb?
59
+ #
60
+ # todo/fix => remove from here and move into console.rb and tasks.rb
61
+
62
+ require 'sportdb/data/keys'
63
+ require 'sportdb/data/fixtures'
64
+ require 'sportdb/data/models' # add convenience finders for known fixtures
65
+
48
66
 
49
67
 
50
68
  module SportDB
@@ -56,192 +74,49 @@ module SportDB
56
74
  def self.root
57
75
  "#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
58
76
  end
59
-
60
- # builtin path to fixture data
61
- def self.data_path
62
- "#{root}/data"
63
- end
64
-
65
77
 
66
- def self.main
67
- Runner.new.run(ARGV)
78
+ def self.config_path
79
+ "#{root}/config"
68
80
  end
69
81
 
70
- def self.create
71
- CreateDB.up
82
+ def self.lang
83
+ # todo/fix: find a better way for single instance ??
84
+ if @lang.nil?
85
+ @lang = Lang.new
86
+ end
87
+ @lang
72
88
  end
73
89
 
74
- class Fixtures
75
- ## todo: move into its own file???
76
-
77
- ## make constants in Keys availabe (get include in Models) - do NOT pollute/include in SportDB
78
- ## make models available in sportdb module by default with namespace
79
- # e.g. lets you use Team instead of Models::Team
80
- include SportDB::Models
81
-
82
-
83
- def self.fixtures_rb_test
84
- ['leagues',
85
- 'seasons',
86
- # 'at/2011_12/bl',
87
- # 'at/2011_12/cup',
88
- # 'at/2012_13/bl',
89
- # 'at/2012_13/cup',
90
- # 'copa/sud_2012_13',
91
- # 'world/quali_2012_13_america'
92
- ]
93
- end
94
-
95
- def self.fixtures_txt_test
96
- [
97
- # [ AT_2011_12, 'at/2011_12/bl'],
98
- # [ AT_2012_13, 'at/2012_13/bl'],
99
- # [ AT_CUP_2012_13, 'at/2012_13/cup'],
100
- # ['copa.sud.2012/13', 'copa/sud_2012_13'],
101
- # [ WORLD_QUALI_AMERICA_2012_13, 'world/quali_2012_13_america']
102
- ]
103
- end
104
-
105
-
106
- def self.team_fixtures
107
- at = Country.find_by_key!( 'at' )
108
- de = Country.find_by_key!( 'de' )
109
- en = Country.find_by_key!( 'en' )
110
- es = Country.find_by_key!( 'es' )
111
- ro = Country.find_by_key!( 'ro' )
112
- mx = Country.find_by_key!( 'mx' )
113
-
114
- [
115
- [ 'america/teams', { national: true } ],
116
- [ 'euro/teams', { national: true } ],
117
- [ 'world/teams', { national: true } ],
118
- [ 'at/teams', { club: true, country_id: at.id } ],
119
- [ 'de/teams', { club: true, country_id: de.id } ],
120
- [ 'en/teams', { club: true, country_id: en.id } ],
121
- [ 'es/teams', { club: true, country_id: es.id } ],
122
- # [ 'ro/teams', { club: true, country_id: ro.id } ],
123
- [ 'mx/teams', { club: true, country_id: mx.id } ],
124
- [ 'cl/teams', { club: true } ],
125
- [ 'copa/teams', { club: true } ],
126
- [ 'nhl/teams', { club: true } ]
127
- ]
128
- end
129
-
130
- def self.fixtures_rb # all builtin ruby fixtures; helper for covenience
131
- ['leagues',
132
- 'seasons',
133
- 'at/badges',
134
- 'at/2011_12/bl',
135
- 'at/2011_12/cup',
136
- 'at/2012_13/bl',
137
- 'at/2012_13/cup',
138
- 'cl/badges',
139
- 'cl/2011_12/cl',
140
- 'cl/2011_12/el',
141
- 'cl/2012_13/cl',
142
- 'de/2012_13/bl',
143
- 'en/2012_13/pl',
144
- 'euro/2008',
145
- 'euro/2012',
146
- 'america/2011',
147
- 'copa/sud_2012_13',
148
- 'mx/apertura_2012',
149
- 'world/2010',
150
- 'world/quali_2012_13_europe',
151
- 'world/quali_2012_13_america'
152
- ]
153
- end
154
-
155
- def self.fixtures_txt
156
- [[ AT_2011_12, 'at/2011_12/bl'],
157
- [ AT_2012_13, 'at/2012_13/bl'],
158
- [ AT_CUP_2012_13, 'at/2012_13/cup'],
159
- ['de.2012/13', 'de/2012_13/bl'],
160
- ['en.2012/13', 'en/2012_13/pl'],
161
- ['america.2011', 'america/2011'],
162
- ['mx.apertura.2012', 'mx/apertura_2012'],
163
- ['copa.sud.2012/13', 'copa/sud_2012_13'],
164
- [ EURO_2008, 'euro/2008'],
165
- [ WORLD_2010, 'world/2010'],
166
- [ WORLD_QUALI_EURO_2012_13, 'world/quali_2012_13_europe_c'],
167
- [ WORLD_QUALI_AMERICA_2012_13, 'world/quali_2012_13_america']]
168
- end
169
- end # class Fixtures
170
90
 
171
- def self.team_fixtures
172
- Fixtures.team_fixtures
91
+ def self.main
92
+ ## Runner.new.run(ARGV) - old code
93
+ require 'sportdb/cli/main'
173
94
  end
174
95
 
175
- def self.fixtures_rb # all builtin ruby fixtures; helper for covenience
176
- Fixtures.fixtures_rb
177
- end
178
-
179
- def self.fixtures_txt
180
- Fixtures.fixtures_txt
96
+ def self.create
97
+ CreateDB.up
181
98
  end
182
99
 
183
- def self.load_all
184
- ## load teams first
185
- read( team_fixtures ) # converted to plain text fixtures (.rb no longer exist)
186
-
187
- load( fixtures_rb )
100
+ def self.read_setup( setup, include_path )
101
+ reader = Reader.new
102
+ reader.load_setup_with_include_path( setup, include_path )
188
103
  end
189
104
 
190
-
191
- def self.read_all
192
- ## todo/fix: remove!! roll into load_all
193
- read( fixtures_txt )
105
+ def self.read_all( include_path ) # convenience helper
106
+ read_setup( 'setups/all', include_path )
194
107
  end
195
108
 
196
- # load built-in (that is, bundled within the gem) named seeds
197
- # - pass in an array of seed names e.g. [ 'cl/teams', 'cl/2012_13/cl' ] etc.
198
-
199
- def self.load( ary )
200
- loader = Loader.new
201
- ary.each do |name|
202
- loader.load_fixtures_builtin( name )
203
- end
204
- end
205
109
 
206
110
  # load built-in (that is, bundled within the gem) named plain text seeds
207
- # - pass in an array of pairs of event/seed names e.g. [['at.2012/13', 'at/2012_13/bl'], ['cl.2012/13', 'cl/2012_13/cl']] etc.
111
+ # - pass in an array of pairs of event/seed names e.g.
112
+ # [['at.2012/13', 'at/2012_13/bl'],
113
+ # ['cl.2012/13', 'cl/2012_13/cl']] etc.
208
114
 
209
- def self.read( ary )
115
+ def self.read( ary, include_path )
210
116
  reader = Reader.new
211
- ary.each do |rec|
212
- ## todo: check for teams in name too?
213
- if rec[1].nil? || rec[1].kind_of?( Hash ) ## assume team fixtures
214
- reader.load_teams_builtin( rec[0], rec[1] ) ## NB: name goes first than opt more_values hash
215
- else
216
- reader.load_fixtures_builtin( rec[0], rec[1] ) # event_key, name -- assume game fixtures
217
- end
218
- end
117
+ reader.load_with_include_path( ary, include_path )
219
118
  end
220
-
221
119
 
222
- class Deleter
223
- ## todo: move into its own file???
224
-
225
- ## make models available in sportdb module by default with namespace
226
- # e.g. lets you use Team instead of Models::Team
227
- include SportDB::Models
228
-
229
- def run( args=[] )
230
- # for now delete all tables
231
-
232
- Team.delete_all
233
- Game.delete_all
234
- Event.delete_all
235
- EventTeam.delete_all
236
- Group.delete_all
237
- GroupTeam.delete_all
238
- Round.delete_all
239
- Badge.delete_all
240
- League.delete_all
241
- Season.delete_all
242
- end
243
-
244
- end
245
120
 
246
121
  # delete ALL records (use with care!)
247
122
  def self.delete!
@@ -250,29 +125,6 @@ module SportDB
250
125
  end # method delete!
251
126
 
252
127
 
253
- class Stats
254
- include SportDB::Models
255
-
256
- def tables
257
- puts "Stats:"
258
- puts " #{Event.count} events / #{Round.count} rounds / #{Group.count} groups"
259
- puts " #{League.count} leagues / #{Season.count} seasons"
260
- puts " #{Country.count} countries / #{Region.count} regions / #{City.count} cities"
261
- puts " #{Team.count} teams"
262
- puts " #{Game.count} games"
263
- puts " #{Badge.count} badges"
264
-
265
- ## todo: add tags / taggings from worlddb
266
- end
267
-
268
- def props
269
- puts "Props:"
270
- Prop.order( 'created_at asc' ).all.each do |prop|
271
- puts " #{prop.key} / #{prop.value} || #{prop.created_at}"
272
- end
273
- end
274
- end
275
-
276
128
  def self.stats
277
129
  stats = Stats.new
278
130
  stats.tables
@@ -289,7 +141,6 @@ module SportDB
289
141
 
290
142
 
291
143
 
292
-
293
144
  def self.load_plugins
294
145
 
295
146
  @found ||= []
data/tasks/test.rb ADDED
@@ -0,0 +1,163 @@
1
+
2
+ #########################
3
+ # Fill up sport.db w/ football.db fixtures
4
+
5
+
6
+ ##############################
7
+ ## for testing
8
+ ##
9
+ ## NB: use
10
+ # rake -I ../world.db.ruby/lib -I ../sport.db.ruby/lib update
11
+
12
+
13
+ include SportDB::Fixtures # include fixture constants like WORLD_FIXTURES, EN_FIXTURES etc.
14
+
15
+
16
+ ##########
17
+ # TODO: configure - copy to your rake file
18
+
19
+ # INCLUDE_PATH = "../football.db"
20
+
21
+ # BUILD_DIR = "./db"
22
+
23
+ # SPORT_DB_PATH = "#{BUILD_DIR}/sport.db"
24
+
25
+
26
+ ################
27
+
28
+ DB_CONFIG = {
29
+ :adapter => 'sqlite3',
30
+ :database => SPORT_DB_PATH
31
+ }
32
+
33
+ directory BUILD_DIR
34
+
35
+ # task :clean do
36
+ # rm SPORT_DB_PATH if File.exists?( SPORT_DB_PATH )
37
+ # end
38
+
39
+ task :env => BUILD_DIR do
40
+ pp DB_CONFIG
41
+ ActiveRecord::Base.establish_connection( DB_CONFIG )
42
+ end
43
+
44
+ # task :create => :env do
45
+ # WorldDB.create
46
+ # end
47
+
48
+ task :import => :env do
49
+ reader = SportDB::Reader.new
50
+
51
+ reader.load_seasons_with_include_path( 'seasons', INCLUDE_PATH )
52
+
53
+ reader.load_leagues_with_include_path( 'leagues', INCLUDE_PATH )
54
+ reader.load_leagues_with_include_path( 'leagues_club', INCLUDE_PATH, { club: true } )
55
+ end
56
+
57
+ ### club europe (cl,el)
58
+ task :club_europe => [:import] do
59
+ import_fixtures( CLUB_EUROPE_TEAMS, CLUB_EUROPE_FIXTURES )
60
+ end
61
+
62
+ ### club america
63
+ task :club_america => [:import] do
64
+ import_fixtures( CLUB_AMERICA_TEAMS, CLUB_AMERICA_FIXTURES )
65
+ end
66
+
67
+ task :europe => [:import] do
68
+ import_fixtures( EUROPE_TEAMS, EUROPE_FIXTURES )
69
+ end
70
+
71
+ task :america => [:import] do
72
+ import_fixtures( AMERICA_TEAMS, AMERICA_FIXTURES )
73
+ end
74
+
75
+ task :world => [:import] do
76
+ import_fixtures( WORLD_TEAMS, WORLD_FIXTURES )
77
+ end
78
+
79
+ ### ar - Argentina
80
+ task :ar => [:import] do
81
+ import_fixtures( AR_TEAMS, AR_FIXTURES )
82
+ end
83
+
84
+ ### br - Brasil
85
+ task :br => [:import] do
86
+ import_fixtures( BR_TEAMS, BR_FIXTURES )
87
+ end
88
+
89
+ ### mx - Mexico
90
+ task :mx => [:import] do
91
+ import_fixtures( MX_TEAMS, MX_FIXTURES )
92
+ end
93
+
94
+ #### at - Austria
95
+ task :at => [:import] do
96
+ import_fixtures( AT_TEAMS, AT_FIXTURES )
97
+ end
98
+
99
+ #### de - Deutschland/Germany
100
+ task :de => [:import] do
101
+ import_fixtures( DE_TEAMS, DE_FIXTURES )
102
+ end
103
+
104
+ #### en - England
105
+ task :en => [:import] do
106
+ import_fixtures( EN_TEAMS, EN_FIXTURES )
107
+ end
108
+
109
+ #### ro - Romania
110
+ task :ro => [:import] do
111
+ import_fixtures( RO_TEAMS, RO_FIXTURES )
112
+ end
113
+
114
+
115
+
116
+ desc 'worlddb - test loading of builtin fixtures (update)'
117
+ task :update => [:world]
118
+ # task :update => [:at, :de, :en, :ro, :ar, :br, :mx]
119
+
120
+
121
+
122
+ def import_fixtures( teams, fixtures )
123
+ reader = SportDB::Reader.new
124
+ reader.load_with_include_path( teams, INCLUDE_PATH )
125
+ reader.load_with_include_path( fixtures, INCLUDE_PATH )
126
+ end
127
+
128
+
129
+
130
+ =begin
131
+
132
+ ##################
133
+ # usage sample
134
+ ##################
135
+
136
+ #### step 1) configure tasks in test.rb in your rake file
137
+
138
+ Rakefile:
139
+
140
+ INCLUDE_PATH = "../football.db"
141
+
142
+ BUILD_DIR = "./db"
143
+
144
+ SPORT_DB_PATH = "#{BUILD_DIR}/sport.db"
145
+
146
+
147
+ #### step 2) include tasks in test.rb
148
+
149
+ SPORT_DB_RUBY_PATH = "../sport.db.ruby"
150
+ WORLD_DB_RUBY_PATH = "../world.db.ruby"
151
+
152
+ require "#{WORLD_DB_RUBY_PATH}/lib/worlddb.rb"
153
+ require "#{SPORT_DB_RUBY_PATH}/lib/sportdb.rb"
154
+
155
+ require "#{SPORT_DB_RUBY_PATH}/tasks/test.rb"
156
+
157
+ Shell:
158
+
159
+ ### step 3) call on command line
160
+
161
+ $ rake -I ../world.db.ruby/lib -I ../sport.db.ruby/lib update
162
+
163
+ =end