freshen 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: d3e573f6d6b66152c1bf8aedd14b40d68ddd70e8
4
- data.tar.gz: 946f32367ea70dc4ef246b2b43c0bb82b1611e74
3
+ metadata.gz: 2654aa482799d9e600f0105cbaa8299149114fcc
4
+ data.tar.gz: fa8c4860dd249db2cff7c3f836c1c56380b03440
5
5
  SHA512:
6
- metadata.gz: ab6cd331f1173b12fc12892b93f3b153f16c98dddebadc075f05a6cc82a4c017dc34e6069518631d25521aef20e76f02857e3199590c4470cabc4edd5fd58099
7
- data.tar.gz: 9714ef7ffc88015467a1b8c2c8942069a8428644b656ecfeda74a71fa7ac7eac1101e2d46d6214f4f983fe22209d75981a34ab411716b227f6f8c8f5fcaaf2e5
6
+ metadata.gz: 6396561ccfbc765e76db9caa6284a055faf7fbc71f990bac20e81c6a09c748d8dfbcca236eb9f980434fe47a2891fe700dc283f2fa0ee8625517492d285d9f8c
7
+ data.tar.gz: 6b4be3cfdcc58011311d26bf8ecd13e1ded731f1b5d26566af4d8d6a0d12b3f56b86cc3bb64e4386586153b9a2fb026263bee2e1a493a99c3e4d8296480e0f55
data/lib/freshen/cli.rb CHANGED
@@ -67,7 +67,53 @@ class Freshen
67
67
  \x5 $ freshen up rubygems
68
68
  EOF
69
69
  def up(*fresheners)
70
- Freshenary.freshen_up(*fresheners)
70
+ stats = {
71
+ successful: {
72
+ color: :green,
73
+ count: 0
74
+ },
75
+ skipped: {
76
+ color: :yellow,
77
+ count: 0
78
+ }
79
+ }
80
+
81
+ begin
82
+ duration = Time.duration_of do
83
+ printed_output = false
84
+ Freshenary.freshen_up(*fresheners) do |name, freshener, status|
85
+ case status
86
+ when Freshenary::Status::FRESHENING
87
+ print "\n" if printed_output
88
+ print String.prefix.green
89
+ puts " Freshening #{freshener.class.name}".bold
90
+ printed_output = true
91
+ when Freshenary::Status::CLEANING_UP
92
+ print "\n"
93
+ print String.prefix.green
94
+ puts " Cleaning Up #{freshener.class.name}".bold
95
+ when Freshenary::Status::FRESHENED
96
+ stats[:successful][:count] += 1
97
+ when Freshenary::Status::SKIPPED
98
+ print "\n"
99
+ print String.prefix.yellow
100
+ puts " Skipped #{freshener.class.name}".bold
101
+
102
+ stats[:skipped][:count] += 1
103
+ end
104
+ end
105
+ end
106
+
107
+ stats.delete_if { |key, value| 0 == value[:count] }
108
+
109
+ unless stats.empty?
110
+ stats = stats.map { |key, value| "#{value[:count]} #{key}".send(value[:color]) }
111
+ puts "\n#{stats.join(" / ")} (%.2f sec)" % duration
112
+ end
113
+ rescue Freshen::FreshenerNotInstalled, Freshen::ExecutableError => e
114
+ puts "#{String.ballot.red} #{e}"
115
+ exit! 1
116
+ end
71
117
  end
72
118
 
73
119
  default_task :up
@@ -7,6 +7,8 @@ class Freshen
7
7
  # system's kernel is unsupported.
8
8
  #
9
9
  class UnsupportedKernel < RuntimeError
10
+ attr_reader :kernel
11
+
10
12
  def initialize(kernel)
11
13
  @kernel = kernel
12
14
  end
@@ -21,6 +23,8 @@ class Freshen
21
23
  # been implemented.
22
24
  #
23
25
  class UpdateMethodNotImplementedError < NotImplementedError
26
+ attr_reader :name
27
+
24
28
  def initialize(freshener)
25
29
  @name = freshener.class.name.split('::').last
26
30
  end
@@ -34,6 +38,8 @@ class Freshen
34
38
  # is not installed.
35
39
  #
36
40
  class FreshenerNotInstalled < Exception
41
+ attr_reader :name
42
+
37
43
  def initialize(name)
38
44
  @name = name
39
45
  end
@@ -47,6 +53,8 @@ class Freshen
47
53
  # failed to load.
48
54
  #
49
55
  class FreshenerLoadError < LoadError
56
+ attr_reader :name
57
+
50
58
  def initialize(name)
51
59
  @name = name
52
60
  end
@@ -60,14 +68,17 @@ class Freshen
60
68
  # command fails.
61
69
  #
62
70
  class ExecutableError < RuntimeError
63
- def initialize(name, command, *args)
71
+ attr_reader :name, :duration, :command, :args
72
+
73
+ def initialize(name, duration, command, *args)
64
74
  @name = name
75
+ @duration = duration
65
76
  @command = command
66
77
  @args = args.map { |a| a.to_s }
67
78
  end
68
79
 
69
80
  def to_s
70
- "#{@name} Command Failed: '#{Executable.command_string(@command, *@args)}'"
81
+ "#{@name} failed command '#{Executable.command_string(@command, *@args)}' after #{@duration}"
71
82
  end
72
83
  end
73
84
  end
@@ -68,9 +68,7 @@ class Freshen
68
68
  end
69
69
  end
70
70
 
71
- if duration
72
- duration = (" %.2f sec" % duration)
73
- end
71
+ duration_string = (" %.2f sec" % duration) if duration
74
72
 
75
73
  $stdout.flush
76
74
 
@@ -80,11 +78,11 @@ class Freshen
80
78
 
81
79
  if freshening or cleaning
82
80
  if success
83
- puts "#{String.checkmark.green}#{duration.green}" if Freshen.cli?
81
+ puts "#{String.checkmark.green}#{duration_string.green}" if Freshen.cli?
84
82
  else
85
- puts "#{String.ballot.red}#{duration.red}" if Freshen.cli?
83
+ puts "#{String.ballot.red}#{duration_string.red}" if Freshen.cli?
86
84
 
87
- raise ExecutableError.new(self.class.name, command, *args)
85
+ raise ExecutableError.new(self.class.name, duration, command, *args)
88
86
  end
89
87
  end
90
88
 
@@ -1,7 +1,7 @@
1
1
  class Freshen
2
2
  # The current version of the gem.
3
3
  #
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.2'
5
5
 
6
6
  # The prefix of where data is stored.
7
7
  #
data/lib/freshen.rb CHANGED
@@ -16,6 +16,7 @@ class Freshen
16
16
  require 'freshen/system'
17
17
  require 'freshen/executable'
18
18
  require 'freshener'
19
+ require 'freshenary/status'
19
20
  require 'freshenary'
20
21
 
21
22
  return nil
@@ -0,0 +1,25 @@
1
+ unless Object.const_defined?('Freshen')
2
+ raise "You can't load this file. Please load the freshen file instead."
3
+ end
4
+
5
+ class Freshenary
6
+ # The statuses for the Freshenary class.
7
+ #
8
+ class Status
9
+ # This status indicates that a freshener is freshening.
10
+ #
11
+ FRESHENING = "FRESHENING"
12
+
13
+ # This status indicates that a freshener is cleaning up.
14
+ #
15
+ CLEANING_UP = "CLEANING_UP"
16
+
17
+ # This status indicates that a freshener has been freshened.
18
+ #
19
+ FRESHENED = "FRESHENED"
20
+
21
+ # This status indicates that a freshener has been skipped.
22
+ #
23
+ SKIPPED = "SKIPPED"
24
+ end
25
+ end
data/lib/freshenary.rb CHANGED
@@ -13,86 +13,47 @@ class Freshenary
13
13
  # >> Freshenary.freshen_up
14
14
  # => nil
15
15
  #
16
- def self.freshen_up(*fresheners)
16
+ def self.freshen_up(*fresheners, &block)
17
17
  if fresheners.empty?
18
18
  fresheners = Freshener.all
19
19
  else
20
- if Freshen.cli?
21
- begin
22
- Freshener.ensure_installed!(*fresheners)
23
- rescue Freshen::FreshenerNotInstalled => e
24
- puts "#{String.ballot.red} #{e}"
25
- exit! 1
26
- end
27
- end
20
+ Freshener.ensure_installed!(*fresheners)
28
21
 
29
22
  fresheners = Freshener.instances_of(*fresheners)
30
23
  end
31
24
 
32
- status = {
33
- successful: {
34
- color: :green,
35
- count: 0
36
- },
37
- skipped: {
38
- color: :yellow,
39
- count: 0
40
- },
41
- failed: {
42
- color: :red,
43
- count: 0
44
- }
45
- }
46
-
47
25
  duration = Time.duration_of do
48
26
  fresheners.each do |name, freshener|
49
27
  if freshener.needs_freshening?
50
- print "#{String.prefix.green} " if Freshen.cli?
51
- puts "Freshening #{freshener.class.name}".bold if Freshen.cli?
52
-
53
28
  cleaning = false
54
29
 
55
30
  begin
31
+ yield name, freshener, Freshenary::Status::FRESHENING if block_given?
32
+
56
33
  freshener.freshen
57
34
 
58
35
  if freshener.respond_to? :cleanup
59
- print "\n#{String.prefix.green} " if Freshen.cli?
60
- puts "Cleaning up #{freshener.class.name}".bold if Freshen.cli?
36
+ yield name, freshener, Freshenary::Status::CLEANING_UP if block_given?
61
37
 
62
38
  cleaning = true
63
39
 
64
40
  freshener.cleanup(true)
65
41
  end
66
42
 
67
- status[:successful][:count] += 1
43
+ yield name, freshener, Freshenary::Status::FRESHENED if block_given?
68
44
  rescue Freshen::ExecutableError => e
69
45
  if false == cleaning and freshener.respond_to? :cleanup
70
- print "\n#{String.prefix.red} " if Freshen.cli?
71
- puts "Cleaning up #{freshener.class.name}".bold if Freshen.cli?
46
+ yield name, freshener, Freshenary::Status::CLEANING_UP if block_given?
72
47
 
73
48
  freshener.cleanup(false)
74
49
  end
75
50
 
76
- raise e unless Freshen.cli?
77
-
78
- status[:failed][:count] += 1
51
+ raise e
79
52
  end
80
53
  else
81
- print "#{String.prefix.yellow} " if Freshen.cli?
82
- puts "#{freshener.class.name} is already fresh".bold if Freshen.cli?
83
-
84
- status[:skipped][:count] += 1
54
+ yield name, freshener, Freshenary::Status::SKIPPED if block_given?
85
55
  end
86
-
87
- puts ""
88
56
  end
89
57
  end
90
-
91
- if Freshen.cli?
92
- status.delete_if { |key, value| 0 == value[:count] }
93
- status = status.map { |key, value| "#{value[:count]} #{key}".send(value[:color]) }
94
-
95
- puts "#{status.join(" / ")} (%.2f sec)" % duration
96
- end
97
58
  end
98
59
  end
data/lib/freshener.rb CHANGED
@@ -12,7 +12,7 @@ class Freshener
12
12
  #
13
13
  # Example:
14
14
  # >> Freshener.all
15
- # => { "rubygems" => #<Rubygems:0x00000000000000> }
15
+ # => { "rubygems" => #<RubyGems:0x00000000000000> }
16
16
  #
17
17
  def self.all
18
18
  fresheners = Dir.glob(File.join(Freshen::FRESHENERS_DIR, "*.rb"))
@@ -24,8 +24,8 @@ class Freshener
24
24
  # specified freshehers.
25
25
  #
26
26
  # Example:
27
- # >> Freshener.instances_of :rubygems
28
- # => { "rubygems" => #<Rubygems:0x00000000000000> }
27
+ # >> Freshener.instances_of :ruby_gems
28
+ # => { "rubygems" => #<RubyGems:0x00000000000000> }
29
29
  #
30
30
  def self.instances_of(*fresheners)
31
31
  fresheners.sort_by! do |name|
@@ -45,8 +45,8 @@ class Freshener
45
45
  # name: (String)
46
46
  #
47
47
  # Example:
48
- # >> Freshener.instance_of :rubygems
49
- # => #<Rubygems:0x00000000000000>
48
+ # >> Freshener.instance_of :ruby_gems
49
+ # => #<RubyGems:0x00000000000000>
50
50
  #
51
51
  def self.instance_of(name)
52
52
  load_by_name(name)
@@ -62,8 +62,8 @@ class Freshener
62
62
  # name: (String)
63
63
  #
64
64
  # Example:
65
- # >> Freshener.class_for :rubygems
66
- # => "Rubygems"
65
+ # >> Freshener.class_for :ruby_gems
66
+ # => "RubyGems"
67
67
  #
68
68
  def self.class_for(name)
69
69
  klass = name.to_s.capitalize
@@ -78,7 +78,7 @@ class Freshener
78
78
  # name: (String)
79
79
  #
80
80
  # Example:
81
- # >> Freshener.load_by_name :rubygems
81
+ # >> Freshener.load_by_name :ruby_gems
82
82
  # => nil
83
83
  #
84
84
  # Raises:
@@ -91,6 +91,8 @@ class Freshener
91
91
  rescue LoadError
92
92
  raise Freshen::FreshenerLoadError.new(name)
93
93
  end
94
+
95
+ nil
94
96
  end
95
97
 
96
98
  # Check that the specified fresheners are installed.
@@ -99,7 +101,7 @@ class Freshener
99
101
  # fresheners: (Splat)
100
102
  #
101
103
  # Example:
102
- # >> Freshener.installed? :rubygems
104
+ # >> Freshener.installed? :ruby_gems
103
105
  # => true
104
106
  #
105
107
  def self.installed?(*fresheners)
@@ -113,7 +115,7 @@ class Freshener
113
115
  # Ensure that the specified fresheners are installed.
114
116
  #
115
117
  # Arguments:
116
- # >> Freshener.ensure_installed! :rubygems
118
+ # >> Freshener.ensure_installed! :ruby_gems
117
119
  # => nil
118
120
  #
119
121
  def self.ensure_installed!(*fresheners)
@@ -122,6 +124,8 @@ class Freshener
122
124
  raise Freshen::FreshenerNotInstalled.new(name)
123
125
  end
124
126
  end
127
+
128
+ nil
125
129
  end
126
130
 
127
131
  # Mark certain class methods as private
@@ -131,7 +135,7 @@ class Freshener
131
135
  # freshening up.
132
136
  #
133
137
  # Example:
134
- # >> rubygems = Rubygems.new
138
+ # >> rubygems = RubyGems.new
135
139
  # >> rubygems.needs_freshening?
136
140
  # => true
137
141
  #
@@ -142,7 +146,7 @@ class Freshener
142
146
  # Freshen up the freshener!
143
147
  #
144
148
  # Example:
145
- # >> rubygems = Rubygems.new
149
+ # >> rubygems = RubyGems.new
146
150
  # >> rubygems.freshen
147
151
  # => nil
148
152
  #
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freshen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nialto Services
@@ -53,6 +53,7 @@ files:
53
53
  - lib/freshen/system.rb
54
54
  - lib/freshen/variables.rb
55
55
  - lib/freshenary.rb
56
+ - lib/freshenary/status.rb
56
57
  - lib/freshener.rb
57
58
  homepage: http://rubygems.org/gems/freshen
58
59
  licenses: