fifadat-convert 0.0.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.
@@ -0,0 +1,184 @@
1
+
2
+
3
+ module Fifadat
4
+
5
+ def self.main( args=ARGV )
6
+
7
+
8
+ opts = {
9
+ season: nil,
10
+ file: nil,
11
+ force: false,
12
+ offline: false,
13
+ reports: true,
14
+
15
+ cache_dir: '/sports/cache.fifadat',
16
+ convert_dir: '/sports/cache.api.fifa',
17
+ }
18
+
19
+
20
+ parser = OptionParser.new do |parser|
21
+ parser.banner = "Usage: #{$PROGRAM_NAME} [options] NAME"
22
+ ## add options here
23
+ parser.on( "--season=SEASON",
24
+ "season" ) do |season|
25
+ opts[:season] = season
26
+ end
27
+
28
+
29
+ parser.on( "--cache", "--cached", "--offline",
30
+ "always (and only) use cached data in >#{opts[:cache_dir]}< - default is (#{opts[:offline]})" ) do |offline|
31
+ opts[:offline] = offline
32
+ end
33
+
34
+ parser.on( "--force",
35
+ "always (force) download fresh copy & overwrite - default is (#{opts[:force]})" ) do |force|
36
+ opts[:force] = force
37
+ end
38
+
39
+ parser.on( "--[no-]reports",
40
+ "incl. one-by-one (detailed) match reports - default is (#{opts[:reports]})" ) do |reports|
41
+ opts[:reports] = reports
42
+ end
43
+
44
+
45
+
46
+ parser.on( "-f FILE", "--file FILE",
47
+ "read leagues (and seasons) via .csv file") do |file|
48
+ opts[:file] = file
49
+ end
50
+
51
+
52
+
53
+ end
54
+ parser.parse!( args )
55
+
56
+
57
+ puts "OPTS:"
58
+ pp opts
59
+ puts "ARGV:"
60
+ pp args
61
+
62
+
63
+ cache_dir = opts[:cache_dir]
64
+ convert_dir = opts[:convert_dir]
65
+
66
+
67
+
68
+ if opts[:file]
69
+ recs = read_csv( opts[:file] )
70
+ else
71
+
72
+ ## otherwise
73
+ ## build rec(ord)s from scratch (from command-line args)
74
+ if args.size == 0
75
+ puts " NAME argument (plus season opt) required; use:"
76
+ Fifa::CODES.each do |code, h|
77
+ idCompetition = h[:idCompetition]
78
+ comp = Fifa::COMPETITIONS[idCompetition]
79
+ seasons = comp.values.map { |c| c[:season] }
80
+ puts " #{code} (#{seasons.size}) #{seasons.join(',')}"
81
+ end
82
+ exit 1
83
+ end
84
+
85
+
86
+ ##
87
+ ## note - all args other than first ignored for now; issue warn - why? why not?
88
+ rec = {}
89
+ rec['league'] = args[0].downcase
90
+ rec['seasons'] = Season.parse(opts[:season]).to_s
91
+ recs = [rec]
92
+ end
93
+
94
+ pp recs
95
+
96
+
97
+ ################
98
+ ## step 0) validate slugs & seasons
99
+ recs.each do |rec|
100
+ slug = rec['league']
101
+ seasons = Season.parse_line( rec['seasons'] )
102
+ seasons.each do |season|
103
+ pp Fifa._idSeason_by!( name: slug, season: season )
104
+ end
105
+ end
106
+
107
+
108
+ if opts[:offline] == false
109
+ ## step 1a) prepare
110
+ recs.each do |rec|
111
+ slug = rec['league']
112
+ seasons = Season.parse_line( rec['seasons'] )
113
+ seasons.each do |season|
114
+
115
+ prepare( name: slug,
116
+ season: season,
117
+ outdir: cache_dir,
118
+ force: opts[:force] ) ## note - autoadd slug (name) e..g ./eng !!
119
+
120
+ =begin
121
+ ###
122
+ ## add debug
123
+ page = String.new
124
+ page << "= #{slug} #{season}\n"
125
+ page << "# generated on #{Time.now}\n"
126
+ page << "\n"
127
+
128
+ buf = pp_debug( slug: slug, season: season,
129
+ indir: cache_dir )
130
+
131
+ page << buf
132
+ puts page
133
+
134
+ outpath = "#{convert_dir}/#{season.to_path}_#{slug}-debug.txt"
135
+
136
+ write_text( outpath, page )
137
+ puts " written to >#{outpath}<"
138
+ =end
139
+ end
140
+ end
141
+
142
+ if opts[:reports]
143
+ ## step 1b) prepare details
144
+ recs.each do |rec|
145
+ slug = rec['league']
146
+ seasons = Season.parse_line( rec['seasons'] )
147
+ seasons.each do |season|
148
+ ## match (reports) one-by-one
149
+ prepare_reports( name: slug,
150
+ season: season,
151
+ outdir: cache_dir, ## note - autoadd slug (name) e..g ./eng !!
152
+ force: opts[:force] )
153
+ end
154
+ end
155
+ end # if reports
156
+ end ## if online (offline==false)
157
+
158
+
159
+
160
+
161
+ ## step 2) convert
162
+ recs.each do |rec|
163
+ slug = rec['league']
164
+ seasons = Season.parse_line( rec['seasons'] )
165
+ seasons.each do |season|
166
+
167
+ convert( slug: slug, season: season,
168
+ indir: cache_dir,
169
+ outdir: convert_dir )
170
+
171
+
172
+ ## convert all match reports one-by-one
173
+ convert_reports( slug: slug, season: season,
174
+ indir: cache_dir,
175
+ outdir: convert_dir )
176
+ end
177
+ end
178
+
179
+ puts "bye"
180
+
181
+ end
182
+
183
+
184
+ end # module Fifadat
@@ -0,0 +1,22 @@
1
+
2
+ ##
3
+ ## change to/use nested module Convert - why? why not?
4
+
5
+ module FifadatConvert
6
+ MAJOR = 0 ## todo: namespace inside version or something - why? why not??
7
+ MINOR = 0
8
+ PATCH = 1
9
+ VERSION = [MAJOR,MINOR,PATCH].join('.')
10
+
11
+ def self.version
12
+ VERSION
13
+ end
14
+
15
+ def self.banner
16
+ "fifadat-convert/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}] in (#{root})"
17
+ end
18
+
19
+ def self.root
20
+ File.expand_path( File.dirname(File.dirname(File.dirname(File.dirname(__FILE__)))) )
21
+ end
22
+ end # module FifadatConvert
@@ -0,0 +1,37 @@
1
+
2
+ $LOAD_PATH.unshift( '/sports/yorobot/fifadat/fifadat/lib' )
3
+ require 'fifadat'
4
+
5
+
6
+ ## our own code
7
+ require_relative 'convert/version'
8
+ require_relative 'convert/tool' ## fifadat command-line tool
9
+
10
+
11
+ require_relative 'convert/norm'
12
+ require_relative 'convert/errata'
13
+
14
+ require_relative 'convert/stages'
15
+ require_relative 'convert/teams'
16
+ require_relative 'convert/stadiums'
17
+ require_relative 'convert/players'
18
+
19
+ require_relative 'convert/officials' ## aka referees
20
+ require_relative 'convert/goals'
21
+ require_relative 'convert/goals-calc_score'
22
+ require_relative 'convert/penalties'
23
+ require_relative 'convert/substitutions'
24
+
25
+
26
+ require_relative 'convert/build_match'
27
+ require_relative 'convert/build_report'
28
+ require_relative 'convert/convert'
29
+ require_relative 'convert/convert-reports'
30
+
31
+ require_relative 'convert/helper-date'
32
+ require_relative 'convert/helper-score'
33
+ require_relative 'convert/helper-minute'
34
+
35
+
36
+
37
+ puts FifadatConvert.banner ## say hello
@@ -0,0 +1,5 @@
1
+
2
+ ## lets you use require 'fifadat-convert'
3
+ ## as an alternative to require 'fifadat/convert'
4
+
5
+ require_relative 'fifadat/convert'
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fifadat-convert
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Gerald Bauer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-09-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fifadat
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rdoc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '7'
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '4.0'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '7'
47
+ - !ruby/object:Gem::Dependency
48
+ name: hoe
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '4.2'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '4.2'
61
+ description: fifadat-convert - convert fifa api json
62
+ email: gerald.bauer@gmail.com
63
+ executables:
64
+ - fifadat
65
+ extensions: []
66
+ extra_rdoc_files:
67
+ - CHANGELOG.md
68
+ - Manifest.txt
69
+ - README.md
70
+ files:
71
+ - CHANGELOG.md
72
+ - Manifest.txt
73
+ - README.md
74
+ - Rakefile
75
+ - bin/fifadat
76
+ - lib/fifadat/convert.rb
77
+ - lib/fifadat/convert/build_match.rb
78
+ - lib/fifadat/convert/build_report.rb
79
+ - lib/fifadat/convert/convert-reports.rb
80
+ - lib/fifadat/convert/convert.rb
81
+ - lib/fifadat/convert/errata.rb
82
+ - lib/fifadat/convert/goals-calc_score.rb
83
+ - lib/fifadat/convert/goals.rb
84
+ - lib/fifadat/convert/helper-date.rb
85
+ - lib/fifadat/convert/helper-minute.rb
86
+ - lib/fifadat/convert/helper-score.rb
87
+ - lib/fifadat/convert/norm.rb
88
+ - lib/fifadat/convert/officials.rb
89
+ - lib/fifadat/convert/penalties.rb
90
+ - lib/fifadat/convert/players.rb
91
+ - lib/fifadat/convert/stadiums.rb
92
+ - lib/fifadat/convert/stages.rb
93
+ - lib/fifadat/convert/substitutions.rb
94
+ - lib/fifadat/convert/teams.rb
95
+ - lib/fifadat/convert/tool.rb
96
+ - lib/fifadat/convert/version.rb
97
+ - lib/fifadata-convert.rb
98
+ homepage: https://github.com/sportdb/sport.db
99
+ licenses:
100
+ - Public Domain
101
+ metadata: {}
102
+ post_install_message:
103
+ rdoc_options:
104
+ - "--main"
105
+ - README.md
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 3.1.0
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ requirements: []
119
+ rubygems_version: 3.5.22
120
+ signing_key:
121
+ specification_version: 4
122
+ summary: fifadat-convert - convert fifa api json
123
+ test_files: []