sportdb-writers 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c36ed17ae02ff9398179ca95187a072f69aa7de8f610986cf2a69592cbccaf69
4
- data.tar.gz: f06bed189b4a25049541e2e4a0d25dd3cb26df3b76b989c6839c5b512bf37d41
3
+ metadata.gz: 10b19eac6f6a70a144de7201b0b72f60628e169e91ca51880cfde5bcc6b52690
4
+ data.tar.gz: 371f70efc9ffb6fd2ce77eb8087acfbdda68b2ced50019a3fd85ce9582331104
5
5
  SHA512:
6
- metadata.gz: 960adee4eea590e6ae820a336775a051a2c170a55af32add89dfcf4e8bf44ae8f96ec678ff021be89d6e0a065d7f32b91c1526631078f7311a9352789100c1c8
7
- data.tar.gz: 2781130d839a11d5bc1c30ae25a3573d56715fa21eb39eae69018f7251e8ae5d5e5e9fdbc7a3866b951800a289d055543cd91fe06d8071371a1c1679e448b4cf
6
+ metadata.gz: 69d5f4ce4d13bdb73c3b5a96fd92583f043c15fecaa2209ffa81c56c4204adfb3d042b25edfd28e19c8cf89461d01f5847d563819841d8fb810d1673de15784b
7
+ data.tar.gz: cfb92a600bafc109e13f12bf8d513be4ce3003b358aef32581a9880719a47644d9308d129c8e808c39a1678d065789cfc0ed2bd4a3f57f5f8f0c00691ddb11f5
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ### 0.2.1
1
+ ### 0.3.0
2
2
 
3
3
  ### 0.0.1 / 2020-11-15
4
4
 
data/Manifest.txt CHANGED
@@ -4,16 +4,11 @@ README.md
4
4
  Rakefile
5
5
  bin/fbgen
6
6
  bin/fbtxt
7
- bin/fbup
8
7
  config/leagues_america.csv
9
8
  config/leagues_europe.csv
10
9
  config/leagues_world.csv
11
- config/openfootball.csv
12
10
  lib/sportdb/fbgen/main.rb
13
11
  lib/sportdb/fbtxt/main.rb
14
- lib/sportdb/fbup/github.rb
15
- lib/sportdb/fbup/github_config.rb
16
- lib/sportdb/fbup/main.rb
17
12
  lib/sportdb/writers.rb
18
13
  lib/sportdb/writers/goals.rb
19
14
  lib/sportdb/writers/league_config.rb
data/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  * bugs :: [github.com/sportdb/sport.db/issues](https://github.com/sportdb/sport.db/issues)
5
5
  * gem :: [rubygems.org/gems/sportdb-writers](https://rubygems.org/gems/sportdb-writers)
6
6
  * rdoc :: [rubydoc.info/gems/sportdb-writers](http://rubydoc.info/gems/sportdb-writers)
7
- * forum :: [groups.google.com/group/opensport](https://groups.google.com/group/opensport)
8
7
 
9
8
 
10
9
 
data/Rakefile CHANGED
@@ -20,7 +20,6 @@ Hoe.spec 'sportdb-writers' do
20
20
  self.extra_deps = [
21
21
  ['football-timezones'],
22
22
  ['sportdb-quick'],
23
- ['gitti'],
24
23
  ]
25
24
 
26
25
  self.licenses = ['Public Domain']
@@ -1,13 +1,29 @@
1
1
  key, name, basename, start_season, end_season, comments
2
2
 
3
3
  ar.1, Argentina Primera Division, 1-primeradivision,,,
4
+
4
5
  br.1, Brasileiro Série A, 1-seriea,,,
5
- br.2, Brasileiro Série B, 1-serieb,,,
6
+ br.2, Brasileiro Série B, 2-serieb,,,
7
+ br.3, Brasileiro Série C, 3-seriec,,,
8
+ br.4, Brasileiro Série D, 4-seried,,,
9
+ br.cup, Copa do Brasil, cup,,,
10
+
11
+ br.carioca, Campeonato Carioca, carioca,,,
12
+ br.gauchao, Campeonato Gaúcho, gauchao,,,
13
+ br.mineiro, Campeonato Mineiro, mineiro,,,
14
+ br.paranaense, Campeonato Paranaense, paranaense,,,
15
+ br.paulistao, Campeonato Paulista, paulistao,,,
16
+
17
+ co.1, Colombia Primera A, 1-primeraa,,,
18
+
6
19
 
7
- mx.1, Liga MX, 1-ligamx,,, ## note: basename gets overwritten by stages e.g. 1-apertura or 1-clausura
20
+ copa.l, Copa Libertadores, libertadores,,,
21
+ copa.s, Copa Sudamericana, sudamericana,,,
22
+
23
+
24
+ mx.1, Liga MX, 1-ligamx,,,
8
25
  mx.2, Liga de Expansión MX, 2-ligaexpansionmx, 2020/21,,
9
26
  mx.2, Ascenso MX, 2-ascensomx, ,2019/20,
10
27
 
11
28
 
12
- copa.l, Copa Libertadores, libertadores,,,
13
29
 
@@ -3,7 +3,8 @@ key, name, basename, start_season, end_season, co
3
3
  at.1, Österr. Bundesliga, 1-bundesliga,,,
4
4
  at.2, Österr. 2. Liga, 2-liga2, 2018/19,,
5
5
  at.2, Österr. Erste Liga, 2-liga1, , 2017/18,
6
- at.3.o, Österr. Regionalliga Ost, 3-regionalliga-ost,,,
6
+ at.3.o, Österr. Regionalliga Ost, 3-regionalliga-ost,,,
7
+ at.3.m, Österr. Regionalliga Mitte, 3-regionalliga-mitte,,,
7
8
  at.cup, ÖFB Cup, cup,,,
8
9
 
9
10
 
@@ -21,27 +22,44 @@ de.cup, DFB Pokal, cup,,,
21
22
 
22
23
  it.1, Italian Serie A, 1-seriea,,,
23
24
  it.2, Italian Serie B, 2-serieb,,,
25
+ it.cup, Coppa Italia, cup,,,
26
+
24
27
 
25
28
  es.1, Primera División de España, 1-liga,,,
26
29
  es.2, Segunda División de España, 2-liga2,,,
30
+ es.cup, Copa del Rey de España, cup,,,
31
+
27
32
 
28
33
  fr.1, French Ligue 1, 1-ligue1,,,
29
34
  fr.2, French Ligue 2, 2-ligue2,,,
30
35
 
31
36
 
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)
37
+ ##
38
+ ## note - starting with the 2004/05 season
39
+ # the Football League's Division 1, Division 2 and Division 3
40
+ ## changed to Championship, League One and League Two.
35
41
 
36
42
  eng.2, English Championship, 2-championship, 2004/05,, ## rebranding divsion 1 => championship
43
+ eng.3, English League One, 3-league1, 2004/05,,
44
+ eng.4, English League Two, 4-league2, 2004/05,,
45
+
46
+ eng.1, English Premier League, 1-premierleague, 1992/93,,
37
47
  eng.2, English Division One, 2-division1, 1992/93, 2003/04, ## start of premier league
48
+ eng.3, English Division Two, 3-division2, 1992/93, 2003/04,
49
+ eng.4, English Division Three, 4-division3, 1992/93, 2003/04,
50
+ eng.5, English National League, 5-nationalleague, 1992/93,,
51
+
52
+ eng.1, English Division One, 1-division1, 1892/93, 1991/92, ## start of division 1 & 2
38
53
  eng.2, English Division Two, 2-division2, 1892/93, 1991/92, ## or use English Football League Second Division ???
54
+ eng.3, English Division Three, 3-division3, , 1991/92,
55
+
56
+ eng.1, English Football League, 1-footballleague, 1888/89, 1891/92, ## single league (no divisions)
57
+
39
58
 
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
59
  eng.cup, English FA Cup, facup,,,
44
60
 
61
+ wal.1, Welsh Premier League, 1-premierleague,,,
62
+ nir.1, Northern Irish Premiership, 1-premiership,,,
45
63
 
46
64
  hu.1, Hungarian NB I, 1-nbi,,,
47
65
 
@@ -91,14 +109,52 @@ ua.1, Ukraine Premier League, 1-premierleague,,,
91
109
  ru.1, Russian Premier League, 1-premierliga,,,
92
110
  ru.2, Russian 1. Division, 2-division1,,,
93
111
 
112
+ by.1, Belarusian Premier League, 1-premierleague,,,
113
+
114
+ al.1, Albanian Super League, 1-superleague,,,
115
+ ad.1, Andorran Premier Division, 1-premierdisvision,,,
116
+
117
+ ba.1, Bosnian-Herzegovinian Premier League, 1-premierleague,,,
118
+ bg.1, Bulgarian A League, 1-aleague,,,
119
+
120
+ cy.1, Cypriot First Division, 1-firstdivision,,,
121
+
122
+ ee.1, Estonian First League, 1-firstleague,,,
123
+ lv.1, Latvian First Division, 1-firstdivision,,,
124
+ lt.1, Lithuanian First Division, 1-firstdivision,,,
125
+
126
+ li.cup, Liechtensteiner Cup, cup,,,
127
+
128
+ mk.1, Macedonian First League, 1-firstleague,,,
129
+ mt.1, Macedonian First League, 1-firstleague,,,
130
+ md.1, Moldovan First Division, 1-firstdivision,,,
131
+ me.1, Montenegrin First League, 1-firstleague,,,
132
+
133
+ sm.1, San Marinese Championship, 1-championship,,,
134
+ rs.1, Serbian Super League, 1-superleague,,,
135
+ si.1, Slovene First League, 1-firstleague,,,
136
+
137
+ kos.1, Kosovan Superliga, 1-superliga,,,
138
+ xk.1, Kosovan Superliga, 1-superliga,,,
139
+
140
+ am.1, Armenian Premier League, 1-premierleague,,,
141
+ az.1, Azerbaijani Premier League, 1-premierleague,,,
142
+ ge.1, Georgian Premier League, 1-premierleague,,,
143
+
144
+ fo.1, Faroese Premier Division, 1-premierdivision,,,
145
+ gi.1, Gibraltarian Premier League, 1-premierleague,,,
146
+
94
147
 
95
148
 
96
149
  ## use uefa.1 - why? why not?
97
150
  ## uefa.2,
98
151
  ## uefa.3
99
152
  uefa.cl, UEFA Champions League, cl,,, ### use champs or such?
100
- uefa.el, UEFA Europa League, el,,, ### use europa
153
+ uefa.champs, UEFA Champions League, champs,,,
154
+ uefa.el, UEFA Europa League, el,,, ### use europa?
155
+ uefa.europa, UEFA Europa League, europa,,,
101
156
  uefa.conf, UEFA Conference League, conf,,, ### use con (conf - confusion with config files?)
157
+ uefa.con, UEFA Conference League, con,,,
102
158
 
103
159
  uefa.nl, UEFA Nations League, nl,,,
104
160
  euro, Euro, euro,,,
@@ -5,4 +5,19 @@ jp.1, Japan J1 League, 1-j1league,,,
5
5
 
6
6
 
7
7
 
8
- world, World Cup, cup,,,
8
+ kz.1, Kazakh Premier League, 1-premierleague,,,
9
+
10
+
11
+ il.1, Israeli Premier League, 1-premierleague,,,
12
+
13
+
14
+ eg.1, Egypt Premiership, 1-premiership,,,
15
+ ma.1, Morocco Botola Pro 1, 1-botolapro1,,,
16
+ dz.1, Algeria Ligue 1, 1-ligue1,,,
17
+
18
+ afl, African Football League, afl,,,
19
+ caf.cl, CAF Champions League, cl,,,
20
+ caf.champs, CAF Champions League, champs,,, ## use alternate code - why? why not?
21
+
22
+
23
+ world, World Cup, cup,,,
@@ -14,11 +14,11 @@ parser = OptionParser.new do |parser|
14
14
 
15
15
  parser.on( "--dry",
16
16
  "dry run; do NOT write - default is (#{opts[:dry]})" ) do |dry|
17
- opts[:dry] = dry
17
+ opts[:dry] = true
18
18
  end
19
19
  parser.on( "-q", "--quiet",
20
20
  "less debug output/messages - default is (#{!opts[:debug]})" ) do |debug|
21
- opts[:debug] = !debug
21
+ opts[:debug] = false
22
22
  end
23
23
 
24
24
  parser.on( "-I DIR", "--include DIR",
@@ -3,8 +3,8 @@ module SportDb
3
3
  module Module
4
4
  module Writers
5
5
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
6
- MINOR = 2
7
- PATCH = 1
6
+ MINOR = 3
7
+ PATCH = 0
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
@@ -56,83 +56,5 @@ require_relative 'fbgen/main'
56
56
 
57
57
 
58
58
 
59
- ########################
60
- # push & pull github scripts
61
- require 'gitti' ## note - requires git machinery
62
-
63
- require_relative 'fbup/github_config'
64
- require_relative 'fbup/github' ## github helpers/update machinery
65
-
66
-
67
- module Fbup
68
- class GitHubSync
69
- REPOS = GitHubConfig.new
70
- recs = read_csv( "#{SportDb::Module::Writers.root}/config/openfootball.csv" )
71
- REPOS.add( recs )
72
-
73
- ## todo/check: find a better name for helper?
74
- ## note: datasets of format
75
- ##
76
- ## DATASETS = [
77
- ## ['it.1', %w[2020/21 2019/20]],
78
- ## ['it.2', %w[2019/20]],
79
- ## ['es.1', %w[2019/20]],
80
- ## ['es.2', %w[2019/20]],
81
- ## ]
82
-
83
- def self.find_repos( datasets )
84
- repos = []
85
- datasets.each do |dataset|
86
- league_key = dataset[0]
87
- repo = REPOS[ league_key ]
88
- ## pp repo
89
- if repo.nil?
90
- puts "!! ERROR - no repo config/path found for league >#{league_key}<; sorry"
91
- exit 1
92
- end
93
-
94
- repos << "#{repo['owner']}/#{repo['name']}"
95
- end
96
-
97
- pp repos
98
- repos.uniq ## note: remove duplicates (e.g. europe or world or such)
99
- end
100
- end # class GitHubSync
101
- end # module Fbup
102
-
103
-
104
- require_relative 'fbup/main'
105
-
106
-
107
-
108
- ###
109
- ## todo/fix: move more code into tool class or such? - why? why not?
110
-
111
- ## todo/check: find a better name for helper?
112
- ## find_all_datasets, filter_datatsets - add alias(es???
113
- ## queries (lik ARGV) e.g. ['at'] or ['eng', 'de'] etc. list of strings
114
- def filter_datasets( datasets, queries=[] )
115
- ## find all matching leagues (that is, league keys)
116
- if queries.empty? ## no filter - get all league keys
117
- datasets
118
- else
119
- datasets.find_all do |dataset|
120
- found = false
121
- ## note: normalize league key (remove dot and downcase)
122
- league_key = dataset[0].gsub( '.', '' )
123
- queries.each do |query|
124
- q = query.gsub( '.', '' ).downcase
125
- if league_key.start_with?( q )
126
- found = true
127
- break
128
- end
129
- end
130
- found
131
- end
132
- end
133
- end
134
-
135
-
136
-
137
59
 
138
60
  puts SportDb::Module::Writers.banner # say hello
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sportdb-writers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-15 00:00:00.000000000 Z
11
+ date: 2024-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: football-timezones
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: gitti
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rdoc
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -92,7 +78,6 @@ email: gerald.bauer@gmail.com
92
78
  executables:
93
79
  - fbgen
94
80
  - fbtxt
95
- - fbup
96
81
  extensions: []
97
82
  extra_rdoc_files:
98
83
  - CHANGELOG.md
@@ -105,16 +90,11 @@ files:
105
90
  - Rakefile
106
91
  - bin/fbgen
107
92
  - bin/fbtxt
108
- - bin/fbup
109
93
  - config/leagues_america.csv
110
94
  - config/leagues_europe.csv
111
95
  - config/leagues_world.csv
112
- - config/openfootball.csv
113
96
  - lib/sportdb/fbgen/main.rb
114
97
  - lib/sportdb/fbtxt/main.rb
115
- - lib/sportdb/fbup/github.rb
116
- - lib/sportdb/fbup/github_config.rb
117
- - lib/sportdb/fbup/main.rb
118
98
  - lib/sportdb/writers.rb
119
99
  - lib/sportdb/writers/goals.rb
120
100
  - lib/sportdb/writers/league_config.rb
data/bin/fbup DELETED
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- ## tip: to test run:
4
- ## ruby -I ./lib bin/fbup
5
-
6
-
7
- require 'sportdb/writers'
8
-
9
-
10
- Fbup.main( ARGV )
11
-
12
-
13
- puts "bye"
@@ -1,66 +0,0 @@
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
- uefa.cl, europe-champions-league
46
- uefa.el, europe-champions-league
47
- uefa.conf, europe-champions-league
48
-
49
- euro, euro
50
-
51
-
52
-
53
- mx, mexico
54
-
55
- ar, south-america/argentina
56
- br, south-america/brazil
57
-
58
- copa.l, copa-libertadores
59
- copa.s, copa-libertadores
60
-
61
-
62
- cn, world/asia/china
63
- jp, world/asia/japan
64
-
65
-
66
- world, worldcup
@@ -1,83 +0,0 @@
1
-
2
- module Fbup
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 Fbup
@@ -1,97 +0,0 @@
1
-
2
- module Fbup
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 Fbup
95
-
96
-
97
-
@@ -1,159 +0,0 @@
1
-
2
- module Fbup
3
- def self.main( args=ARGV )
4
-
5
- opts = {
6
- source_path: [],
7
- push: false,
8
- ffwd: false,
9
- dry: false, ## dry run (no write)
10
- test: true, ## sets push & ffwd to false
11
- debug: true,
12
- file: nil,
13
- test_dir: './o',
14
- }
15
-
16
-
17
- parser = OptionParser.new do |parser|
18
- parser.banner = "Usage: #{$PROGRAM_NAME} [options] [args]"
19
-
20
- parser.on( "-p", "--[no-]push",
21
- "fast forward sync and commit & push changes to git repo - default is (#{opts[:push]})" ) do |push|
22
- opts[:push] = push
23
- opts[:fwd] = true if opts[:push] ## note: autoset ffwd too if push == true
24
- end
25
- ## todo/check - add a --ffwd flag too - why? why not?
26
-
27
- parser.on( "-t", "--test",
28
- "test run; writing output to #{opts[:test_dir]} - default is #{opts[:test]}" ) do |test|
29
- opts[:test] = test
30
- opts[:push] = false
31
- opts[:ffwd] = false
32
- end
33
- parser.on( "--dry",
34
- "dry run; do NOT write - default is (#{opts[:dry]})" ) do |dry|
35
- opts[:dry] = dry
36
- opts[:push] = false ### autoset push & ffwd - why? why not?
37
- opts[:ffwd] = false
38
- end
39
-
40
- parser.on( "-q", "--quiet",
41
- "less debug output/messages - default is (#{!opts[:debug]})" ) do |debug|
42
- opts[:debug] = !debug
43
- end
44
-
45
- parser.on( "-I DIR", "--include DIR",
46
- "add directory to (source) search path - default is (#{opts[:source_path].join(',')})") do |dir|
47
- opts[:source_path] += path
48
- end
49
-
50
- parser.on( "-f FILE", "--file FILE",
51
- "read leagues (and seasons) via .csv file") do |file|
52
- opts[:file] = file
53
- end
54
- end
55
- parser.parse!( args )
56
-
57
-
58
- if opts[:source_path].empty? &&
59
- File.exist?( '/sports/cache.api.fbdat') &&
60
- File.exist?( '/sports/cache.wfb' )
61
- opts[:source_path] << '/sports/cache.api.fbdat'
62
- opts[:source_path] << '/sports/cache.wfb'
63
- end
64
-
65
- if opts[:source_path].empty?
66
- opts[:source_path] = ['.'] ## use ./ as default
67
- end
68
-
69
-
70
-
71
- puts "OPTS:"
72
- p opts
73
- puts "ARGV:"
74
- p args
75
-
76
-
77
- datasets = if opts[:file]
78
- read_datasets( opts[:file] )
79
- else
80
- parse_datasets_args( args )
81
- end
82
-
83
- puts "datasets:"
84
- pp datasets
85
-
86
-
87
- source_path = opts[:source_path]
88
-
89
- root_dir = if opts[:test]
90
- opts[:test_dir]
91
- else
92
- GitHubSync.root # e.g. "/sports"
93
- end
94
-
95
- puts " (output) root_dir: >#{root_dir}<"
96
-
97
- repos = GitHubSync.find_repos( datasets )
98
- puts " #{repos.size} repo(s):"
99
- pp repos
100
- sync = GitHubSync.new( repos )
101
-
102
- puts " sync:"
103
- pp sync
104
-
105
-
106
- sync.git_fast_forward_if_clean if opts[:ffwd]
107
-
108
- ### step 0 - validate and fill-in seasons etc.
109
- ## reuse from Fbgen tool
110
- Fbgen.validate_datasets!( datasets, source_path: source_path )
111
-
112
-
113
- datasets.each do |league_key, seasons|
114
- puts "==> gen #{league_key} - #{seasons.size} seasons(s)..."
115
-
116
- league_info = Writer::LEAGUES[ league_key ]
117
- pp league_info
118
-
119
- seasons.each do |season|
120
- filename = "#{season.to_path}/#{league_key}.csv"
121
- path = Fbgen.find_file( filename, path: source_path )
122
-
123
- ### get matches
124
- puts " ---> reading matches in #{path} ..."
125
- matches = SportDb::CsvMatchParser.read( path )
126
- puts " #{matches.size} matches"
127
-
128
- ## build
129
- txt = SportDb::TxtMatchWriter.build( matches )
130
- puts txt if opts[:debug]
131
-
132
- league_name = league_info[ :name ] # e.g. Brasileiro Série A
133
- basename = league_info[ :basename] #.e.g 1-seriea
134
-
135
- league_name = league_name.call( season ) if league_name.is_a?( Proc ) ## is proc/func - name depends on season
136
- basename = basename.call( season ) if basename.is_a?( Proc ) ## is proc/func - name depends on season
137
-
138
- buf = String.new
139
- buf << "= #{league_name} #{season}\n\n"
140
- buf << txt
141
-
142
- repo = GitHubSync::REPOS[ league_key ]
143
- repo_path = "#{repo['owner']}/#{repo['name']}"
144
- repo_path << "/#{repo['path']}" if repo['path'] ## note: do NOT forget to add optional extra path!!!
145
-
146
- outpath = "#{root_dir}/#{repo_path}/#{season.to_path}/#{basename}.txt"
147
-
148
- if opts[:dry]
149
- puts " (dry) writing to >#{outpath}<..."
150
- else
151
- write_text( outpath, buf )
152
- end
153
- end
154
- end
155
-
156
- sync.git_push_if_changes if opts[:push]
157
-
158
- end # method self.main
159
- end # module Fbgen