winds-up-client 0.0.3 → 0.0.4

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: 0c977484ed6f2ffb3fe271108f767cbdd0d8a63167f7f04b2fe70ba8db98e51e
4
- data.tar.gz: f58fe88b996714cdbdd813f5f9e3f043373b32209f1f2ad8a50e1023096b3617
3
+ metadata.gz: 1c01dc1d45a5392f80552857adfb4f08ed4e814678005968cf74f3a7d995c9a2
4
+ data.tar.gz: 5f6897b47dc90b1c316c45cf954470d0e8a21ee69ad68cf253cb1a49279378d1
5
5
  SHA512:
6
- metadata.gz: 4e6701714d7b10e93c0ef6448efdee550380817049a1de046575d9c9498b1954427e604579bf661f440f98a39c3f9eedeea7c8d50348ca2b3cd8c614e4a617a3
7
- data.tar.gz: 9fbd86523722140574345da7ffdea4a4bb1258bcbdf79c4b08bee3d62ed16de3429bd4f4ca0af62f46658f1cc21306405170f84224b07ccc63af86c72e9a4097
6
+ metadata.gz: e99af979e3c415a7589bb31aa7bec8e71f0bf6d930fa5c0bed84529d6a39d627ff69caa68318ed6bc8e9e956b6b8582d2447e082fa4e3d30e93757e72adddf22
7
+ data.tar.gz: 9736db772e497a813793f156d7793ef1136e3c101bd49cb1665c4347b390b56a5145bfbd1aab77b9019bd52ac5e6524b53cf70b2dd990a7ac049f4112c4748da
data/bin/winds-up-client CHANGED
@@ -2,8 +2,11 @@
2
2
  require 'winds-up-client'
3
3
  require 'trollop'
4
4
  WindsUpClient.new(Trollop::options do
5
- opt :short
6
- opt :lpass
7
- opt :user, "user", :type => :string
8
- opt :password, "password", :type => :string
5
+ opt :short, "short mode"
6
+ opt :lpass, "use lastpass-cli to retrieve credentials"
7
+ opt :user, "user", type: :string
8
+ opt :password, "password", type: :string
9
+ opt :sampling, "sampling factor for graphs", default: 2
10
+ opt :spot, "spot name", type: :string, default: nil
11
+ opt :nocolor, "no color"
9
12
  end).display_favorite_spots
@@ -2,7 +2,22 @@
2
2
  require 'mechanize'
3
3
  require 'date'
4
4
  require 'json'
5
- require 'terminal-table'
5
+ require 'paint'
6
+
7
+ class TerminalTable
8
+
9
+ def initialize attributes
10
+ @rows = attributes[:rows]
11
+ end
12
+
13
+ def to_s
14
+ return "" if @rows.size == 0
15
+ widths = @rows.reduce(@rows[0].size.times.to_a.map { 0 } ) { |memo, row| memo.each_with_index.map { |item, i| [row.size > i ? row[i].size : 0, item].max } }
16
+ @rows.map do |row|
17
+ row.each_with_index.map { |item, i| "#{item}#{" " * (widths[i] - item.size)}" }.join(" ")
18
+ end.join("\n")
19
+ end
20
+ end
6
21
 
7
22
  class WindsUpClient
8
23
 
@@ -41,22 +56,41 @@ class WindsUpClient
41
56
  spots = page.search("div.mt3").reverse.map { |spot| parse_spot spot }
42
57
  end
43
58
 
59
+ def bar size, alternate, bg
60
+ if !@options[:nocolor]
61
+ Paint[(" " * size), nil, bg]
62
+ else
63
+ alternate * size
64
+ end
65
+ end
66
+
67
+ def low size
68
+ bar size, "=", :blue
69
+ end
70
+
71
+ def high size
72
+ bar size, "-", :green
73
+ end
74
+
75
+ def expected size
76
+ bar size, "*", :yellow
77
+ end
78
+
44
79
  def series_handlers
45
80
  {
46
- actual: (-> (x) {"#{"=" * x["low"]}#{"-" * (x["high"] - x["low"])} #{(x["high"] + x["low"])/2}"}),
47
- expected: (-> (x) {"#{ "*" * x["y"]} #{x["y"]} #{x["o"]}"})
81
+ actual: (-> (x) {"#{low(x["low"])}#{high(x["high"] - x["low"])} #{(x["high"] + x["low"])/2}"}),
82
+ expected: (-> (x) {"#{ expected(x["y"])} #{x["y"]} #{x["o"]}"})
48
83
  }
49
84
  end
50
85
 
51
86
  def spot_row spot
52
87
  title = [spot[:title], spot[:wind]]
53
88
  i = 0
54
- sampling = 2
55
89
  rows = []
56
90
  rows << title
57
91
  series_handlers.each do |kind, handler|
58
92
  spot[:series][kind].each do |value|
59
- rows << [Time.at(value["x"] / 1000).to_datetime.to_s.gsub(/\+.*/, ""), handler.call(value)] if i % sampling == 0
93
+ rows << [Time.at(value["x"] / 1000).to_datetime.to_s.gsub(/\+.*/, ""), handler.call(value)] if i % @options[:sampling] == 0
60
94
  i += 1
61
95
  end
62
96
  end
@@ -77,16 +111,18 @@ class WindsUpClient
77
111
  spots = favorites_spots
78
112
  previous_rows = []
79
113
  spots.each_with_index do |spot, i|
80
- if @options[:short]
81
- puts "#{spot[:title]}: #{spot[:wind]}"
82
- else
83
- rows = spot_row spot
84
- if i % 2 == 1
85
- puts Terminal::Table.new :rows => join_rows(previous_rows, rows)
86
- end
87
- previous_rows = rows
88
- end
114
+ if @options[:spot].nil? or spot[:title].downcase.include?(@options[:spot])
115
+ if @options[:short]
116
+ puts "#{spot[:title]}: #{spot[:wind]}"
117
+ else
118
+ rows = spot_row spot
119
+ if i % 2 == 1
120
+ puts TerminalTable.new :rows => join_rows(previous_rows, rows)
121
+ end
122
+ previous_rows = rows
123
+ end
124
+ end
89
125
  end
90
- puts Terminal::Table.new :rows => previous_rows if spots.size % 2 == 1 and !@options[:short]
126
+ puts TerminalTable.new :rows => previous_rows if spots.size % 2 == 1 and !@options[:short]
91
127
  end
92
128
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: winds-up-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olivier Abdesselam
@@ -53,33 +53,33 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.1'
55
55
  - !ruby/object:Gem::Dependency
56
- name: terminal-table
56
+ name: trollop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.8'
61
+ version: '2.1'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.8'
68
+ version: '2.1'
69
69
  - !ruby/object:Gem::Dependency
70
- name: trollop
70
+ name: paint
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '2.1'
75
+ version: '2.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '2.1'
82
+ version: '2.0'
83
83
  description: Allows to access winds-up.com on the CLI
84
84
  email:
85
85
  executables: