sportdb-writers 0.1.1 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4c4a35292a78b32475f88dc7d43246c1782dcd82c15afed36aec0b6e1143e94
4
- data.tar.gz: 6ec7868264b09d86494f86b2a30c7577212e7e262901df415b36d2bd3c4d4d06
3
+ metadata.gz: 3483a7e2f321970a2e970ba30e272127892013b61c63be66431a318d32b52c3f
4
+ data.tar.gz: 4d213ad75e6973aa6ef95bee7fb39a62bca69cd3261fc18e2bfcfc9a6b913b87
5
5
  SHA512:
6
- metadata.gz: 6ca5e6e0ec314d83328900e159d6f561869ba4f93d160628b012c1f16b571df3b2d7c92fb418b74fcf474bf3fd8451c03590e629318309b4cb93ee2eaee7c491
7
- data.tar.gz: 4ed5b4c8538c9438532fb80432a7c7087f3b84c991a38d4026a4e74981759093fed3d475d9191b2f28d6c3ae776de87c3826e1f80f7531e00da28f6d4a009a3d
6
+ metadata.gz: b7b00a033d247555ca57acc503c88de73111605738998a9e5b3ea4e53f0353b08df19cfa1f9d5c84a5ad22b5528ddb632ba927b4f0b53fb5493f5391732d3d13
7
+ data.tar.gz: 23cec6ae8fa9b9ca04cf2242c86f8310de76a191b5a66bc4f2cab09aff7ea5c3e0a0d312bfe582dd2150d344302bdabab592c9b1944385bd75ae86de2367d207
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ### 0.1.1
1
+ ### 0.2.0
2
2
 
3
3
  ### 0.0.1 / 2020-11-15
4
4
 
data/Manifest.txt CHANGED
@@ -4,18 +4,17 @@ README.md
4
4
  Rakefile
5
5
  bin/fbgen
6
6
  bin/fbtxt
7
- lib/sportdb/leagues/leagues_at.rb
8
- lib/sportdb/leagues/leagues_de.rb
9
- lib/sportdb/leagues/leagues_eng.rb
10
- lib/sportdb/leagues/leagues_es.rb
11
- lib/sportdb/leagues/leagues_europe.rb
12
- lib/sportdb/leagues/leagues_it.rb
13
- lib/sportdb/leagues/leagues_mx.rb
14
- lib/sportdb/leagues/leagues_south_america.rb
15
- lib/sportdb/leagues/leagues_world.rb
7
+ config/leagues_america.csv
8
+ config/leagues_europe.csv
9
+ config/leagues_world.csv
10
+ config/openfootball.csv
11
+ lib/sportdb/fbgen/github.rb
12
+ lib/sportdb/fbgen/github_config.rb
13
+ lib/sportdb/fbgen/main.rb
14
+ lib/sportdb/fbtxt/main.rb
16
15
  lib/sportdb/writers.rb
17
- lib/sportdb/writers/github.rb
18
16
  lib/sportdb/writers/goals.rb
17
+ lib/sportdb/writers/league_config.rb
19
18
  lib/sportdb/writers/txt_writer.rb
20
19
  lib/sportdb/writers/version.rb
21
20
  lib/sportdb/writers/write.rb
data/bin/fbgen CHANGED
@@ -6,94 +6,8 @@
6
6
 
7
7
  require 'sportdb/writers'
8
8
 
9
- require 'optparse'
10
9
 
11
-
12
-
13
- args=ARGV
14
-
15
-
16
- opts = {
17
- }
18
-
19
- parser = OptionParser.new do |parser|
20
- parser.banner = "Usage: #{$PROGRAM_NAME} [options]"
21
- end
22
- parser.parse!( args )
23
-
24
- puts "OPTS:"
25
- p opts
26
- puts "ARGV:"
27
- p args
28
-
29
-
30
- ### split args in datasets with leagues and seasons
31
- datasets = []
32
-
33
-
34
- args.each do |arg|
35
- if arg =~ %r{^[0-9/-]+$} ## season
36
- if datasets.empty?
37
- puts "!! ERROR - league required before season arg; sorry"
38
- exit 1
39
- end
40
-
41
- season = Season.parse( arg ) ## check season
42
- datasets[-1][1] << season
43
- else ## assume league key
44
- key = arg.downcase
45
- league_info = Writer::LEAGUES[ key ]
46
-
47
- if league_info.nil?
48
- puts "!! ERROR - no league found for >#{key}<; sorry"
49
- exit 1
50
- end
51
-
52
- datasets << [key, []]
53
- end
54
- end
55
-
56
- pp datasets
57
-
58
-
59
- datasets.each do |league_key, seasons|
60
- seasons = [ Season('2024/25') ] if seasons.empty?
61
-
62
- puts "==> gen #{league_key} - #{seasons.size} seasons(s)..."
63
-
64
- league_info = Writer::LEAGUES[ league_key ]
65
- pp league_info
66
-
67
- seasons.each do |season|
68
- ### get matches
69
- src_dir = "/sports/cache.wfb"
70
- path = "#{src_dir}/#{season.to_path}/#{league_key}.csv"
71
- puts " ---> reading matches in #{path} ..."
72
- matches = SportDb::CsvMatchParser.read( path )
73
- puts " #{matches.size} matches"
74
-
75
- ## build
76
- txt = SportDb::TxtMatchWriter.build( matches )
77
- puts txt
78
-
79
- league_name = league_info[ :name ] # e.g. Brasileiro Série A
80
- basename = league_info[ :basename] #.e.g 1-seriea
81
-
82
- league_name = league_name.call( season ) if league_name.is_a?( Proc ) ## is proc/func - name depends on season
83
- basename = basename.call( season ) if basename.is_a?( Proc ) ## is proc/func - name depends on season
84
-
85
- buf = String.new
86
- buf << "= #{league_name} #{season}\n\n"
87
- buf << txt
88
-
89
- ## note - repo_path moved!!!
90
- ## repo_path = league_info[ :path ] # e.g. brazil or world/europe/portugal etc.
91
- repo_path = SportDb::GitHubSync::REPOS[ league_key ]
92
-
93
- outpath = "./o/#{repo_path}/#{season.to_path}/#{basename}.txt"
94
- write_text( outpath, buf )
95
- end
96
- end
10
+ Fbgen.main( ARGV )
97
11
 
98
12
 
99
13
  puts "bye"
data/bin/fbtxt CHANGED
@@ -9,44 +9,9 @@
9
9
 
10
10
  require 'sportdb/writers'
11
11
 
12
- require 'optparse'
13
12
 
13
+ Fbtxt.main( ARGV )
14
14
 
15
15
 
16
- args=ARGV
17
-
18
-
19
- opts = {
20
- }
21
-
22
- parser = OptionParser.new do |parser|
23
- parser.banner = "Usage: #{$PROGRAM_NAME} [options]"
24
- end
25
- parser.parse!( args )
26
-
27
- puts "OPTS:"
28
- p opts
29
- puts "ARGV:"
30
- p args
31
-
32
-
33
- matches = []
34
-
35
- ## step 1 - get all matches via csv
36
- args.each do |arg|
37
- path = arg
38
- puts "==> reading matches in #{path} ..."
39
- more_matches = SportDb::CsvMatchParser.read( path )
40
- matches += more_matches
41
- end
42
-
43
- puts "#{matches.size} matches"
44
- puts
45
-
46
-
47
- txt = SportDb::TxtMatchWriter.build( matches )
48
- puts txt
49
- puts
50
-
51
16
  puts "bye"
52
17
 
@@ -0,0 +1,6 @@
1
+ key, name, basename, start_season, end_season, comments
2
+
3
+ ar.1, Argentina Primera Division, 1-primeradivision,,,
4
+ br.1, Brasileiro Série A, 1-seriea,,,
5
+
6
+ mx.1, Liga MX, 1-ligamx,,, ## note: basename gets overwritten by stages e.g. 1-apertura or 1-clausura
@@ -0,0 +1,94 @@
1
+ key, name, basename, start_season, end_season, comments
2
+
3
+ at.1, Österr. Bundesliga, 1-bundesliga,,,
4
+ at.2, Österr. 2. Liga, 2-liga2, 2018/19,,
5
+ at.2, Österr. Erste Liga, 2-liga1, , 2017/18,
6
+ at.3.o, Österr. Regionalliga Ost, 3-regionalliga-ost,,,
7
+ at.cup, ÖFB Cup, cup,,,
8
+
9
+
10
+ de.1, Deutsche Bundesliga, 1-bundesliga,,,
11
+ de.2, Deutsche 2. Bundesliga, 2-bundesliga2,,,
12
+ de.3, Deutsche 3. Liga, 3-liga3,,,
13
+ de.4.bayern, Deutsche Regionalliga Bayern, 4-regionalliga-bayern,,,
14
+ de.4.n, Deutsche Regionalliga Nord, 4-regionalliga-nord,,,
15
+ de.4.no, Deutsche Regionalliga Nordost, 4-regionalliga-nordost,,,
16
+ de.4.w, Deutsche Regionalliga West, 4-regionalliga-west,,,
17
+ de.4.sw, Deutsche Regionalliga Südwest, 4-regionalliga-suedwest,,,
18
+ de.cup, DFB Pokal, cup,,,
19
+
20
+
21
+
22
+ it.1, Italian Serie A, 1-seriea,,,
23
+ it.2, Italian Serie B, 2-serieb,,,
24
+
25
+ es.1, Primera División de España, 1-liga,,,
26
+ es.2, Segunda División de España, 2-liga2,,,
27
+
28
+ fr.1, French Ligue 1, 1-ligue1,,,
29
+ fr.2, French Ligue 2, 2-ligue2,,,
30
+
31
+
32
+ eng.1, English Premier League, 1-premierleague, 1992/93,,
33
+ eng.1, English Division One, 1-division1, 1892/93, 1991/92, ## start of division 1 & 2
34
+ eng.1, English Football League, 1-footballleague, 1888/89, 1891/92, ## single league (no divisions)
35
+
36
+ eng.2, English Championship, 2-championship, 2004/05,, ## rebranding divsion 1 => championship
37
+ eng.2, English Division One, 2-division1, 1992/93, 2003/04, ## start of premier league
38
+ eng.2, English Division Two, 2-division2, 1892/93, 1991/92, ## or use English Football League Second Division ???
39
+
40
+ eng.3, English League One, 3-league1,,,
41
+ eng.4, English League Two, 4-league2,,,
42
+ eng.5, English National League, 5-nationalleague,,,
43
+ eng.cup, English FA Cup, facup,,,
44
+
45
+
46
+ hu.1, Hungarian NB I, 1-nbi,,,
47
+
48
+ gr.1, Super League Greece, 1-superleague,,,
49
+
50
+ pt.1, Portuguese Primeira Liga, 1-primeiraliga,,,
51
+ pt.2, Portuguese Segunda Liga, 2-segundaliga,,,
52
+
53
+ ch.1, Swiss Super League, 1-superleague,,,
54
+ ch.2, Swiss Challenge League, 2-challengeleague,,,
55
+ ch.cup, Swiss Cup, cup,,,
56
+
57
+
58
+ tr.1, Turkish Süper Lig, 1-superlig,,,
59
+ tr.2, Turkish 1. Lig, 2-lig1,,,
60
+
61
+ is.1, Iceland Urvalsdeild, 1-urvalsdeild,,,
62
+
63
+ sco.1, Scottish Premiership, 1-premiership,,,
64
+
65
+ ie.1, Irish Premier Division, 1-premierdivision,,,
66
+
67
+ fi.1, Finland Veikkausliiga, 1-veikkausliiga,,,
68
+
69
+ se.1, Sweden Allsvenskan, 1-allsvenskan,,,
70
+ se.2, Sweden Superettan, 2-superettan,,,
71
+
72
+ no.1, Norwegian Eliteserien, 1-eliteserien,,,
73
+ dk.1, Denmark Superligaen, 1-superligaen,,,
74
+
75
+ lu.1, Luxembourger First Division, 1-nationaldivision,,,
76
+
77
+ be.1, Belgian First Division A, 1-firstdivisiona,,,
78
+
79
+ nl.1, Dutch Eredivisie, 1-eredivisie,,,
80
+
81
+ cz.1, Czech First League, 1-firstleague,,,
82
+ sk.1, Slovakia First League, 1-superliga,,,
83
+ hr.1, Croatia 1. HNL, 1-hnl,,,
84
+
85
+ pl.1, Poland Ekstraklasa, 1-ekstraklasa,,,
86
+
87
+ ro.1, Romanian Liga 1, 1-liga1,,,
88
+
89
+ ua.1, Ukraine Premier League, 1-premierleague,,,
90
+
91
+ ru.1, Russian Premier League, 1-premierliga,,,
92
+ ru.2, Russian 1. Division, 2-division1,,,
93
+
94
+
@@ -0,0 +1,4 @@
1
+ key, name, basename, start_season, end_season, comments
2
+
3
+ cn.1, Chinese Super League, 1-superleague,,,
4
+ jp.1, Japan J1 League, 1-j1league,,,
@@ -0,0 +1,52 @@
1
+ key, path
2
+
3
+ at, austria
4
+
5
+ de, deutschland
6
+ eng, england
7
+ es, espana
8
+ it, italy
9
+
10
+ fr, europe/france
11
+
12
+ hu, europe/hungary
13
+ gr, europe/greece
14
+ pt, europe/portugal
15
+
16
+ ch, europe/switzerland
17
+
18
+ tr, europe/turkey
19
+
20
+ is, europe/iceland
21
+ sco, europe/scotland
22
+ ie, europe/ireland
23
+
24
+ fi, europe/finland
25
+ se, europe/sweden
26
+ no, europe/norway
27
+ dk, europe/denmark
28
+
29
+ lu, europe/luxembourg
30
+ be, europe/belgium
31
+ nl, europe/netherlands
32
+ cz, europe/czech-republic
33
+
34
+ sk, europe/slovakia
35
+ hr, europe/croatia
36
+ pl, europe/poland
37
+
38
+ ro, europe/romania
39
+
40
+ ua, europe/ukraine
41
+
42
+ ru, europe/russia
43
+
44
+
45
+ mx, mexico
46
+
47
+ ar, south-america/argentina
48
+ br, south-america/brazil
49
+
50
+ cn, world/asia/china
51
+ jp, world/asia/japan
52
+
@@ -0,0 +1,83 @@
1
+
2
+ module Fbgen
3
+
4
+ ###
5
+ ## todo/fix:
6
+ ## add -i/--interactive flag
7
+ ## will prompt yes/no before git operations (with consequences)!!!
8
+
9
+
10
+
11
+ class GitHubSync
12
+
13
+ ########
14
+ ## (auto)default to Writer.config.out_dir - why? why not?
15
+ ##
16
+ ## note - is monotree (that is, requires openfootball/england etc.
17
+ ## for repo pathspecs)
18
+ def self.root() @root || "/sports"; end
19
+ def self.root=( dir ) @root = dir; end
20
+ ## use root_dir (alias) - why? why not?
21
+
22
+
23
+ def initialize( repos )
24
+ @repos = repos
25
+ end
26
+
27
+
28
+ def git_push_if_changes
29
+ message = "auto-update week #{Date.today.cweek}" ## add /#{Date.today.cday - why? why not?
30
+ puts message
31
+
32
+ @repos.each do |pathspec|
33
+ _git_push_if_changes( pathspec, message: message )
34
+ end
35
+ end
36
+
37
+ def git_fast_forward_if_clean
38
+ @repos.each do |pathspec|
39
+ _git_fast_forward_if_clean( pathspec )
40
+ end
41
+ end
42
+
43
+
44
+
45
+ ## todo/fix: rename to something like
46
+ ## git_(auto_)commit_and_push_if_changes/if_dirty()
47
+
48
+ def _git_push_if_changes( pathspec, message: )
49
+ path = "#{self.class.root}/#{pathspec}"
50
+
51
+ Gitti::GitProject.open( path ) do |proj|
52
+ puts ''
53
+ puts "###########################################"
54
+ puts "## trying to commit & push repo in path >#{path}<"
55
+ puts "Dir.getwd: #{Dir.getwd}"
56
+ output = proj.changes
57
+ if output.empty?
58
+ puts "no changes found; skipping commit & push"
59
+ else
60
+ proj.add( '.' )
61
+ proj.commit( message )
62
+ proj.push
63
+ end
64
+ end
65
+ end
66
+
67
+
68
+ def _git_fast_forward_if_clean( pathspec )
69
+ path = "#{self.class.root}/#{pathspec}"
70
+
71
+ Gitti::GitProject.open( path ) do |proj|
72
+ output = proj.changes
73
+ unless output.empty?
74
+ puts "FAIL - cannot git pull (fast-forward) - working tree has changes:"
75
+ puts output
76
+ exit 1
77
+ end
78
+
79
+ proj.fast_forward
80
+ end
81
+ end
82
+ end # class GitHub
83
+ end # module Fbgen
@@ -0,0 +1,97 @@
1
+
2
+ module Fbgen
3
+ class GitHubConfig
4
+
5
+ ## map leagues to repo+path
6
+ ## e.g. fr.1 => europe/france
7
+ ## eng..1 => england
8
+ ##
9
+ ## for other than openfootball (default)
10
+ ## use @
11
+ ## e.g. myorg@austria
12
+ ## austria@myorg ??
13
+ ##
14
+ ## myorg@europe/france
15
+ ## europe/france@myorg
16
+
17
+
18
+ def self.read( path )
19
+ recs = read_csv( path )
20
+ new( recs )
21
+ end
22
+
23
+ def initialize( recs=nil )
24
+ @table = {}
25
+ add( recs ) if recs
26
+ end
27
+
28
+
29
+ def add( recs )
30
+ recs.each do |rec|
31
+ path = rec['path'] ## use pathspec - why? why not?
32
+ ## or repospec or such
33
+
34
+ ## auto-expand to openfootball as default org if no @ specified
35
+ owner, path = if path.index( '@')
36
+ path.split( '@', 2 )
37
+ else
38
+ ['openfootball', path ]
39
+ end
40
+ name, path = path.split( '/', 2 )
41
+
42
+
43
+ ## openfootball@europe/france
44
+ ## =>
45
+ ## owner: openfootball
46
+ ## name: europe
47
+ ## path: france
48
+ ##
49
+ ## openfootball@austria
50
+ ## =>
51
+ ## owner: openfootball
52
+ ## name: austria
53
+ ## path: nil
54
+ @table[ rec['key'] ] = { 'owner' => owner, ## (required)
55
+ 'name' => name, ## (required)
56
+ 'path' => path ## extra/inner/inside/local path (optional)
57
+ }
58
+ end
59
+ end
60
+
61
+
62
+ ##
63
+ ## todo/fix:
64
+ ## make key lookup more flexible
65
+ ## auto-add more variants!!!
66
+ ## e.g. at.1 AT1, AT or such
67
+ ##
68
+
69
+ ## find (full) record by key
70
+ def find( key )
71
+ key = key.to_s.downcase
72
+
73
+ ## first check for 1:1 match
74
+ rec = @table[key]
75
+ if rec.nil?
76
+ ## try match by (country / first) code
77
+ ## split by .
78
+ key, _ = key.split( '.' )
79
+ rec = @table[key]
80
+ end
81
+
82
+ rec
83
+ end
84
+ alias_method :[], :find ## keep alias - why? why not?
85
+
86
+
87
+ def find_repo( key )
88
+ rec = _find( key )
89
+
90
+ rec ? "#{rec['owner']}/#{rec['name']}" : nil
91
+ end
92
+
93
+ end # class GitHubConfig
94
+ end # module Fbgen
95
+
96
+
97
+