freshen 0.0.1 → 0.0.2

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: 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: