Class: BrewCaskTools::Cask
- Inherits:
-
Thor::Shell::Basic
- Object
- Thor::Shell::Basic
- BrewCaskTools::Cask
- Defined in:
- lib/bct/cask.rb
Overview
Cask control class. Implements operations on a single cask.
Instance Attribute Summary collapse
-
#dir ⇒ Object
readonly
Returns the value of attribute dir.
-
#info ⇒ Object
readonly
Returns the value of attribute info.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #can_cleanup? ⇒ Boolean
- #cleanup {|_self, old_versions| ... } ⇒ Object
- #current_version ⇒ Object
- #deprecated? ⇒ Boolean
- #filter_info ⇒ Object
-
#initialize(name) ⇒ Cask
constructor
A new instance of Cask.
- #installed_version ⇒ Object
- #local_metadata_versions ⇒ Object
- #local_versions ⇒ Object
- #old(arr) ⇒ Object
- #old_metadata ⇒ Object
- #old_versions ⇒ Object
- #outdated? ⇒ Boolean
- #rm(dir) ⇒ Object
- #rm_metadata(version) ⇒ Object
- #rm_old(versions, method) ⇒ Object
- #rm_version(version) ⇒ Object
- #upgrade ⇒ Object
Constructor Details
#initialize(name) ⇒ Cask
Returns a new instance of Cask.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/bct/cask.rb', line 15 def initialize(name) super() @name = name if deprecated? info = [] @name = name.delete(' (!)') else info = `brew cask info #{name}`.split("\n") end @info = Info.new(info) @deprecated = deprecated? @dir = File.join(CASKROOM, @name) end |
Instance Attribute Details
#dir ⇒ Object (readonly)
Returns the value of attribute dir.
13 14 15 |
# File 'lib/bct/cask.rb', line 13 def dir @dir end |
#info ⇒ Object (readonly)
Returns the value of attribute info.
13 14 15 |
# File 'lib/bct/cask.rb', line 13 def info @info end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
13 14 15 |
# File 'lib/bct/cask.rb', line 13 def name @name end |
Instance Method Details
#can_cleanup? ⇒ Boolean
60 61 62 63 |
# File 'lib/bct/cask.rb', line 60 def can_cleanup? return true if @deprecated (local_versions.length > 1 || .length > 1) end |
#cleanup {|_self, old_versions| ... } ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/bct/cask.rb', line 96 def cleanup return unless can_cleanup? if @deprecated == true yield self, local_versions # Delete the whole cask rm(@dir) return end yield self, old_versions rm_old(old_versions, method(:rm_version)) rm_old(, method(:rm_metadata)) end |
#current_version ⇒ Object
36 37 38 |
# File 'lib/bct/cask.rb', line 36 def current_version @info.short_name.sub("#{@name}: ", '') end |
#deprecated? ⇒ Boolean
56 57 58 |
# File 'lib/bct/cask.rb', line 56 def deprecated? @deprecated ||= @name.include?('(!)') end |
#filter_info ⇒ Object
32 33 34 |
# File 'lib/bct/cask.rb', line 32 def filter_info @info.info.select! { |i| !i.end_with?('(does not exist)') } end |
#installed_version ⇒ Object
40 41 42 |
# File 'lib/bct/cask.rb', line 40 def installed_version local_versions.last end |
#local_metadata_versions ⇒ Object
50 51 52 53 54 |
# File 'lib/bct/cask.rb', line 50 def Dir.entries(File.join(@dir, '.metadata')) .reject { |i| DIR_BLACKLIST.include?(i) } .sort end |
#local_versions ⇒ Object
44 45 46 47 48 |
# File 'lib/bct/cask.rb', line 44 def local_versions Dir.entries(@dir) .reject { |i| DIR_BLACKLIST.include?(i) } .sort end |
#old(arr) ⇒ Object
91 92 93 94 |
# File 'lib/bct/cask.rb', line 91 def old(arr) _, *previous = arr.reverse previous end |
#old_metadata ⇒ Object
87 88 89 |
# File 'lib/bct/cask.rb', line 87 def old() end |
#old_versions ⇒ Object
83 84 85 |
# File 'lib/bct/cask.rb', line 83 def old_versions old(local_versions) end |
#outdated? ⇒ Boolean
65 66 67 |
# File 'lib/bct/cask.rb', line 65 def outdated? current_version != installed_version end |
#rm(dir) ⇒ Object
124 125 126 |
# File 'lib/bct/cask.rb', line 124 def rm(dir) ::FileUtils.rm_rf(dir, secure: true, verbose: true) end |
#rm_metadata(version) ⇒ Object
120 121 122 |
# File 'lib/bct/cask.rb', line 120 def (version) rm(File.join(@dir, '.metadata', version)) end |
#rm_old(versions, method) ⇒ Object
110 111 112 113 114 |
# File 'lib/bct/cask.rb', line 110 def rm_old(versions, method) versions.each do |version| method.call(version) end end |
#rm_version(version) ⇒ Object
116 117 118 |
# File 'lib/bct/cask.rb', line 116 def rm_version(version) rm(File.join(@dir, version)) end |
#upgrade ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/bct/cask.rb', line 69 def upgrade return say "You have the most recent version of #{@name}. " \ 'It cannot be upgraded', :green unless outdated? say "Installing #{@name} (#{current_version})", :cyan cmd = "brew cask install #{@name} --force" Open3.popen2e(cmd) do |_stdin, stdout_err, _wait_thr| while line = stdout_err.gets puts line end end say "Upgraded #{@name} to version #{current_version}", :green end |