safe_update 0.4.1 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bba79506d40fecac8ada14494ed6c4716cf0dd72
4
- data.tar.gz: 4634161fd299cf504d1e5e8e9335f5792955af82
3
+ metadata.gz: cc5887af06b7dd47ffbbfa102546032c04b822a7
4
+ data.tar.gz: 27f9c18a2fc9f3485a02eabac559c8b9ec7149f5
5
5
  SHA512:
6
- metadata.gz: 6333d5fa8b75759fdee92de16ff01644dbc016ef4b6a53b3e7d9914f80bdb8edbe91a211271c605fa3ae61b5f1c648ed94a173278327a75b3ec778237b93c6a0
7
- data.tar.gz: 748b56136a743b01c7f5510cbfe169d596173365f553416cff90d18a61f2b8609ca9344718c1734c76425568c2ee023bb9c079c3a0b27c27fce5ed11361f8e91
6
+ metadata.gz: c06118f30a3a9919588628501cd2a5dbe14757ab976ab37f8aefc2796bec79acc51d1bcdb0692e3a4dddf6e4b3ddd68b2fc4ad673b37e5cd50f5885d2ac22258
7
+ data.tar.gz: 9c118d22bf08459890d2a1662253f8dc07935772e70350a2a0db10eeb175101503089e0a95b6197f7627082c8b488a9a83081fbd2be08b0c2216cb234f02c42a
@@ -1,7 +1,9 @@
1
1
  require 'curses'
2
+ require 'colorize'
2
3
 
3
4
  module SafeUpdate
4
5
  class Presenter
6
+ include Curses
5
7
  # outdated_gems is an array of instances of SafeUpdate::OutdatedGem
6
8
 
7
9
  SPINNER_STATES = ['|', '/', '-', '\\']
@@ -9,6 +11,11 @@ module SafeUpdate
9
11
  def initialize
10
12
  Curses.noecho
11
13
  Curses.init_screen
14
+ Curses.start_color
15
+ Curses.init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_BLACK)
16
+ Curses.init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK)
17
+ Curses.init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_BLACK)
18
+ Curses.init_pair(COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK)
12
19
 
13
20
  @tick = 1
14
21
  @running = true
@@ -35,7 +42,13 @@ module SafeUpdate
35
42
  puts title
36
43
  puts header
37
44
  @outdated_gems.each do |outdated_gem|
38
- puts present_single_gem(outdated_gem)
45
+ line = present_single_gem(outdated_gem)
46
+ color = colorize_color(outdated_gem)
47
+ if color
48
+ puts line.send(color)
49
+ else
50
+ puts line
51
+ end
39
52
  end
40
53
  end
41
54
 
@@ -51,13 +64,20 @@ module SafeUpdate
51
64
  @outdated_gems.each_with_index do |outdated_gem, i|
52
65
  Curses.setpos(i + 2, 0)
53
66
  line = present_single_gem(outdated_gem)
54
- Curses.addstr(line)
67
+ color = curses_color(outdated_gem)
68
+ if color
69
+ Curses.attron(color_pair(color)|A_NORMAL){
70
+ Curses.addstr(line)
71
+ }
72
+ else
73
+ Curses.addstr(line)
74
+ end
55
75
  Curses.refresh
56
76
  end
57
77
  end
58
78
 
59
79
  def title
60
- '=> Updating your gems... safely ' + current_spinner_state
80
+ 'Updating your gems... Safely'
61
81
  end
62
82
 
63
83
  def current_spinner_state
@@ -91,5 +111,41 @@ module SafeUpdate
91
111
  def fixed_length_string(str, length)
92
112
  "%-#{length}.#{length}s" % str
93
113
  end
114
+
115
+ def curses_color(outdated_gem)
116
+ case outdated_gem.current_status
117
+ when OutdatedGem::STATUS_TESTS_FAIL
118
+ return COLOR_RED
119
+ when OutdatedGem::STATUS_UPDATING,
120
+ OutdatedGem::STATUS_TESTING
121
+ return COLOR_YELLOW
122
+ when OutdatedGem::STATUS_UPDATED
123
+ return COLOR_GREEN
124
+ when OutdatedGem::STATUS_UNCHANGED
125
+ return COLOR_BLUE
126
+ when OutdatedGem::STATUS_PENDING
127
+ return nil # render in default color
128
+ else
129
+ return nil
130
+ end
131
+ end
132
+
133
+ def colorize_color(outdated_gem)
134
+ case outdated_gem.current_status
135
+ when OutdatedGem::STATUS_TESTS_FAIL
136
+ return :red
137
+ when OutdatedGem::STATUS_UPDATING,
138
+ OutdatedGem::STATUS_TESTING
139
+ return :yellow
140
+ when OutdatedGem::STATUS_UPDATED
141
+ return :green
142
+ when OutdatedGem::STATUS_UNCHANGED
143
+ return :blue
144
+ when OutdatedGem::STATUS_PENDING
145
+ return nil # render in default color
146
+ else
147
+ return nil
148
+ end
149
+ end
94
150
  end
95
151
  end
@@ -1,3 +1,3 @@
1
1
  module SafeUpdate
2
- VERSION = '0.4.1'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rspec", "~> 3.0"
24
24
 
25
25
  spec.add_runtime_dependency 'curses', '~> 1.0.1'
26
+ spec.add_runtime_dependency 'colorize'
26
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safe_update
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Paling
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-19 00:00:00.000000000 Z
11
+ date: 2016-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.0.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: colorize
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description:
70
84
  email:
71
85
  - joshua.paling@gmail.com