football_cli 0.0.6 → 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.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.ruby-version +1 -1
- data/Gemfile +2 -1
- data/Gemfile.lock +14 -2
- data/README.md +1 -1
- data/bin/football_cli +9 -3
- data/football_cli.gemspec +5 -4
- data/lib/football_cli/cli.rb +11 -13
- data/lib/football_cli/config.rb +9 -0
- data/lib/football_cli/configuration.rb +47 -0
- data/lib/football_cli/handler.rb +9 -1
- data/lib/football_cli/runner.rb +47 -0
- data/lib/football_cli/version.rb +1 -1
- data/lib/football_cli.rb +5 -1
- metadata +20 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60746f91d740220139bb1a16b12689bb35f00ed9
|
4
|
+
data.tar.gz: 983ccaa2ff3c5cd5b831e47d79d13082ac4f85b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a71c97c95680115d4f951a482aeca9085ed03b6f8a449cb499f2e94501945d8eb5cda26060476da8b2aa6d59a075242e7641112aabd422695febec6650c7e5cd
|
7
|
+
data.tar.gz: ddd3331f6cef62daa3e1835dc1df1f8f8ffc9cc9a594d6d60ff91c6d87d3ab0bc303ce5c6de8318108c6f771638e55ce3e166c9fa186d2f4c8e019830ff971a3
|
data/.gitignore
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
tmp
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.0@football_cli
|
1
|
+
2.3.0@football_cli
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
football_cli (0.0
|
4
|
+
football_cli (1.0.0)
|
5
5
|
football_ruby
|
6
6
|
rainbow
|
7
|
+
terminal-table
|
7
8
|
thor
|
8
9
|
|
9
10
|
GEM
|
10
11
|
remote: https://rubygems.org/
|
11
12
|
specs:
|
13
|
+
addressable (2.5.1)
|
14
|
+
public_suffix (~> 2.0, >= 2.0.2)
|
12
15
|
aruba (0.14.2)
|
13
16
|
childprocess (~> 0.5.6)
|
14
17
|
contracts (~> 0.9)
|
@@ -20,6 +23,8 @@ GEM
|
|
20
23
|
childprocess (0.5.9)
|
21
24
|
ffi (~> 1.0, >= 1.0.11)
|
22
25
|
contracts (0.16.0)
|
26
|
+
crack (0.4.3)
|
27
|
+
safe_yaml (~> 1.0.0)
|
23
28
|
cucumber (2.4.0)
|
24
29
|
builder (>= 2.1.2)
|
25
30
|
cucumber-core (~> 1.5.0)
|
@@ -35,8 +40,10 @@ GEM
|
|
35
40
|
ffi (1.9.18)
|
36
41
|
football_ruby (0.1.2)
|
37
42
|
gherkin (4.1.3)
|
43
|
+
hashdiff (0.3.4)
|
38
44
|
multi_json (1.12.1)
|
39
45
|
multi_test (0.1.2)
|
46
|
+
public_suffix (2.0.5)
|
40
47
|
rainbow (2.2.2)
|
41
48
|
rake
|
42
49
|
rake (12.0.0)
|
@@ -44,10 +51,15 @@ GEM
|
|
44
51
|
diff-lcs (>= 1.2.0, < 2.0)
|
45
52
|
rspec-support (~> 3.6.0)
|
46
53
|
rspec-support (3.6.0)
|
54
|
+
safe_yaml (1.0.4)
|
47
55
|
terminal-table (1.8.0)
|
48
56
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
49
57
|
thor (0.19.4)
|
50
58
|
unicode-display_width (1.2.1)
|
59
|
+
webmock (3.0.1)
|
60
|
+
addressable (>= 2.3.6)
|
61
|
+
crack (>= 0.3.2)
|
62
|
+
hashdiff
|
51
63
|
|
52
64
|
PLATFORMS
|
53
65
|
ruby
|
@@ -56,7 +68,7 @@ DEPENDENCIES
|
|
56
68
|
aruba
|
57
69
|
football_cli!
|
58
70
|
rake
|
59
|
-
|
71
|
+
webmock
|
60
72
|
|
61
73
|
BUNDLED WITH
|
62
74
|
1.14.6
|
data/README.md
CHANGED
data/bin/football_cli
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
1
|
+
#!/usr/bin/env ruby -U
|
2
|
+
|
3
|
+
Signal.trap('INT') { abort }
|
4
|
+
|
5
|
+
lib = File.expand_path('../../lib', __FILE__)
|
6
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
7
|
+
|
8
|
+
require 'football_cli/runner'
|
9
|
+
FootballCli::Runner.new(ARGV.dup).execute!
|
3
10
|
|
4
|
-
FootballCli::CLI.start( ARGV )
|
data/football_cli.gemspec
CHANGED
@@ -22,11 +22,12 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables << 'football_cli'
|
23
23
|
spec.require_paths = ['lib']
|
24
24
|
|
25
|
-
spec.
|
26
|
-
spec.
|
27
|
-
spec.
|
25
|
+
spec.add_runtime_dependency 'thor'
|
26
|
+
spec.add_runtime_dependency 'football_ruby'
|
27
|
+
spec.add_runtime_dependency 'rainbow'
|
28
|
+
spec.add_runtime_dependency 'terminal-table'
|
28
29
|
|
29
30
|
spec.add_development_dependency 'rake'
|
30
31
|
spec.add_development_dependency 'aruba'
|
31
|
-
spec.add_development_dependency '
|
32
|
+
spec.add_development_dependency 'webmock'
|
32
33
|
end
|
data/lib/football_cli/cli.rb
CHANGED
@@ -1,24 +1,22 @@
|
|
1
|
-
require 'thor'
|
2
|
-
require_relative 'handler'
|
3
|
-
|
4
1
|
module FootballCli
|
5
2
|
class CLI < Thor
|
6
|
-
desc '
|
7
|
-
|
8
|
-
option :league
|
9
|
-
option :match_day, type: :numeric
|
10
|
-
option :format
|
11
|
-
option :file
|
3
|
+
desc 'config SUBCOMMAND ...ARGS', 'Write options in the configuration file'
|
4
|
+
subcommand 'config', Config
|
12
5
|
|
13
|
-
|
14
|
-
|
15
|
-
|
6
|
+
desc 'show', 'Display all the football data feeds'
|
7
|
+
option :league, aliases: '-l', banner: 'PD', desc: 'Current standing of league'
|
8
|
+
option :match_day, type: :numeric, aliases: '-d', banner: 5, desc: 'Current standing of league for a given day'
|
9
|
+
option :format, aliases: '-t', banner: 'json', desc: 'Output format type, default: table'
|
10
|
+
option :file, aliases: '-f', banner: 'players.json', desc: 'File name to save the output'
|
11
|
+
option :team, aliases: '-t', banner: 'FCB', desc: 'Team details, players or fixtures'
|
12
|
+
class_option :players, type: :boolean, aliases: '-p'
|
13
|
+
class_option :fixtures, type: :boolean, aliases: '-f'
|
16
14
|
|
17
15
|
def show
|
18
16
|
handler.run
|
19
17
|
end
|
20
18
|
|
21
|
-
desc 'live', '
|
19
|
+
desc 'live', 'Display live scores'
|
22
20
|
def live
|
23
21
|
handler.live_scores
|
24
22
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module FootballCli
|
4
|
+
module Configuration
|
5
|
+
CONFIG_FILE = '.football_cli.yml'
|
6
|
+
CONFIG_CONTENTS = {
|
7
|
+
api_token: '',
|
8
|
+
}
|
9
|
+
|
10
|
+
def self.write(value, key, options)
|
11
|
+
create_config_file unless File.exist? config_file
|
12
|
+
update_value(value, key) && return if options['update'] && !send(key).empty?
|
13
|
+
|
14
|
+
if send(key).empty?
|
15
|
+
puts "Updating config file with #{key}: #{value}"
|
16
|
+
update_value(value, key)
|
17
|
+
else
|
18
|
+
puts "Do you want to overwrite #{key} provide --update option"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.update_value(value, key)
|
23
|
+
content = config_data
|
24
|
+
content.send(:[]=, key, value)
|
25
|
+
|
26
|
+
File.open(config_file, 'w') do |f|
|
27
|
+
f.write(content.to_yaml)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.create_config_file
|
32
|
+
File.open(config_file, 'w+') { |f| f.write(CONFIG_CONTENTS.to_yaml) }
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.api_token
|
36
|
+
config_data[:api_token] if config_data
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.config_file
|
40
|
+
File.join(ENV['HOME'], CONFIG_FILE)
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.config_data
|
44
|
+
YAML::load_file(config_file) if File.exist? config_file
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/football_cli/handler.rb
CHANGED
@@ -20,6 +20,8 @@ module FootballCli
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def run
|
23
|
+
check_for_api_token
|
24
|
+
|
23
25
|
if league
|
24
26
|
league_table
|
25
27
|
elsif team
|
@@ -58,7 +60,7 @@ module FootballCli
|
|
58
60
|
team_response = client.team(team_id)
|
59
61
|
|
60
62
|
output(
|
61
|
-
title: "#{team_response[:name]}
|
63
|
+
title: "#{team_response[:name]} fixtures. Total #{response[:count]}",
|
62
64
|
response: response[:fixtures],
|
63
65
|
columns: %i(matchday homeTeamName goalsHomeTeam goalsAwayTeam awayTeamName status date)
|
64
66
|
)
|
@@ -104,7 +106,13 @@ module FootballCli
|
|
104
106
|
end
|
105
107
|
|
106
108
|
def client
|
109
|
+
FootballRuby.api_token = Configuration.api_token
|
110
|
+
|
107
111
|
@client ||= FootballRuby::Client.new
|
108
112
|
end
|
113
|
+
|
114
|
+
def check_for_api_token
|
115
|
+
raise Thor::Error ,"ERROR: You must config the api_token\nSOLUTION: Set up with `config api_token TOKEN`" if Configuration.api_token.to_s.empty?
|
116
|
+
end
|
109
117
|
end
|
110
118
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'football_cli'
|
2
|
+
|
3
|
+
# to use Webmock we need the Runner class
|
4
|
+
# https://github.com/cucumber/aruba#testing-ruby-cli-programs-without-spawning-a-new-ruby-process
|
5
|
+
module FootballCli
|
6
|
+
class Runner
|
7
|
+
def initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel)
|
8
|
+
@argv = argv
|
9
|
+
@stdin = stdin
|
10
|
+
@stdout = stdout
|
11
|
+
@stderr = stderr
|
12
|
+
@kernel = kernel
|
13
|
+
end
|
14
|
+
|
15
|
+
def execute!
|
16
|
+
exit_code = run_cli
|
17
|
+
@kernel.exit(exit_code)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def run_cli
|
23
|
+
exit_code = begin
|
24
|
+
$stderr = @stderr
|
25
|
+
$stdin = @stdin
|
26
|
+
$stdout = @stdout
|
27
|
+
|
28
|
+
FootballCli::CLI.start(@argv)
|
29
|
+
|
30
|
+
0
|
31
|
+
rescue StandardError => e
|
32
|
+
b = e.backtrace
|
33
|
+
@stderr.puts("#{b.shift}: #{e.message} (#{e.class})")
|
34
|
+
@stderr.puts(b.map { |s| "\tfrom #{s}" }.join("\n"))
|
35
|
+
1
|
36
|
+
rescue SystemExit => e
|
37
|
+
e.status
|
38
|
+
ensure
|
39
|
+
$stderr = STDERR
|
40
|
+
$stdin = STDIN
|
41
|
+
$stdout = STDOUT
|
42
|
+
end
|
43
|
+
|
44
|
+
@kernel.exit(exit_code)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/football_cli/version.rb
CHANGED
data/lib/football_cli.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: football_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Said Kaldybaev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: terminal-table
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,7 +95,7 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: webmock
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - ">="
|
@@ -114,6 +128,8 @@ files:
|
|
114
128
|
- football_cli.gemspec
|
115
129
|
- lib/football_cli.rb
|
116
130
|
- lib/football_cli/cli.rb
|
131
|
+
- lib/football_cli/config.rb
|
132
|
+
- lib/football_cli/configuration.rb
|
117
133
|
- lib/football_cli/format/base.rb
|
118
134
|
- lib/football_cli/format/csv.rb
|
119
135
|
- lib/football_cli/format/format_factory.rb
|
@@ -121,6 +137,7 @@ files:
|
|
121
137
|
- lib/football_cli/format/table.rb
|
122
138
|
- lib/football_cli/handler.rb
|
123
139
|
- lib/football_cli/mapper.rb
|
140
|
+
- lib/football_cli/runner.rb
|
124
141
|
- lib/football_cli/version.rb
|
125
142
|
homepage: https://github.com/Saidbek/football_cli
|
126
143
|
licenses:
|