football_cli 0.0.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|